Esiste unapplicazione stabile e sicura per leggere e scrivere su file system ext4 su Mac   OS   X?

In caso contrario, qual è il modo migliore per accedere ai contenuti di un file system ext4 su Mac   OS   X?

Commenti

  • Sarebbe più che utile se specificassi la versione di OS X in esecuzione. Ci sono problemi di compatibilità con le soluzioni disponibili a seconda della revisione del sistema operativo.

Risposta

La risposta dipende dalla tua volontà di investire in software commerciale:

Se non ti dispiace spendere un po di soldi per un prodotto commerciale , extFS per Mac ti darà accesso in lettura e scrittura ai file system ext2 / ext3 / ext4 La versione corrente supporta s tutte le versioni di OS X / macOS dalla 10.10 in poi.

Se stai cercando una soluzione gratuita , puoi configurare una macchina virtuale Linux, montare i tuoi volumi lì e condividerli tramite Samba o (S) FTP. Questo post contiene alcuni dettagli su come ottenere questo risultato utilizzando VirtualBox , unapplicazione gratuita per macchine virtuali . Nota che questa non è esattamente una soluzione leggera, anche se lutilizzo di una VM VirtualBox precostruita ti risparmierà linstallazione e la configurazione di una distribuzione Linux da zero.

Commenti

  • Sicuramente ‘ una soluzione non VM gratuita?
  • osboxes.org fornisce versioni più recenti rispetto a virtualboxes.org.

Answer

Basandosi sulla risposta di Ken: ho utilizzato fuse4x e fuse-ext2 correttamente e Raccomando fuse-ext2 su ext4fuse. Fuse-ext2 fornisce laccesso in scrittura mentre ext4fuse fornisce solo laccesso in lettura. Nota che nonostante il suo nome, fuse-ext2 supporta EXT2 / EXT3 / EXT4.

ext4fuse era una seccatura per me , perché richiede la compilazione manuale e non ha supporto per le opzioni fuse4x che mi permetterebbero di impostare il controllo degli accessi. fuse-ext2 fornisce pacchetti scaricabili e la versione 0.0.7 ha funzionato solo fi ne. Ho copiato alcune ISO di grandi dimensioni senza alcun problema.

Commenti

  • può fuse-ext2 montare cose come scrivibili o solo in sola lettura?

Risposta

Si può anche installare OSXFUSE completamente tramite brew gestore di pacchetti da riga di comando:

brew install homebrew/fuse/ext4fuse 

Nota che linstallazione dice che alcuni comandi devono essere eseguiti come “sudo” oltre a questo.


Con Yosemite è meglio dare unocchiata a questo . Quindi assicurati che la directory sia leggibile dallutente eseguendo questo . Perché funzionasse, ho dovuto utilizzare il gruppo ruota in questo modo:

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

Answer

Con le recenti modifiche allhomebrew, dovrebbe essere semplice come:

brew cask install osxfuse brew install ext4fuse 

Potrebbe essere necessario riavviare.

ext4fuse è di sola lettura, purtroppo. E potresti dover utilizzare un flag per farlo funzionare come un normale utente.

Altri che visualizzano questa domanda potrebbero essere interessati a libguestfs . Non sono a conoscenza di una porta OS X, ma considerando che VirtualBox ha unAPI, non è fuori questione.

Mi chiedo perché nessuno abbia scritto un livello di compatibilità per consentire il filesystem del kernel Linux codice da eseguire nello spazio utente / fuse. Oppure qualcuno ha?

Risposta

Risposta aggiornata per (High) Sierra

Per Sierra e High Sierra ext4fuse sembra funzionare bene per solo accesso in lettura e quindi potrebbe probabilmente essere considerata lopzione preferita. Mentre altre risposte forniscono già alcuni esempi di utilizzo, lo ripeterò ancora una volta con alcuni dettagli importanti:

Installa ext4fuse con:

 brew install ext4fuse  

Puoi eseguire il montaggio come un utente normale, ma in questo caso potrai solo accedere a file leggibili in tutto il mondo, ecco perché per un accesso completo è necessario utilizzare sudo, ad esempio:

 sudo ext4fuse -o allow_other /dev/disk2s1  

Ecco uno script bash che automatizza parzialmente il processo.Quando viene avviato, creerà automaticamente il punto di montaggio dopo che ti verrà chiesto di inserire uno degli identificatori di dispositivo visualizzati come 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}  

Per smontare puoi utilizzare ad esempio diskutil umount /dev/disk2s1 – se ricevi un messaggio che viene smontato fallito, puoi forzare lo smontaggio con diskutil umount force /dev/disk2s1, anche se sarebbe più corretto chiudere le app che utilizzano i file sul disco e riprovare a smontarlo senza force.

Se ti capita di avere file di proprietà di _lpoperator (apparentemente vengono creati quando usi rsync con lopzione conserva gruppo), allora il seguente comando consentirà laccesso a quei file:

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

