Comment monter un système de fichiers ext4 sur OS X?

131

Existe-t-il une application stable et sûre pour la lecture et l’écriture sur les systèmes de fichiers ext4 sous Mac OS X?

Sinon, quel est le meilleur moyen d'accéder au contenu d'un système de fichiers ext4 sous Mac OS X?

Evan Kroske
la source
Il serait plus qu'utile de spécifier quelle version d'OS X vous utilisez. Il existe des problèmes de compatibilité avec les solutions disponibles en fonction de la révision du système d'exploitation.
Kopischke

Réponses:

60

La réponse dépend de votre volonté d’investir dans des logiciels commerciaux:

Si vous ne craignez pas de dépenser de l'argent sur un produit commercial , extFS pour Mac de Paragon vous donnera un accès en lecture et en écriture aux systèmes de fichiers ext2 / ext3 / ext4. La version actuelle prend en charge toutes les versions de OS X / macOS à partir de 10.10.

Si vous recherchez une solution gratuite , vous pouvez configurer une machine virtuelle Linux, y monter votre / vos volume (s) et le / les partager via Samba ou (S) FTP. Cet article a quelques détails sur la façon de réaliser cela en utilisant VirtualBox , une application de machine virtuelle gratuite. Notez que ce n’est pas vraiment une solution légère, même si l’utilisation d’une machine virtuelle VirtualBox prédéfinie vous évitera d’installer et de configurer une distribution Linux à partir de zéro.

Kopischke
la source
2
Il existe sûrement une solution de nonvm gratuite?
Pacerier
osboxes.org fournit des versions plus récentes par rapport à virtualboxes.org.
Tim
36

S'appuyant sur la réponse de Ken: J'ai utilisé fuse4x et fuse-ext2 avec succès, et je recommande fuse-ext2 à l'ext4fuse.

ext4fuse était un problème pour moi, car il nécessite une compilation manuelle et ne prend pas en charge les options fuse4x qui me permettraient de définir le contrôle d'accès. Fuse-Ext2 fournit des packages téléchargeables, et la version 0.0.7 fonctionnait parfaitement. J'ai copié quelques grands ISO sur sans aucun problème.

pwnall
la source
peut fusionner-ext2 monter des choses en écriture ou seulement en lecture seule?
knocte
25

On peut aussi installer OSXFUSE complètement via le gestionnaire de paquets en ligne de commande brew :

brew install homebrew/fuse/ext4fuse

Notez que l'installation indique que certaines commandes doivent également être exécutées en tant que «sudo».


Avec Yosemite, jetez un œil à cela . Et puis assurez - vous que le répertoire est lisible par votre utilisateur en faisant cela . Pour que cela fonctionne, je devais utiliser le groupe de roues comme ceci:

sudo dscl . append /Groups/wheel GroupMembership $(whoami)
Akauppi
la source
18

Avec les récents changements apportés à homebrew, cela devrait être aussi simple que:

brew cask install osxfuse
brew install ext4fuse

Vous devrez peut-être redémarrer.

ext4fuse est en lecture seule, malheureusement. Et vous devrez peut-être utiliser un drapeau pour le faire fonctionner comme un utilisateur normal.

D'autres personnes consultant cette question peuvent être intéressées par libguestfs . Je ne connais pas de port OS X, mais étant donné que VirtualBox dispose d'une API, il n'est pas exclu.

Je me demande pourquoi personne n'a écrit une couche de compatibilité pour permettre au code du système de fichiers du noyau Linux de s'exécuter dans l'espace utilisateur / fuse. Ou a quelqu'un?

Ken Arnold
la source
10

Si vous vous demandez quelle est la ligne de commande pour monter une partition ext4 en utilisant fuse et ext2fuse (par exemple, si elle est installée avec MacPorts port install ext2fuse), vous devez d’abord déterminer l’emplacement de la partition Linux:

diskutil list

Cela listera toutes les partitions de tous les disques et parmi celles-ci, vous devriez voir celles qui sont listées dans la colonne TYPE comme Linux. Combinez le diskX et le numéro de partition Y comme ceci / dev / diskXsY - par exemple:

