Wie kann ich ein ext4-Dateisystem unter OS X mounten?

131

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?

Evan Kroske
quelle
Es wäre mehr als hilfreich, wenn Sie angeben würden, welche Version von OS X Sie ausführen. Abhängig von der Version des Betriebssystems gibt es Kompatibilitätsprobleme mit den verfügbaren Lösungen.
kopischke

Antworten:

60

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.

kopischke
quelle
2
Sicherlich gibt es eine kostenlose NonVM-Lösung?
Pacerier
osboxes.org bietet neuere Versionen als virtualboxes.org.
Tim
36

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.

pwnall
quelle
kann fuse-ext2 dinge als schreibgeschützt oder nur als schreibgeschützt einbinden?
Knocte
25

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)
akauppi
quelle
18

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?

Ken Arnold
quelle
10

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 ext4fuseoder 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, sudowenn 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 umountBefehl (mit sudo, wenn die Partition gemountet wird):

umount ~/mount_point
Pierz
quelle
Sie müssen nur als root auf das Laufwerk zugreifen, wenn Sie es außerhalb Ihres Home-Verzeichnisses mounten. Sie können cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mntohne sudo / root.
Timothy Zorn
mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2 for ...: Keine solche Datei oder Verzeichnis
Wolfgang Fahl
9

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 fsckbeschädigt wurde, was weder unter Linux noch im Festplatten-Dienstprogramm repariert werden konnte.

Ich wollte /homemit diesem Paragon-Treiber von Mac OS X aus auf meine Partition zugreifen, empfehle dieses Setup jedoch nicht. Bisher habe ich meine /homeLinux-Partition hfsplusohne 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.

muammar
quelle
Ich kann hier den letzten Eintrag bestätigen, bei dem der Paragon ExtFS-Treiber auf Ihren Linux-Laufwerken zu Problemen führen kann. Für mich, der OSX und Linux dual bootet, hat paragon auf meinem Gerät / Fehler verursacht. Dies war leicht zu lösen, aber das ist keine stabile Lösung ...
Weitere schlechte Erfahrungen mit dem Paragon ExtFS-Treiber. Konsistente Kernel-Panics, die zum Neustart des Systems und zur Beschädigung des Dateisystems führten (zum Glück funktionierte fsck auf der Linux-Box). Versuchte auf zwei verschiedenen externen Laufwerken mit den gleichen Ergebnissen.
9

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 vagrantBefehl installiert haben, führen Sie diesen in einem beliebigen ausgewählten Ordner aus:

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

Dadurch werden VagrantfileKonfigurationsdatei 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 sshund versuchen Sie Ihr Gerät zu montieren innerhalb Linux.

Standardmäßig wird Ihr aktueller Ordner mit dem /vagrantOrdner in der VM synchronisiert . Für erweiterte Optionen können Sie Änderungen Vagrantfilean der erforderlichen Konfiguration vornehmen.

Wenn Sie also Ihr Dateisystem in einem /vagrantOrdner 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.

Kenorb
quelle
Ran mit vagrant init ubuntu/xenial64; vagrant up --provider virtualboxas ubuntu/vivid64ist nicht mehr verfügbar.
Fredrik Erlandsson
Verwenden Sie ubuntu/trusty64stattdessen.
Kenorb
8

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 .

yuvilio
quelle
7

Aktualisierte Antwort für (High) Sierra

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/disk2s1Es 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

Originalantwort für Yosemite und älter (veraltet)

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:

  1. Laden Sie das OSXFUSE DMG manuell von http://osxfuse.github.io/ herunter und installieren Sie es . WICHTIG : Wenn Sie das PKG-Installationsprogramm gestartet haben, vergewissern Sie sich, dass Sie im Assistenten die Option MacFUSE Compatibility Layer ausgewählt haben (diese Option ist standardmäßig nicht aktiviert) - ohne dass beim Bereitstellen ein Fehler aufgetreten ist.
  2. Laden Sie FUSE-EXT2 manuell von http://sourceforge.net/projects/fuse-ext2/ oder für Sierra / El Capitan von https://github.com/gpz500/fuse-ext2/releases herunter und führen Sie das PKG-Installationsprogramm aus.

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:

  1. Suchen Sie den Gerätenamen für die EXT-Partition, die Sie bereitstellen möchten (z. B. disk0s2im 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

  2. 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 osxfuseohne MacFUSE Compatibility Layer installiert wurde .

Es gibt zwei osxfusePakete 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 osxfusebenö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.

EXT2 / 3/4-Mount-Skript für ältere OSX-Versionen (veraltet)

Um zusätzliche Eingaben zu sparen, verwende ich ein winziges Skript, das den Partitionsnamen wie disk0s2folgt aufnimmt und unter /Volumes/disk0s2dem 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.

ccpizza
quelle
1
Versucht dies aber leider den Fehler zu bekommen 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.
Winterflags
6

Es gibt auch e2fsprogs in MacPorts. Ich habe es selbst noch nicht getestet, sieht aber vielversprechend aus.

Crysaz
quelle