Czy istnieje bezpieczna, stabilna aplikacja do odczytu i zapisu w systemach plików ext4 na Macu   OS   X?

Jeśli nie, jaki jest najlepszy sposób uzyskania dostępu do zawartości system plików ext4 na Macu   OS   X?

Komentarze

  • Byłoby bardziej niż pomocne, gdybyś określił używaną wersję OS X. Istnieją problemy ze zgodnością z rozwiązaniami dostępnymi w zależności od wersji systemu operacyjnego.

Odpowiedź

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

Jeśli nie masz nic przeciwko wydaniu pieniędzy na produkt komercyjny , extFS for Mac daje dostęp do odczytu i zapisu w systemach plików ext2 / ext3 / ext 4. Obsługa bieżącej wersji s wszystkie wersje OS X / macOS od 10.10 wzwyż.

Jeśli szukasz darmowego rozwiązania , możesz skonfigurować maszynę wirtualną Linux, zamontować tam swoje woluminy i udostępniać je przez Samba lub (S) FTP. Ten post zawiera szczegółowe informacje o tym, jak to osiągnąć za pomocą VirtualBox , bezpłatnej aplikacji maszyny wirtualnej . Zwróć uwagę, że nie jest to do końca lekkie rozwiązanie, nawet jeśli użycie wstępnie zbudowanej maszyny wirtualnej VirtualBox pozwoli zaoszczędzić Ci instalowania i konfigurowania dystrybucji Linuksa od podstaw.

Komentarze

  • Na pewno ' jest darmowe rozwiązanie nonvm?
  • osboxes.org zapewnia nowsze wersje w porównaniu z virtualboxes.org.

Odpowiedź

Opierając się na odpowiedzi Kena: pomyślnie użyłem fuse4x i fuse-ext2 i Polecam fuse-ext2 zamiast ext4fuse. Fuse-ext2 zapewnia dostęp do zapisu, podczas gdy ext4fuse zapewnia tylko dostęp do odczytu. Zauważ, że pomimo swojej nazwy, fuse-ext2 obsługuje EXT2 / EXT3 / EXT4.

ext4fuse był dla mnie kłopotliwy , ponieważ wymaga ręcznej kompilacji i nie ma wsparcia dla opcji fuse4x, które pozwoliłyby mi ustawić kontrolę dostępu.fuse-ext2 dostarcza pakiety do pobrania, a wersja 0.0.7 działała tylko fi ne. Skopiowałem kilka dużych plików ISO bez żadnego problemu.

Komentarze

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

Odpowiedź

OSXFUSE można również całkowicie zainstalować za pośrednictwem brew menedżer pakietów z wiersza poleceń:

brew install homebrew/fuse/ext4fuse 

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


Z Yosemite lepiej przyjrzyj się temu . Następnie upewnij się, że katalog jest czytelny dla użytkownika, wykonując to . Aby to zadziałało, musiałem użyć grupy kół w ten sposób:

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

Odpowiedź

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.

ext4fuse jest niestety tylko do odczytu. Być może będziesz musiał użyć flagi , aby działał jako zwykły użytkownik.

Inne osoby przeglądające to pytanie mogą być zainteresowane libguestfs . Nie znam portu OS X, ale biorąc pod uwagę, że VirtualBox ma API, nie jest to wykluczone.

Zastanawiam się, dlaczego nikt nie napisał warstwy kompatybilności, która zezwala na system plików jądra Linuksa kod do uruchomienia w przestrzeni użytkownika / fuse. Czy ma kogoś?

Odpowiedź

Zaktualizowana odpowiedź dla (High) Sierra

Dla Sierra i High Sierra ext4fuse wydaje się działać dobrze w przypadku dostępu tylko do odczytu i dlatego prawdopodobnie można by to 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 za pomocą:

 brew install ext4fuse  

Możesz montować jako zwykły użytkownik, ale w takim przypadku „będziesz mógł tylko dostęp do plików czytelnych dla wszystkich użytkowników, dlatego aby uzyskać pełny dostęp, 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 wyświetleniu 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 o odmontowywaniu nie powiodło się, możesz wymusić odmontowanie za pomocą diskutil umount force /dev/disk2s1, chociaż zamknięcie aplikacji używających plików na dysku i ponowna próba odmontowania bez force.

Jeśli zdarzy się, że masz pliki, których właścicielem jest _lpoperator (najwyraźniej są one tworzone, gdy używasz rsync z opcją zachowania grupy), to następujące polecenie umożliwi dostęp do tych plików:

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

Oryginalna odpowiedź dla Yosemite i starszych * ( przestarzałe)

Pakiety T * wo są potrzebne do włączenia obsługi EXT2 / 3/4 w systemie OSX: OSXFUSE i FUSE-EXT2 .