Risposta originale per Yosemite e precedenti * ( deprecato)

T * wo pacchetti sono necessari per abilitare il supporto EXT2 / 3/4 su OSX: OSXFUSE e FUSE-EXT2 .

Il le formule homebrew per OSXFUSE e FUSE-EXT2 non funzionavano per me su mavericks o yosemite.

Ciò che ha funzionato era il seguente:

  1. Download e installazione manuale di OSXFUSE DMG da http://osxfuse.github.io/ . IMPORTANTE : una volta avviato il programma di installazione PKG, assicurati di aver selezionato MacFUSE Compatibility Layer nella procedura guidata (non è abilitato per impostazione predefinita) – senza di esso ricevevo un errore durante il tentativo di montaggio.
  2. Scarica manualmente FUSE-EXT2 da http://sourceforge.net/projects/fuse-ext2/ o per Sierra / El Capitan da https://github.com/gpz500/fuse-ext2/releases ed esegui il Installer PKG.

Dopo aver installato OSXFUSE e FUSE-EXT2, puoi montare le partizioni ext2 / ext3 / ext4 come indicato in altre risposte:

  1. Trova il nome del dispositivo per la partizione EXT che desideri montare (ad esempio disk0s2 nellesempio sotto, (UPDATE) nelle versioni successive di MacOS le partizioni ext3 / ext4 potrebbero essere etichettate Microsoft Basic Data e non Linux ):

     1: Linux_Swap 8.2 GB disk0s1 2: Linux 119.9 GB disk0s2  
  2. Monta la partizione su un file punto di montaggio esistente:

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

Montaggio come un utente normale non ha funzionato per me. Probabilmente questo può essere risolto giocherellando con le autorizzazioni, ma non ci ho esaminato.

Nota: il mio sospetto è che le formule homebrew non funzionassero perché homebrew installa osxfuse senza il MacFUSE Compatibility Layer .

Ci sono due osxfuse pacchetti in homebrew:

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

Entrambe le versioni non riescono a montare le partizioni EXT. Molto probabilmente, la versione DMG (Caskroom/cask/osxfuse) non riesce perché homebrew installa il pacchetto con le impostazioni predefinite, il che significa che MacFUSE Compatibility Layer non è incluso. La versione principale di osxfuse probabilmente necessita qualche parametro di installazione speciale per abilitare la compatibilità con MacFUSE, quindi fino a quando questo non viene risolto in homebrew dovrebbe essere usato il metodo DMG manuale.

Questo metodo ha funzionato su mavericks, yosemite, el capitan e sierra.

Script di montaggio EXT2 / 3/4 per versioni precedenti di OSX (deprecato)

Per risparmiare un po di digitazione in più, utilizzo un minuscolo script che prende il nome della partizione come disk0s2 e lo monta in /Volumes/disk0s2, creando la cartella se necessario:

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

Lo script viene chiamato con il nome della partizione che cerchi tramite diskutil list, ad es mount_ext4.sh disk2s3.

Commenti

  • Ho provato ma purtroppo viene visualizzato lerrore FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred: (ma non vi è alcuna descrizione o riferimento del problema). Ho installato laddon Compability Layer. ‘ su macOS Sierra, quindi ho provato la versione Github gzp500.

Risposta

Se ti stai chiedendo quale sia la riga di comando per montare una partizione ext4 usando fuse ed ext2fuse (es. quando installato usando MacPorts port install ext2fuse) – allora prima devi lavorare dove si trova la partizione Linux:

diskutil list 

Questo elencherà tutte le partizioni per tutti i dischi e tra queste dovresti vedere quelle pertinenti elencate sotto la colonna TYPE come Linux Combina diskX e numero di partizione Y in questo modo / dev / diskXsY – e.g:

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

Potrebbe lamentarsi di non essere in grado di scrivere nel file di registro ma dovrebbe comunque montare la partizione nel punto di montaggio di casa. Ma se vuoi montare la partizione in una directory di sistema, devi eseguirla come root, ad esempio:

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

Se non funziona, prova:

sudo ext2fuse /dev/disk1s2 /sys_mount_point 

Aggiorna : più recentemente ho “trovato” quel fuse-ext2 ha problemi con alcune nuove funzionalità ext4, quindi è meglio usare ext4fuse (port install ext4fuse o brew install ext4fuse). Utilizza direttamente il comando ext4fuse:

ext4fuse /dev/disk1s2 ~/mount_point 

Inoltre, come menzionato da Timothy nei commenti, di solito devi solo usare sudo se stai montando fuori dalla tua directory home o il disco (/ dev / diskX) è accessibile solo da root:

sudo ext4fuse /dev/disk1s2 /sys_mount_point 

Va notato che tu può accedere solo a quel filesystem montato come root / sudo. ad esempio

sudo ls /sys_mount_point 

E per smontare il filesystem basta usare il normale umount (con sudo se usato per montare la partizione):

umount ~/mount_point 

Commenti

  • Tu devi solo accedere allunità come root se la monti fuori dalla tua home directory. Puoi cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mnt senza sudo / root.
  • mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/ mount_fuse-ext2 per …: nessun file o directory

Risposta

Solo per la cronaca, ho testato il driver Paragon ExtFS (versione di prova) sul mio MacBook Pro per scrivere sulla partizione ext4 in Linux. Ho scoperto che il driver era molto instabile e ha creato corruzioni al filesystem che fsck non era in grado di riparare né in Linux né in Utility Disco.

Il mio lidea era di avere accesso alla mia partizione /home da Mac OS X utilizzando questo driver Paragon, ma non suggerisco di fare questa configurazione. Finora ho il mio /home in Linux formattata in hfsplus senza journaling, quindi posso accedere ai miei file da Mac OS X. Ovviamente, di tanto in tanto ottengo alcuni problemi nel mio FS ma non è molto frequente. Tuttavia, non suggerisco neanche questa configurazione (almeno che tu abbia un backup aggiornato per il tuo lavoro quotidiano).

Infine, credo che Paragon è più adatto magari per dischi rigidi esterni ma comunque non è molto affidabile in quanto software la cui licenza è costosa.

Aggiornamento: A partire da maggio 2015, ho formattato il mio / home in ext4, e monto il filesystem usando fuse-ext2 in combinazione con FUSE per OS X. Posso accedere alla partizione ext4 per leggere e scrivere. È una configurazione più solida di quella che ho descritto in precedenza.

Commenti

  • Posso confermare lultima voce qui in cui il driver Paragon ExtFS può creare problemi alle unità Linux. Per me, che sto eseguendo il dualbooting di OSX e Linux, paragon ha creato corruzioni sul mio dispositivo /. Questo è stato facile da risolvere, ma comunque non è una soluzione stabile …
  • Ulteriore brutta esperienza con il driver Paragon ExtFS. Panic del kernel costanti che hanno portato al riavvio del sistema, corruzione del file system (fortunatamente fsck su Linux box ha funzionato). Ho provato su due unità esterne diverse con gli stessi risultati.

Risposta

Puoi avviare VM Linux rapidamente su OS X utilizzando Vagrant . È necessario installare un provider VM come VirtualBox e Vagrant tramite il file .dmg dal sito o utilizzando brew cask .

Dopo aver installato il comando vagrant, eseguilo in qualsiasi cartella selezionata:

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

Ciò genererà Vagrantfile file di configurazione e .vagrant.

e avrai Linux avviato entro pochi minuti (scaricato da Atlas Hashicorp repository).

Quindi connettiti alla casella tramite il comando: vagrant ssh e provano a montare il tuo dispositivo allinterno di Linux.

Per impostazione predefinita la tua cartella corrente verrà sincronizzato con la cartella /vagrant nella VM. Per opzioni più avanzate, puoi modificare con la configurazione richiesta.

Quindi, se monti il tuo filesystem allinterno della cartella /vagrant, verrà automaticamente sincronizzato di nuovo con il tuo macOS.


In alternativa devi solo installare un VirtualBox , eseguire lapp GUI, installare e avviare una versione minima di Linux, ad es. Ubuntu al fine di ottenere lo stesso risultato spiegato sopra.


Le soluzioni sopra non native non sono ideali, ma almeno la tua macOS sarebbe più stabile piuttosto che installare estensioni del kernel instabili che potrebbero causare molti arresti anomali del sistema.

Commenti

  • Ho eseguito vagrant init ubuntu/xenial64; vagrant up --provider virtualbox poiché ubuntu/vivid64 non è più disponibile.
  • Prova a utilizzare ubuntu/trusty64 invece.

Risposta

Avevo ununità USB formattata ext4 che sono riuscito a montare dopo aver installato osxfuse . Leggere da esso funziona benissimo, ma non sono sicuro che la scrittura sia sicura.

Inoltre, per spostare file dal filesystem di OS X “s ( HFS + ) in ext4, potresti prima voler rimuovere quei file .DS_Store nascosti nel filesystem di OS X perché occasionalmente causano inode .

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

È meglio che doverli correggere dopo con un fsck .

Answer

Cè anche e2fsprogs disponibile in MacPorts. Non ho “t lho testato io stesso ma sembra promettente.

Risposta

Dai unocchiata a – > https://github.com/alperakcan/fuse-ext2

Questo è ciò che proverò dopo.

Per ext2, esiste una versione per macports: https://ports.macports.org/port/ext2fuse/summary

È disponibile un modulo ext4 per osxfuse (che puoi in stallo tramite macports) ma è di sola lettura!

La moltitudine di versioni è un po confusa ma a un certo punto sono riuscito a farlo funzionare, proverò di nuovo e aggiornerò questa risposta se lo fa . 🙂

osxfuse è disponibile su macports e come pacchetto autonomo. Non so ancora quale funziona meglio sulle nuove versioni di OS X, ma preferisco macports per il mio software gratuito su OS X.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *