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?
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?
Réponses:
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.
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.
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)
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?
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 ext4fuse
ou 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 sudo
si 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 umount
commande normale (avec sudo si elle est utilisée pour monter la partition):
umount ~/mount_point
cd ~
, mkdir mnt
, ext4fuse /dev/diskXsY mnt
, ls -la mnt
sans sudo / racine.
À 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 /home
partition à partir de Mac OS X en utilisant ce pilote Paragon, mais je ne suggère pas d’effectuer cette installation. Jusqu'à présent, ma /home
partition sous Linux est formatée hfsplus
sans 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.
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 vagrant
installé 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 Vagrantfile
fichier de configuration et un .vagrant
dossier.
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 ssh
et essayez de monter votre périphérique sous Linux.
Par défaut, votre dossier actuel sera synchronisé avec le /vagrant
dossier dans la VM. Pour des options plus avancées, vous pouvez modifier Vagrantfile
avec la configuration requise.
Donc, si vous montez votre système de fichiers dans un /vagrant
dossier, 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.
vagrant init ubuntu/xenial64; vagrant up --provider virtualbox
comme ubuntu/vivid64
n'est plus disponible.
ubuntu/trusty64
place.
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 .
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
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:
Une fois OSXFUSE et FUSE-EXT2 installés, vous pouvez monter les partitions ext2 / ext3 / ext4 comme indiqué dans les autres réponses:
Recherchez le nom de périphérique de la partition EXT que vous souhaitez monter (par exemple, disk0s2
dans 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
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 osxfuse
sans la couche de compatibilité MacFUSE .
Il y a deux osxfuse
paquets 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 osxfuse
version 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.
Pour économiser un peu plus de frappe, j'utilise un petit script qui prend le nom de la partition tel disk0s2
quel 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 list
exemple mount_ext4.sh disk2s3
.
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.