mount -t fuse-ext2 /dev/disk1s2 ~/my_mount_point

Il peut se plaindre de ne pas être en mesure d'écrire dans le fichier journal, mais il doit néanmoins monter la partition dans votre point de montage d'origine. Mais si vous voulez monter la partition dans un répertoire système, vous devez l'exécuter en tant que root, par exemple:

sudo mount -t fuse-ext2 /dev/disk1s2 /sys_mount_point

Si cela ne fonctionne pas, essayez:

sudo ext2fuse /dev/disk1s2 /sys_mount_point

Mise à jour : Plus récemment, nous avons constaté que fuse-ext2 avait des problèmes avec certaines nouvelles fonctionnalités d'ext4, il est donc préférable d'utiliser ext4fuse ( port install ext4fuseou brew install ext4fuse). Utilisez directement la commande ext4fuse:

ext4fuse /dev/disk1s2 ~/mount_point

En outre, comme l'a mentionné Timothy dans les commentaires, vous ne devez normalement l'utiliser que sudosi vous montez en dehors de votre répertoire personnel ou si le disque (/ dev / diskX) n'est accessible que par root:

sudo ext4fuse /dev/disk1s2 /sys_mount_point

Il est à noter que vous ne pouvez accéder à ce système de fichiers monté qu’en tant que root / sudo. par exemple

sudo ls /sys_mount_point

Et pour démonter le système de fichiers, il vous suffit d'utiliser la umountcommande normale (avec sudo si elle est utilisée pour monter la partition):

umount ~/mount_point
Pierz
la source
Vous devez uniquement accéder au lecteur en tant que root si vous le montez en dehors de votre répertoire personnel. Vous pouvez cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mntsans sudo / racine.
Timothy Zorn
mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2 pour ...: Aucun fichier ou répertoire de ce type
Wolfgang Fahl
9