homebrew formuły OSXFUSE i FUSE-EXT2 nie działały dla mnie na Mavericks lub Yosemite.

Co zadziałało, to:

  1. Ręczne pobieranie i instalowanie OSXFUSE DMG z http://osxfuse.github.io/ . WAŻNE : po uruchomieniu instalatora PKG upewnij się, że w kreatorze wybrałeś warstwę zgodności MacFUSE (domyślnie nie jest włączone) – bez niego otrzymywałem błąd podczas próby montażu.
  2. Ręcznie pobierz FUSE-EXT2 z http://sourceforge.net/projects/fuse-ext2/ lub Sierra / El Capitan z https://github.com/gpz500/fuse-ext2/releases i uruchom Instalator PKG.

Po zainstalowaniu OSXFUSE 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. disk0s2 w poniższym przykładzie, (UPDATE) w późniejszych wersjach systemu MacOS partycje ext3 / ext4 mogą być oznaczone jako Podstawowe dane firmy Microsoft , a nie Linux ):

     1: Linux_Swap 8.2 GB disk0s1 2: Linux 119.9 GB disk0s2  
  2. Zamontuj partycję do pliku istniejący punkt montowania:

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

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

Uwaga: podejrzewam, że formuły homebrew nie działały, ponieważ homebrew instaluje osxfuse bez warstwy zgodności MacFUSE .

W homebrew są dwa pakiety osxfuse:

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

Obie wersje nie potrafią zamontować partycji EXT. Najprawdopodobniej wersja DMG (Caskroom/cask/osxfuse) kończy się niepowodzeniem, ponieważ homebrew instaluje pakiet z ustawieniami domyślnymi, co oznacza, że warstwa zgodności MacFUSE nie jest dołączona. Główna wersja osxfuse prawdopodobnie wymaga jakiś specjalny parametr instalacyjny, aby włączyć kompatybilność z MacFUSE, więc dopóki nie zostanie to naprawione w homebrew, powinna być używana ręczna metoda DMG.

Ta metoda działała na mavericks, yosemite, el capitan i sierra.

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

Aby zaoszczędzić trochę czasu na wpisywaniu, używam niewielkiego skryptu, który pobiera nazwę partycji, na przykład disk0s2 i montuje ją pod /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, która wyszukujesz przez diskutil list, np mount_ext4.sh disk2s3.

Komentarze

  • Próbowałem, ale niestety otrzymałem 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. ' m na macOS Sierra, więc wypróbowałem wersję Github gzp500.

Odpowiedź

Jeśli” zastanawiasz się, jaka jest linia poleceń, aby zamontować partycję ext4 za pomocą fuse i ext2fuse (np. w przypadku instalacji przy użyciu MacPorts port install ext2fuse) – najpierw musisz pracować gdzie jest partycja Linuksa:

diskutil list 

Spowoduje to wyświetlenie wszystkich partycji dla wszystkich dysków, a wśród nich powinieneś zobaczyć odpowiednie partycje wymienione w kolumnie TYPE jako Linux Połącz diskX i numer partycji Y w ten sposób / dev / diskXsY – e.g:

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

Może narzekać, że nie może zapisywać 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 znaleziono że fuse-ext2 ma problemy z niektórymi nowszymi funkcjami ext4, więc zamiast tego lepiej jest użyć ext4fuse (port install ext4fuse lub brew install ext4fuse). Użyj bezpośrednio polecenia ext4fuse:

ext4fuse /dev/disk1s2 ~/mount_point 

Jak wspomniał Timothy w komentarzach, zazwyczaj wystarczy użyć sudo jeśli montujesz ponownie poza katalogiem domowym lub dysk (/ dev / diskX) jest dostępny tylko dla roota:

sudo ext4fuse /dev/disk1s2 /sys_mount_point 

Należy zauważyć, że masz dostęp do tego zamontowanego systemu plików tylko jako root / sudo. np.

sudo ls /sys_mount_point 

Aby odmontować system plików, po prostu używasz normalnego umount polecenie (z sudo, jeśli jest używane do montowania partycji):

umount ~/mount_point 

Komentarze

  • Ty potrzebujesz tylko dostępu do dysku jako root, jeśli zamontujesz go poza katalogiem domowym. Możesz cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mnt bez sudo / root.
  • mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/ mount_fuse-ext2 for …: Nie ma takiego pliku lub katalogu

Odpowiedź

Tak dla przypomnienia, przetestowałem sterownik Paragon ExtFS (wersja próbna) na moim MacBooku Pro pod kątem zapisu na partycji ext4 w systemie Linux. Okazało się, że sterownik był bardzo niestabilny i powodował uszkodzenia systemu plików, których fsck nie był w stanie naprawić ani w Linuksie, ani w Narzędziu dyskowym.

