Gibt es eine sichere und stabile Anwendung zum Lesen und Schreiben von ext4- Dateisystemen unter Mac OS X?
Wenn nicht, wie kann man unter Mac OS X am besten auf die Inhalte eines ext4-Dateisystems zugreifen?
Gibt es eine sichere und stabile Anwendung zum Lesen und Schreiben von ext4- Dateisystemen unter Mac OS X?
Wenn nicht, wie kann man unter Mac OS X am besten auf die Inhalte eines ext4-Dateisystems zugreifen?
Antworten:
Die Antwort hängt von Ihrer Bereitschaft ab, in kommerzielle Software zu investieren:
Wenn es Ihnen nichts ausmacht , etwas Geld auf ein kommerzielles Produkt zu verbringen , Paragons ExtFS für Mac gibt Ihnen Zugriff auf ext2 / ext3 / ext4 - Dateisysteme lesen und schreiben. Die aktuelle Version unterstützt alle Versionen von OS X / macOS ab 10.10.
Wenn Sie nach einer kostenlosen Lösung suchen , können Sie eine virtuelle Linux-Maschine einrichten, Ihre Volumes dort mounten und über Samba oder (S) FTP freigeben. Dieser Beitrag enthält einige Details dazu, wie dies mit VirtualBox , einer kostenlosen Anwendung für virtuelle Maschinen, erreicht werden kann. Beachten Sie, dass dies keine einfache Lösung ist, auch wenn Sie mit einer vorgefertigten VirtualBox-VM keine Linux-Distribution von Grund auf installieren und konfigurieren müssen.
Aufbauend auf Kens Antwort: Ich habe fuse4x und fuse-ext2 erfolgreich verwendet und empfehle fuse-ext2 gegenüber ext4fuse.
ext4fuse war ein Ärger für mich, da es manuell kompiliert werden muss und keine Unterstützung für fuse4x-Optionen bietet, mit denen ich die Zugriffskontrolle festlegen kann. fuse-ext2 bietet herunterladbare Pakete, und die Version 0.0.7 hat einwandfrei funktioniert. Ich habe problemlos ein paar große ISOs kopiert.
Man kann auch OSXFUSE vollständig über die Installation von Gebräu Befehlszeile Paket - Manager:
brew install homebrew/fuse/ext4fuse
Beachten Sie, dass die Installation angibt, dass bestimmte Befehle zusätzlich als 'sudo' ausgeführt werden müssen.
Mit Yosemite haben besser einen Blick auf diese . Stellen Sie dann sicher, dass das Verzeichnis von Ihrem Benutzer gelesen werden kann . Damit es funktioniert, musste ich die Radgruppe wie folgt verwenden:
sudo dscl . append /Groups/wheel GroupMembership $(whoami)
Mit den letzten Änderungen an Homebrew sollte dies so einfach sein wie:
brew cask install osxfuse
brew install ext4fuse
Möglicherweise müssen Sie neu starten.
ext4fuse ist leider schreibgeschützt. Möglicherweise müssen Sie ein Flag verwenden , damit es als normaler Benutzer funktioniert.
Andere Benutzer, die diese Frage anschauen, sind möglicherweise an libguestfs interessiert . Ich kenne keinen OS X-Port, aber wenn man bedenkt, dass VirtualBox eine API hat, kommt das nicht in Frage.
Ich frage mich, warum niemand eine Kompatibilitätsebene geschrieben hat, damit Linux-Kernel-Dateisystemcode im Userspace / Fuse ausgeführt werden kann. Oder hat jemand?
Wenn Sie sich fragen, wie die Befehlszeile lautet, um eine ext4-Partition mit fuse und ext2fuse zu mounten (z. B. bei der Installation mit MacPorts port install ext2fuse
), müssen Sie zunächst herausfinden, wo sich die Linux-Partition befindet:
diskutil list
Daraufhin werden alle Partitionen für alle Festplatten aufgelistet. Darunter sollten die relevanten Partitionen in der Spalte TYPE als Linux aufgeführt sein. Kombinieren Sie diskX und Partitionsnummer Y wie folgt: / dev / diskXsY - zB:
mount -t fuse-ext2 /dev/disk1s2 ~/my_mount_point
Möglicherweise wird beanstandet, dass das Schreiben in die Protokolldatei nicht möglich ist, die Partition sollte jedoch weiterhin in Ihrem Home-Mount-Punkt bereitgestellt werden. Wenn Sie die Partition jedoch in ein Systemverzeichnis einbinden möchten, müssen Sie sie als root ausführen, z. B .:
sudo mount -t fuse-ext2 /dev/disk1s2 /sys_mount_point
Wenn das nicht funktioniert, versuchen Sie:
sudo ext2fuse /dev/disk1s2 /sys_mount_point
Update : Vor kurzem habe ich festgestellt, dass fuse-ext2 Probleme mit bestimmten neueren ext4-Funktionen hat. Daher ist es besser, ext4fuse ( port install ext4fuse
oder brew install ext4fuse
) zu verwenden. Verwenden Sie den Befehl ext4fuse direkt:
ext4fuse /dev/disk1s2 ~/mount_point
Wie auch von Timothy in den Kommentaren erwähnt, müssen Sie diese normalerweise nur verwenden, sudo
wenn Sie außerhalb Ihres Home-Verzeichnisses mounten oder auf die Festplatte (/ dev / diskX) nur über root zugegriffen werden kann:
sudo ext4fuse /dev/disk1s2 /sys_mount_point
Es ist zu beachten, dass Sie nur als root / sudo auf das gemountete Dateisystem zugreifen können. z.B
sudo ls /sys_mount_point
Und um das Dateisystem zu entladen, verwenden Sie einfach den normalen umount
Befehl (mit sudo, wenn die Partition gemountet wird):
umount ~/mount_point
cd ~
, mkdir mnt
, ext4fuse /dev/diskXsY mnt
, ls -la mnt
ohne sudo / root.
Ich habe den Paragon ExtFS-Treiber (Testversion) auf meinem MacBook Pro getestet, um auf die ext4-Partition unter Linux zu schreiben. Ich stellte fest, dass der Treiber sehr instabil war und dass das Dateisystem fsck
beschädigt wurde, was weder unter Linux noch im Festplatten-Dienstprogramm repariert werden konnte.
Ich wollte /home
mit diesem Paragon-Treiber von Mac OS X aus auf meine Partition zugreifen, empfehle dieses Setup jedoch nicht. Bisher habe ich meine /home
Linux-Partition hfsplus
ohne Journaling formatiert und kann dann von Mac OS X aus auf meine Dateien zugreifen. Natürlich habe ich von Zeit zu Zeit einige Probleme mit meinem FS, aber das ist nicht sehr häufig. Ich empfehle dieses Setup jedoch auch nicht (zumindest haben Sie ein aktuelles Backup für Ihre tägliche Arbeit).
Schließlich glaube ich, dass Paragon vielleicht besser für externe Festplatten geeignet ist, aber es ist sowieso nicht sehr zuverlässig, um Software zu sein, deren Lizenz teuer ist.
Update: Ab Mai 2015 habe ich mein / home für ext4 formatiert und das Dateisystem mithilfe von fuse-ext2 in Kombination mit FUSE für OS X gemountet. Zum Lesen und Schreiben kann ich auf die ext4-Partition zugreifen. Das Setup ist solider als das zuvor beschriebene.
Mit Vagrant können Sie Linux VM schnell unter OS X starten . Sie müssen VM-Anbieter wie VirtualBox und Vagrant entweder über eine .dmg-Datei von der Site oder mithilfe von Brew Cask installieren .
Nachdem Sie den vagrant
Befehl installiert haben, führen Sie diesen in einem beliebigen ausgewählten Ordner aus:
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
Dadurch werden Vagrantfile
Konfigurationsdatei und .vagrant
-ordner generiert .
und Sie haben Linux-Box innerhalb weniger Minuten gebootet (heruntergeladen vom Atlas Hashicorp- Repository).
Dann schließen Sie an die Box über den Befehl: vagrant ssh
und versuchen Sie Ihr Gerät zu montieren innerhalb Linux.
Standardmäßig wird Ihr aktueller Ordner mit dem /vagrant
Ordner in der VM synchronisiert . Für erweiterte Optionen können Sie Änderungen Vagrantfile
an der erforderlichen Konfiguration vornehmen.
Wenn Sie also Ihr Dateisystem in einem /vagrant
Ordner bereitstellen, wird es automatisch wieder mit Ihrem MacOS synchronisiert.
Alternativ müssen Sie nur eine VirtualBox installieren , die GUI-App ausführen, eine Minimalversion von Linux, z. B. Ubuntu , installieren und booten , um dasselbe wie oben beschrieben zu erreichen.
Die obigen nicht-nativen Lösungen sind nicht ideal, aber zumindest wäre Ihr macOS stabiler, anstatt instabile Kernel-Erweiterungen zu installieren, die viele Systemabstürze verursachen können.
vagrant init ubuntu/xenial64; vagrant up --provider virtualbox
as ubuntu/vivid64
ist nicht mehr verfügbar.
ubuntu/trusty64
stattdessen.
Ich hatte ein ext4-formatiertes USB-Laufwerk, das ich nach der Installation von osxfuse einbinden konnte . Das Lesen funktioniert prima, aber ich bin mir nicht sicher, ob das Schreiben sicher ist.
Wenn Sie Dateien vom OS X-Dateisystem ( HFS + ) nach ext4 verschieben möchten, möchten Sie möglicherweise zuerst die versteckten .DS_Store-Dateien entfernen, in die sich das OS X-Dateisystem eingeschlichen hat, da sie gelegentlich fehlerhafte Inodes verursachen .
find /my/data/to/move -name '*.DS_Store' -type f -delete
Es ist besser, als sie nachträglich mit einem Befehl fsck reparieren zu müssen .
Für Sierra und High Sierra scheint ext4fuse nur für den Lesezugriff geeignet zu sein und kann daher wahrscheinlich als bevorzugte Option angesehen werden. Während andere Antworten bereits einige Anwendungsbeispiele geben, wiederhole ich dies noch einmal mit einigen wichtigen Details:
Installieren Sie ext4fuse mit:
brew install ext4fuse
Sie können als normaler Benutzer mounten, aber in diesem Fall können Sie nur auf von der Welt lesbare Dateien zugreifen. Deshalb müssen Sie für den vollständigen Zugriff beispielsweise Folgendes verwenden sudo
:
sudo ext4fuse -o allow_other /dev/disk2s1
Hier ist ein Bash-Skript, das den Prozess teilweise automatisiert. Beim Start wird der Mount - Punkt automatisch erstellen , nachdem Sie werden aufgefordert, eine der angezeigten Gerätekennungen einzugeben wie 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}
Zum Aufheben des Ladevorgangs können Sie beispielsweise Folgendes verwenden: diskutil umount /dev/disk2s1
- Wenn Sie die Meldung erhalten, dass das Aufheben des Ladevorgangs fehlgeschlagen ist, können Sie das Aufheben des Ladevorgangs erzwingen. diskutil umount force /dev/disk2s1
Es wäre jedoch sauberer, die Apps zu schließen, die Dateien auf der Festplatte verwenden, und das Aufheben des Ladevorgangs erneut zu versuchen force
.
Wenn Sie zufällig Dateien im Besitz von haben _lpoperator
(anscheinend werden sie erstellt, wenn Sie rsync mit der Option "Gruppe beibehalten" verwenden), können Sie mit dem folgenden Befehl auf diese Dateien zugreifen:
/usr/sbin/dseditgroup -o edit -a everyone -t group _lpoperator
Zwei Pakete sind erforderlich, um die EXT2 / 3/4-Unterstützung unter OSX zu aktivieren : OSXFUSE und FUSE-EXT2 .
Die Homebrew- Formeln für OSXFUSE und FUSE-EXT2 funktionierten weder für Einzelgänger noch für Yosemite.
Was hat funktioniert, war das Folgende:
Sobald Sie sowohl OSXFUSE als auch FUSE-EXT2 installiert haben, können Sie die Partitionen ext2 / ext3 / ext4 wie in den anderen Antworten beschrieben mounten:
Suchen Sie den Gerätenamen für die EXT-Partition, die Sie bereitstellen möchten (z. B. disk0s2
im folgenden Beispiel (UPDATE) in späteren MacOS-Versionen. Ext3 / ext4-Partitionen werden möglicherweise als Microsoft Basic Data und nicht als Linux bezeichnet ):
# diskutil list | grep Linux
1: Linux_Swap 8.2 GB disk0s1
2: Linux 119.9 GB disk0s2
Hängen Sie die Partition an einen vorhandenen Einhängepunkt ein:
sudo mkdir -p /Volumes/ext4
sudo mount -t fuse-ext2 /dev/disk0s2 /Volumes/ext4
Das Mounten als normaler Benutzer hat bei mir nicht funktioniert. Wahrscheinlich kann dies durch Herumspielen von Berechtigungen behoben werden, aber ich habe mich nicht darum gekümmert.
Hinweis: Mein Verdacht ist, dass die Homebrew-Formeln nicht funktionierten, weil Homebrew osxfuse
ohne MacFUSE Compatibility Layer installiert wurde .
Es gibt zwei osxfuse
Pakete in Homebrew:
# brew search osxfuse
>>> osxfuse
>>> Caskroom/cask/osxfuse
Beide Versionen können EXT-Partitionen nicht mounten. Die DMG-Version ( Caskroom/cask/osxfuse
) schlägt höchstwahrscheinlich fehl, da Homebrew das Paket mit den Standardeinstellungen installiert. Dies bedeutet, dass MacFUSE Compatibility Layer nicht enthalten ist. Die Hauptversion osxfuse
benötigt wahrscheinlich einige spezielle Installationsparameter, um die MacFUSE-Kompatibilität zu ermöglichen. Bis dies in Homebrew behoben ist, sollte die manuelle DMG-Methode verwendet werden.
Diese Methode hat bei mir bei Außenseitern, Yosemite, Elcapitan und Sierra funktioniert.
Um zusätzliche Eingaben zu sparen, verwende ich ein winziges Skript, das den Partitionsnamen wie disk0s2
folgt aufnimmt und unter /Volumes/disk0s2
dem es gemountet wird. Bei Bedarf wird der Ordner erstellt:
### mount_ext4.sh
sudo mkdir -p "/Volumes/$1"
sudo mount -t fuse-ext2 "/dev/$1" "/Volumes/$1"
open "/Volumes/$1"
Das Skript wird mit dem Partitionsnamen aufgerufen, über den Sie nachschlagen diskutil list
, z mount_ext4.sh disk2s3
.
FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:
(aber es gibt keine Problembeschreibung oder Referenz). Ich habe das Compability Layer Addon installiert. Ich bin auf MacOS Sierra, also habe ich die Github gzp500-Version ausprobiert.