À titre d'information, j'ai testé le pilote Paragon ExtFS (version d'évaluation) sur mon MacBook Pro pour écrire sur la partition ext4 sous Linux. J'ai trouvé que le pilote était très instable et il a créé des corruptions sur le système de fichiers qu'il fsckétait impossible de réparer ni dans Linux ni dans l'Utilitaire de disque.

Mon idée était d’avoir accès à ma /homepartition à partir de Mac OS X en utilisant ce pilote Paragon, mais je ne suggère pas d’effectuer cette installation. Jusqu'à présent, ma /homepartition sous Linux est formatée hfsplussans journalisation, puis je peux accéder à mes fichiers à partir de Mac OS X. Bien sûr, de temps en temps, des problèmes surviennent dans mon système de fichiers, mais ils ne sont pas très fréquents. Cependant, je ne suggère pas cette configuration non plus (au moins que vous ayez une sauvegarde à jour pour votre travail quotidien).

Enfin, je pense que Paragon est peut-être plus approprié à utiliser pour les disques durs externes mais de toute façon, il n’est pas très fiable pour les logiciels dont la licence est chère.

Mise à jour: depuis mai 2015, j'ai formaté mon / home sur ext4 et je monte le système de fichiers à l'aide de fuse-ext2 en combinaison avec FUSE pour OS X. Je peux accéder à la partition ext4 pour lire et écrire. C'est une configuration plus solide que celle que j'ai décrite précédemment.

Mouammar
la source
Je peux confirmer la dernière entrée ici où le pilote Paragon ExtFS peut causer de gros problèmes sur vos disques Linux. Pour moi, qui redémarre OSX et Linux, paragon a créé des corruptions sur mon / device. C'était facile à résoudre, mais ce n'est pas une solution stable ...
Autre mauvaise expérience avec le pilote Paragon ExtFS. Panique constante du noyau conduisant au redémarrage du système, corruption du système de fichiers (heureusement que fsck sous Linux fonctionnait). Essayé sur deux disques externes différents avec les mêmes résultats.
9

Vous pouvez démarrer Linux VM rapidement sur votre OS X en utilisant Vagrant . Vous avez besoin d'installer le fournisseur VM tels que VirtualBox et Vagrant soit via un fichier .dmg à partir du site ou en utilisant fût de bière .

Une fois que vous avez vagrantinstallé la commande, exécutez-la dans n’importe quel dossier sélectionné:

vagrant init ubuntu/trusty64; vagrant up --provider virtualbox

Cela générera un Vagrantfilefichier de configuration et un .vagrantdossier.

et vous aurez Linux Box démarré en quelques minutes (téléchargé à partir du référentiel Atlas Hashicorp ).

Puis connectez-vous à la boîte via commande: vagrant sshet essayez de monter votre périphérique sous Linux.

Par défaut, votre dossier actuel sera synchronisé avec le /vagrantdossier dans la VM. Pour des options plus avancées, vous pouvez modifier Vagrantfileavec la configuration requise.

Donc, si vous montez votre système de fichiers dans un /vagrantdossier, il sera automatiquement synchronisé avec votre macOS.


Sinon, vous devez simplement installer une VirtualBox , exécuter l’application graphique, installer et démarrer une version minimale de Linux, par exemple Ubuntu, afin d’obtenir les mêmes résultats que ceux décrits ci-dessus.


Les solutions non natives ci-dessus ne sont pas idéales, mais au moins votre macOS serait plus stable plutôt que d'installer des extensions de noyau instables qui pourraient causer de nombreuses pannes du système.

Kenorb
la source
Ran avec vagrant init ubuntu/xenial64; vagrant up --provider virtualboxcomme ubuntu/vivid64n'est plus disponible.
Fredrik Erlandsson
Essayez d'utiliser à la ubuntu/trusty64place.
Kenorb
8

J'avais un lecteur USB au format ext4 que j'ai pu monter après avoir installé osxfuse . La lecture de ce livre fonctionne très bien, mais je ne suis pas sûr que l’écriture soit sûre.

En outre, pour déplacer des fichiers du système de fichiers OS X ( HFS + ) vers ext4, vous souhaiterez peut-être tout d'abord supprimer les fichiers .DS_Store masqués que le système de fichiers OS X intègre, car ils génèrent parfois de mauvais inodes .

find /my/data/to/move -name '*.DS_Store' -type f -delete

C'est mieux que de devoir les réparer après avec une commande fsck .

Yuvilio
la source
7

Réponse mise à jour pour (High) Sierra

Pour Sierra et High Sierra, ext4fuse semble ne fonctionner que pour un accès en lecture seule et pourrait donc probablement être considéré comme l'option préférée. Tandis que d'autres réponses donnent déjà des exemples d'utilisation, je vais le répéter avec quelques détails importants:

Installez ext4fuse avec:

brew install ext4fuse

Vous pouvez monter en tant qu'utilisateur normal, mais dans ce cas, vous ne pourrez accéder qu'aux fichiers lisibles par tout le monde. C'est pourquoi, pour un accès complet, vous devez utiliser sudo, par exemple:

sudo ext4fuse -o allow_other /dev/disk2s1

Voici un script bash qui automatise partiellement le processus. Une fois lancé, il créera automatiquement le point de montage après vous être invité à entrer l'un des identificateurs de périphérique affichés, tels que disk2s1:

diskutil list
read -p "Please type the EXT4 device identifier: " disk_id
MOUNT_POINT=~/mnt/$disk_id
mkdir -p ${MOUNT_POINT}
sudo ext4fuse -o allow_other /dev/$disk_id ${MOUNT_POINT}
echo "***TO UNMOUNT USE***: 'diskutil umount ${MOUNT_POINT}'"
open ${MOUNT_POINT}

Pour démonter, vous pouvez par exemple utiliser diskutil umount /dev/disk2s1- si vous recevez un message indiquant que le démontage a échoué, vous pouvez forcer le démontage avec diskutil umount force /dev/disk2s1, bien que ce serait plus propre de fermer les applications qui utilisent des fichiers sur le disque et de réessayer de démonter sans force.

Si vous possédez des fichiers appartenant à _lpoperator(apparemment, ils sont créés lorsque vous utilisez l'option rsync with preserve group), alors la commande suivante vous permettra d'accéder à ces fichiers:

/usr/sbin/dseditgroup -o edit -a everyone -t group _lpoperator

Réponse originale pour Yosemite et les anciens (obsolète)

Deux packages sont nécessaires pour activer la prise en charge de EXT2 / 3/4 sur OSX: OSXFUSE et FUSE-EXT2 .

Les formules homebrew pour OSXFUSE et FUSE-EXT2 ne fonctionnaient pas pour moi, ni sur mavericks ni sur yosemite.

Quel a été le travail était le suivant:

  1. Téléchargez et installez manuellement OSXFUSE DMG à partir de http://osxfuse.github.io/ . IMPORTANT : une fois que vous avez lancé le programme d’installation de PKG, assurez-vous d’avoir sélectionné la couche de compatibilité MacFUSE dans l’assistant (elle n’est pas activée par défaut). Sans cela, j’obtenais une erreur en essayant de monter.
  2. Téléchargez manuellement FUSE-EXT2 à partir de http://sourceforge.net/projects/fuse-ext2/ ou pour Sierra / El Capitan à partir de https://github.com/gpz500/fuse-ext2/releases et exécutez le programme d'installation de PKG.

Une fois OSXFUSE et FUSE-EXT2 installés, vous pouvez monter les partitions ext2 / ext3 / ext4 comme indiqué dans les autres réponses:

  1. Recherchez le nom de périphérique de la partition EXT que vous souhaitez monter (par exemple, disk0s2dans l'exemple ci-dessous, (UPDATE) dans les versions ultérieures de MacOS, les partitions ext3 / ext4 pourraient être appelées Microsoft Basic Data et non Linux ):

    # diskutil list | grep Linux 1: Linux_Swap 8.2 GB disk0s1 2: Linux 119.9 GB disk0s2

  2. Montez la partition sur un point de montage existant:

    sudo mkdir -p /Volumes/ext4 sudo mount -t fuse-ext2 /dev/disk0s2 /Volumes/ext4

Monter en tant qu'utilisateur régulier ne fonctionnait pas pour moi. Cela peut probablement être corrigé en manipulant des autorisations, mais je n'ai pas examiné la question.

Remarque: je soupçonne que les formules homebrew ne fonctionnaient pas car elles s’installaient osxfusesans la couche de compatibilité MacFUSE .

Il y a deux osxfusepaquets dans homebrew:

# brew search osxfuse
>>> osxfuse
>>> Caskroom/cask/osxfuse

Les deux versions ne parviennent pas à monter des partitions EXT. Très probablement, la version DMG ( Caskroom/cask/osxfuse) échoue car homebrew installe le package avec les paramètres par défaut, ce qui signifie que la couche de compatibilité MacFUSE n'est pas incluse. La osxfuseversion principale a probablement besoin d’un paramètre d’installation spécial pour activer la compatibilité MacFUSE. Par conséquent, jusqu’à ce que ce problème soit résolu dans l’homebrew, la méthode manuelle DMG doit être utilisée.

Cette méthode a fonctionné pour moi sur les francs-tireurs, le yosemite, l’elcapitan et la sierra.

Script de montage EXT2 / 3/4 pour les anciennes versions OSX (obsolète)

Pour économiser un peu plus de frappe, j'utilise un petit script qui prend le nom de la partition tel disk0s2quel et le monte sous /Volumes/disk0s2, créant le dossier si nécessaire:

### mount_ext4.sh
sudo mkdir -p "/Volumes/$1"
sudo mount -t fuse-ext2 "/dev/$1" "/Volumes/$1"
open "/Volumes/$1"

Le script est appelé avec le nom de la partition que vous recherchez, par diskutil listexemple mount_ext4.sh disk2s3.

ccpizza
la source
1
J'ai essayé mais j'ai malheureusement l'erreur FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:(mais il n'y a pas de description du problème ni de référence). J'ai installé l'addon Compability Layer. Je suis sur macOS Sierra alors j'ai essayé la version Github gzp500.
Winterflags
6

E2fsprogs est également disponible dans MacPorts. Je ne l'ai pas encore testé moi-même, mais cela semble prometteur.

Crysaz
la source