Mój Pomysł polegał na uzyskaniu dostępu do mojej partycji /home z Mac OS X przy użyciu tego sterownika Paragon, ale nie sugeruję wykonywania tej konfiguracji. Jak dotąd mam /home w systemie Linux sformatowana jako hfsplus bez dzienników, a następnie mogę uzyskać dostęp do swoich plików z systemu Mac OS X. Oczywiście od czasu do czasu otrzymuję niektóre problemy z moim FS, ale nie są zbyt częste. Jednak nie sugeruję też takiej konfiguracji (przynajmniej, żebyś miał aktualną kopię zapasową do swojej codziennej pracy).

Wreszcie uważam, że Paragon może być bardziej odpowiedni do użycia z zewnętrznymi dyskami twardymi, ale w każdym razie nie jest zbyt wiarygodny jako oprogramowanie, którego licencja jest droga.

Aktualizacja: Od maja 2015 r. Sformatowałem mój / home na ext4, i montuję system plików za pomocą fuse-ext2 w połączeniu z FUSE dla OS X. Mam dostęp do partycji ext4 w celu odczytu i zapisu. Jest to solidniejsza konfiguracja niż ta, którą opisałem powyżej.

Komentarze

  • Mogę potwierdzić tutaj ostatni wpis, w którym sterownik Paragon ExtFS może spowodować poważne problemy na dyskach z Linuksem. Dla mnie, który korzystam z podwójnego rozruchu OSX i Linuksa, paragon stworzył uszkodzenia na moim / urządzeniu. Było to łatwe do rozwiązania, ale nie jest to stabilne rozwiązanie …
  • Dalsze złe doświadczenia ze sterownikiem Paragon ExtFS. Konsekwentne paniki jądra prowadzące do ponownego uruchomienia systemu, uszkodzenia systemu plików (na szczęście fsck na Linux-ie zadziałał). Wypróbowano na dwóch różnych dyskach zewnętrznych z tymi samymi wynikami.

Odpowiedź

Możesz uruchomić Linux VM na OS X przy użyciu Vagrant . Musisz zainstalować dostawcę maszyny wirtualnej, takiego jak VirtualBox i Vagrant , albo za pośrednictwem pliku .dmg z site lub używając beczki do parzenia .

Po zainstalowaniu polecenia vagrant uruchom go w dowolny wybrany folder:

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

Spowoduje to wygenerowanie pliku konfiguracyjnego Vagrantfile i .vagrant.

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

Następnie połącz się z urządzeniem za pomocą polecenia: vagrant ssh i spróbuj zamontować urządzenie w systemie Linux.

Domyślnie Twój bieżący folder zostaną zsynchronizowane z folderem /vagrant w maszynie wirtualnej. Aby uzyskać bardziej zaawansowane opcje, możesz zmodyfikować z wymaganą konfiguracją.

Więc jeśli zamontujesz system plików w folderze /vagrant, zostanie on automatycznie zsynchronizowany z Twój macOS.


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


Powyższe rozwiązania nienatywne nie są idealne, ale przynajmniej Twoje macOS byłby bardziej stabilny niż instalowanie niestabilnych rozszerzeń jądra, co może powodować wiele awarii systemu.

Komentarze

  • Uruchomiono z vagrant init ubuntu/xenial64; vagrant up --provider virtualbox as ubuntu/vivid64 nie jest już dostępne.
  • Spróbuj zamiast tego użyć ubuntu/trusty64.

Odpowiedź

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

Również do przenoszenia plików z systemu plików OS X ( HFS + ) do ext4, możesz najpierw chcieć usunąć te ukryte pliki .DS_Store , że system plików OS X wkrada się, ponieważ czasami powodują złe i-węzły .

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

To lepsze niż naprawianie ich później za pomocą fsck .

Odpowiedź

W MacPorts są również dostępne e2fsprogs. Nie sam to przetestowałem, ale wygląda obiecująco.

Odpowiedź

Spójrz na – > https://github.com/alperakcan/fuse-ext2

Oto, czego spróbuję dalej.

Dla ext2 dostępna jest wersja dla macports: https://ports.macports.org/port/ext2fuse/summary

Jest moduł ext4 dla osxfuse (który można w stall via macports), ale jest tylko do odczytu!

Mnogość wersji jest nieco zagmatwana, ale w pewnym momencie udało mi się to uruchomić, spróbuję ponownie i zaktualizuję tę odpowiedź, jeśli tak . 🙂

osxfuse jest dostępny na macports oraz jako samodzielny pakiet. Nie wiem, który z nich działa najlepiej jeszcze w nowszych wersjach OS X, ale wolę macport dla mojego bezpłatnego oprogramowania na OS X.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *