Jak zamontować system plików ext4 w systemie OS X?


131

Czy w systemie Mac OS X jest bezpieczna, stabilna aplikacja do odczytu i zapisu w systemach plików ext4 ?

Jeśli nie, jaki jest najlepszy sposób na uzyskanie dostępu do zawartości systemu plików ext4 w systemie Mac OS X?


Byłoby bardziej niż pomocne, gdybyś określił, którą wersję OS X używasz. Występują problemy ze zgodnością dostępnych rozwiązań w zależności od wersji systemu operacyjnego.
kopischke

Odpowiedzi:


60

Odpowiedź zależy od chęci inwestowania w oprogramowanie komercyjne:

Jeśli nie masz nic przeciwko wydaniu pieniędzy na produkt komercyjny , extFS firmy Paragon dla komputerów Mac zapewni ci dostęp do odczytu i zapisu w systemach plików ext2 / ext3 / ext4. Obecna wersja obsługuje wszystkie wersje OS X / macOS od 10.10 wzwyż.

Jeśli szukasz darmowego rozwiązania , możesz skonfigurować maszynę wirtualną z systemem Linux, zamontować tam swoje woluminy i udostępnić je za pośrednictwem Samby lub FTP (S). W tym poście podano szczegółowe informacje na temat tego, jak to osiągnąć za pomocą VirtualBox , bezpłatnej aplikacji do obsługi maszyn wirtualnych. Zauważ, że nie jest to do końca lekkie rozwiązanie, nawet jeśli korzystanie z gotowej maszyny wirtualnej VirtualBox oszczędza ci instalowania i konfigurowania dystrybucji Linux od zera.


2
Z pewnością istnieje bezpłatne rozwiązanie nonvm?
Pacerier

osboxes.org zapewnia nowsze wersje vs virtualboxes.org.
Tim

36

Opierając się na odpowiedzi Kena: z powodzeniem użyłem fuse4x i fuse-ext2 i zalecam fuse-ext2 zamiast ext4fuse.

ext4fuse było dla mnie kłopotem, ponieważ wymaga ręcznej kompilacji i nie obsługuje opcji fuse4x, które pozwoliłyby mi ustawić kontrolę dostępu. fuse-ext2 zapewnia pakiety do pobrania, a wersja 0.0.7 działała dobrze. Skopiowałem kilka dużych ISO bez problemu.


czy fuse-ext2 może montować rzeczy jako zapisywalne lub tylko do odczytu?
knocte

25

Można również zainstalować OSXFUSE całkowicie poprzez parzenie kierownika wiersz poleceń pakietu:

brew install homebrew/fuse/ext4fuse

Zauważ, że instalacja informuje, że niektóre polecenia muszą być uruchamiane jako „sudo”.


Z Yosemite lepiej spojrzeć na to . A następnie upewnij się, że katalog jest czytelny przez użytkownika przez robi to . Aby zadziałało, musiałem użyć grupy kół w następujący sposób:

sudo dscl . append /Groups/wheel GroupMembership $(whoami)

18

W przypadku ostatnich zmian w homebrew powinno to być tak proste, jak:

brew cask install osxfuse
brew install ext4fuse

Może być konieczne ponowne uruchomienie komputera.

ext4fuse jest niestety tylko do odczytu. I może być konieczne użycie flagi , aby działała jak zwykły użytkownik.

Inni oglądający to pytanie mogą być zainteresowani libguestfs . Nie znam portu OS X, ale biorąc pod uwagę, że VirtualBox ma interfejs API, nie jest wykluczone.

Zastanawiam się, dlaczego nikt nie napisał warstwy zgodności, która pozwala na uruchamianie kodu systemu plików jądra Linux w przestrzeni użytkownika / bezpieczniku. A może ktoś?


10

Jeśli zastanawiasz się, co to wiersz poleceń, aby zamontować partycję ext4 za pomocą fuse i ext2fuse (np. W przypadku instalacji za pomocą MacPorts port install ext2fuse) - najpierw musisz ustalić, gdzie jest partycja Linux:

diskutil list

Spowoduje to wyświetlenie listy wszystkich partycji dla wszystkich dysków, a wśród nich powinieneś zobaczyć odpowiednie wymienione na liście w kolumnie TYPE jako Linux. Połącz diskX i numer partycji Y tak jak to / dev / diskXsY - np .:

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

Może narzekać, że nie może zapisać do pliku dziennika, ale nadal powinien zamontować partycję w twoim domowym punkcie montowania. Ale jeśli chcesz zamontować partycję w katalogu systemowym, musisz uruchomić ją jako root, np .:

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

Jeśli to nie działa spróbuj:

sudo ext2fuse /dev/disk1s2 /sys_mount_point

Aktualizacja : Niedawno odkryłem, że fuse-ext2 ma problemy z niektórymi nowszymi funkcjami ext4, więc zamiast tego lepiej jest użyć ext4fuse ( port install ext4fuselub brew install ext4fuse). Użyj bezpośrednio polecenia ext4fuse:

ext4fuse /dev/disk1s2 ~/mount_point

Również, jak wspomniał Timothy w komentarzach, zwykle potrzebujesz tylko, sudojeśli montujesz poza katalogiem domowym lub dysk (/ dev / diskX) jest dostępny tylko przez root:

sudo ext4fuse /dev/disk1s2 /sys_mount_point

Należy zauważyć, że dostęp do zamontowanego systemu plików można uzyskać tylko jako root / sudo. na przykład

sudo ls /sys_mount_point

Aby odmontować system plików, wystarczy użyć zwykłego umountpolecenia (z sudo, jeśli jest używany do zamontowania partycji):

umount ~/mount_point

Aby uzyskać dostęp do dysku jako root, wystarczy zamontować go poza katalogiem domowym. Można cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mntbez sudo / root.
Timothy Zorn

mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2 for ...: Brak takiego pliku lub katalogu
Wolfgang Fahl

9

Dla przypomnienia przetestowałem sterownik Paragon ExtFS (wersja próbna) na moim MacBooku Pro do zapisu na partycji ext4 w systemie Linux. Odkryłem, że sterownik był bardzo niestabilny i spowodował uszkodzenie systemu plików, fsckktórego nie można naprawić ani w systemie Linux, ani w Narzędziu dyskowym.

Moim pomysłem było mieć dostęp do mojej /homepartycji z Mac OS X za pomocą tego sterownika Paragon, ale nie sugeruję, aby wykonać tę konfigurację. Do tej pory mam /homepartycję w Linuksie sformatowaną hfsplusbez dzienników, a następnie mogę uzyskać dostęp do moich plików z Mac OS X. Oczywiście od czasu do czasu mam problemy z FS, ale nie jest to zbyt częste. Jednak nie sugeruję tego ustawienia (przynajmniej, że masz aktualną kopię zapasową do codziennej pracy).

Wreszcie uważam, że Paragon jest bardziej odpowiedni do użytku na zewnętrznych dyskach twardych, ale w każdym razie nie jest zbyt niezawodny, jeśli chodzi o oprogramowanie, którego licencja jest droga.

Aktualizacja: Od maja 2015 roku sformatowałem mój / home do ext4 i podłączam system plików za pomocą fuse-ext2 w połączeniu z FUSE dla OS X. Mogę uzyskać dostęp do partycji ext4 w celu odczytu i zapisu. Jest to bardziej solidna konfiguracja niż ta, którą wcześniej opisałem powyżej.


Mogę potwierdzić ostatni wpis tutaj, w którym sterownik Extagon Paragon może powodować poważne problemy na dyskach linuksowych. Dla mnie, który jest podwójnym uruchomieniem OSX i Linuksa, Paragon spowodował uszkodzenia na moim / urządzeniu. To było łatwe do rozwiązania, ale nie jest to stabilne rozwiązanie ...

Dalsze złe doświadczenia ze sterownikiem Extagon Paragon. Konsekwentna panika jądra prowadząca do restartu systemu, uszkodzenie systemu plików (na szczęście działało fsck na Linux-ie). Wypróbowałem na dwóch różnych dyskach zewnętrznych z tymi samymi wynikami.

9

Możesz szybko uruchomić Linux VM na OS X za pomocą Vagrant . Musisz zainstalować dostawcę VM, takiego jak VirtualBox i Vagrant, albo poprzez plik .dmg z witryny, albo za pomocą zaparzacza .

Po vagrantzainstalowaniu polecenia uruchom to w dowolnym wybranym folderze:

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

Spowoduje to wygenerowanie Vagrantfilepliku konfiguracyjnego i .vagrantfolderu.

w ciągu kilku minut uruchomisz system Linux (pobrany z repozytorium Atlas Hashicorp ).

Następnie podłącz do skrzynki za pomocą polecenia: vagrant sshi spróbuj zamontować urządzenie w systemie Linux.

Domyślnie bieżący folder zostanie zsynchronizowany z /vagrantfolderem na maszynie wirtualnej. Aby uzyskać bardziej zaawansowane opcje, możesz zmodyfikować Vagrantfilewymaganą konfigurację.

Więc jeśli podłączysz swój system plików w /vagrantfolderze, zostanie on automatycznie zsynchronizowany z powrotem z systemem macOS.


Alternatywnie wystarczy zainstalować VirtualBox , uruchomić aplikację GUI, zainstalować i uruchomić minimalną wersję systemu Linux, np. Ubuntu , aby osiągnąć to samo, co wyjaśniono powyżej.


Powyższe nienatywne rozwiązanie nie jest idealne, ale przynajmniej twój macOS byłby bardziej stabilny niż instalowanie niestabilnych rozszerzeń jądra, które mogą powodować wiele awarii systemu.


Uruchomiony z, vagrant init ubuntu/xenial64; vagrant up --provider virtualboxponieważ ubuntu/vivid64nie jest już dostępny.
Fredrik Erlandsson

Spróbuj użyć ubuntu/trusty64zamiast tego.
kenorb

8

Miałem dysk USB sformatowany w systemie ext4, który mogłem zamontować po zainstalowaniu osxfuse . Czytanie z niego działa świetnie, ale nie jestem pewien, czy pisanie jest bezpieczne.

Ponadto, w celu przeniesienia plików z systemu plików OS X ( HFS + ) na ext4, możesz najpierw chcieć usunąć te ukryte pliki .DS_Store, w które wkrada się system plików OS X, ponieważ czasami powodują złe i- węzły .

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

Jest to lepsze niż konieczność ich naprawy za pomocą polecenia fsck .


7

Zaktualizowana odpowiedź dla (wysokiej) Sierra

Wydaje się, że ext4fuse dla Sierra i High Sierra działa dobrze tylko w przypadku dostępu do odczytu i dlatego można go prawdopodobnie uznać za preferowaną opcję. Podczas gdy inne odpowiedzi już zawierają przykłady użycia, powtórzę to jeszcze raz z kilkoma ważnymi szczegółami:

Zainstaluj ext4fuse z:

brew install ext4fuse

Możesz zamontować jako zwykły użytkownik, ale w takim przypadku będziesz mieć dostęp tylko do plików czytelnych dla całego świata, dlatego do pełnego dostępu musisz użyć sudo, np .:

sudo ext4fuse -o allow_other /dev/disk2s1

Oto skrypt bash, który częściowo automatyzuje proces. Po uruchomieniu automatycznie utworzy punkt montowania po pojawieniu się monitu o wprowadzenie jednego z wyświetlanych identyfikatorów urządzenia, takich jak 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}

Aby odmontować, możesz użyć np. diskutil umount /dev/disk2s1- jeśli pojawi się komunikat, że odmontowanie się nie powiodło, możesz wymusić odmontowanie diskutil umount force /dev/disk2s1, chociaż byłoby lepiej zamknąć aplikacje korzystające z plików na dysku i ponowić próbę odmontowania bez force.

Jeśli akurat posiadasz pliki _lpoperator(najwyraźniej są one tworzone, gdy używasz rsync z opcją zachowania grupy), następujące polecenie pozwoli ci uzyskać dostęp do tych plików:

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

Oryginalna odpowiedź dla Yosemite i starszych (przestarzała)

Aby włączyć obsługę EXT2 / 3/4 w OSX, potrzebne są dwa pakiety: OSXFUSE i FUSE-EXT2 .

W homebrew formuły OSXFUSE i bezpiecznik-EXT2 nie działa dla mnie po obu Mavericks lub Yosemite.

To, co zadziałało, było następujące:

  1. Pobierz i zainstaluj OSXFUSE DMG ręcznie ze strony http://osxfuse.github.io/ . WAŻNE : Po uruchomieniu instalatora PKG, upewnij się, że wybrałeś warstwę kreatora MacFUSE Compatibility Layer w kreatorze (domyślnie nie jest włączona) - bez niego podczas próby montowania pojawiał się błąd.
  2. Ręcznie pobierz FUSE-EXT2 ze strony http://sourceforge.net/projects/fuse-ext2/ lub dla Sierra / El Capitan ze strony https://github.com/gpz500/fuse-ext2/releases i uruchom instalator PKG.

Po zainstalowaniu zarówno OSXFUSE, jak i FUSE-EXT2 możesz zamontować partycje ext2 / ext3 / ext4, jak wspomniano w innych odpowiedziach:

  1. Znajdź nazwę urządzenia dla partycji EXT, którą chcesz zamontować (np. disk0s2W poniższym przykładzie (UPDATE) w późniejszych wersjach MacOS partycje ext3 / ext4 mogą być oznaczone jako Microsoft Basic Data, a nie Linux ):

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

  2. Zamontuj partycję do istniejącego punktu montowania:

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

Montowanie jako zwykły użytkownik nie działało dla mnie. Prawdopodobnie można to naprawić, bawiąc się uprawnieniami, ale nie zajrzałem do tego.

Uwaga: Podejrzewam, że formuły homebrew nie działały, ponieważ homebrew instaluje się osxfusebez warstwy zgodności MacFUSE .

Istnieją dwa osxfusepakiety w Homebrew:

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

Obie wersje nie mogą zamontować partycji EXT. Najprawdopodobniej wersja DMG ( Caskroom/cask/osxfuse) zawiedzie, ponieważ homebrew instaluje pakiet z ustawieniami domyślnymi, co oznacza, że nie uwzględniono warstwy zgodności MacFUSE . Główna osxfusewersja prawdopodobnie potrzebuje specjalnego parametru instalacyjnego, aby włączyć kompatybilność z MacFUSE, więc dopóki nie zostanie to naprawione w homebrew, należy użyć ręcznej metody DMG.

Ta metoda działała na mnie w przypadku indywidualistów, yosemite, elcapitan i sierra.

Skrypt montowania EXT2 / 3/4 dla starszych wersji OSX (przestarzałe)

Aby zaoszczędzić trochę pisania, używam małego skryptu, który pobiera nazwę partycji, taką jak disk0s2i montuje pod nią /Volumes/disk0s2, tworząc folder, jeśli to konieczne:

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

Skrypt jest wywoływany z nazwą partycji, za pomocą której przeglądasz diskutil list, np mount_ext4.sh disk2s3.


1
Próbowałem tego, ale niestety otrzymaliśmy błąd FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:(ale nie ma opisu problemu ani odniesienia). Zainstalowałem dodatek Compability Layer. Korzystam z systemu macOS Sierra, więc wypróbowałem wersję Github gzp500.
Winterflags

6

Istnieją również e2fsprogs dostępne w MacPorts. Nie testowałem tego jeszcze sam, ale wygląda obiecująco.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.