Come posso montare un file system ext4 su OS X?


131

Esiste un'applicazione sicura e stabile 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?


Sarebbe più che utile se specifichi quale versione di OS X stai utilizzando. Esistono problemi di compatibilità con le soluzioni disponibili a seconda della revisione del sistema operativo.
kopischke

Risposte:


60

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

Se non ti dispiace spendere soldi per un prodotto commerciale , extagon per Mac di Paragon ti darà accesso in lettura e scrittura ai file system ext2 / ext3 / ext4. La versione corrente supporta 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 lì i tuoi volumi e condividerli tramite Samba o (S) FTP. Questo post contiene alcuni dettagli su come raggiungere questo obiettivo utilizzando VirtualBox , un'applicazione di macchina virtuale gratuita. Nota che questa non è esattamente una soluzione leggera, anche se l'utilizzo di una VirtualBox VM precompilata ti risparmierà l'installazione e la configurazione di una distribuzione Linux da zero.


2
Sicuramente esiste una soluzione nonvm gratuita?
Pacerier,

osboxes.org fornisce versioni più recenti rispetto a virtualboxes.org.
Tim

36

Basandomi sulla risposta di Ken: ho usato fuse4x e fuse-ext2 con successo e raccomando fuse-ext2 su ext4fuse.

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


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

25

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

brew install homebrew/fuse/ext4fuse

Si noti che l'installazione dice che alcuni comandi devono essere eseguiti come 'sudo' in aggiunta a questo.


Con Yosemite è meglio dare un'occhiata a questo . E quindi assicurati che la directory sia leggibile dal tuo utente in questo modo . Perché funzioni ho dovuto usare il gruppo ruote in questo modo:

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

18

Con le recenti modifiche all'homebrew, questo dovrebbe essere semplice come:

brew cask install osxfuse
brew install ext4fuse

Potrebbe essere necessario riavviare.

ext4fuse è di sola lettura, sfortunatamente. E potrebbe essere necessario utilizzare un flag per farlo funzionare come un normale utente.

Altri che stanno visualizzando questa domanda potrebbero essere interessati a libguestfs . Non sono a conoscenza di una porta OS X, ma considerando che VirtualBox ha un'API, non è fuori discussione.

Mi chiedo perché nessuno abbia scritto un livello di compatibilità per consentire l'esecuzione del codice del filesystem del kernel Linux nello spazio utente / fusibile. O qualcuno?


10

Se ti stai chiedendo quale sia la riga di comando per montare una partizione ext4 usando fuse ed ext2fuse (ad es. Quando installato usando MacPorts port install ext2fuse) - prima di tutto devi capire dove si trova la partizione Linux:

diskutil list

Questo elencherà tutte le partizioni per tutti i dischi e tra questi dovresti vedere quelli rilevanti elencati nella colonna TYPE come Linux. Combina diskX e il numero di partizione Y in questo modo / dev / diskXsY - ad esempio:

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 principale. Ma se si desidera montare la partizione in una directory di sistema, è necessario 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

Aggiornamento : Più recentemente ho scoperto che fuse-ext2 ha problemi con alcune nuove funzionalità ext4, quindi è meglio usare ext4fuse ( port install ext4fuseo brew install ext4fuse). Utilizzare direttamente il comando ext4fuse:

ext4fuse /dev/disk1s2 ~/mount_point

Inoltre, come indicato da Timothy nei commenti, di solito è necessario utilizzare solo sudose si sta montando all'esterno della directory principale o il disco (/ dev / diskX) è accessibile solo da root:

sudo ext4fuse /dev/disk1s2 /sys_mount_point

Va notato che è possibile accedere a quel filesystem montato solo come root / sudo. per esempio

sudo ls /sys_mount_point

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

umount ~/mount_point

Devi solo accedere all'unità come root se la monti fuori dalla tua home directory. È possibile cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mntsenza sudo / root.
Timothy Zorn,

mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2 per ...: nessun file o directory del genere
Wolfgang Fahl

9

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 nel filesystem che fscknon è stato in grado di riparare né in Linux né in Utility Disco.

La mia idea era di avere accesso alla mia /homepartizione da Mac OS X usando questo driver Paragon, ma non suggerisco di fare questa configurazione. Finora, ho la mia /homepartizione in Linux formattata hfsplussenza journaling e quindi posso accedere ai miei file da Mac OS X. Naturalmente, 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 sia più adatto forse per l'uso su dischi rigidi esterni ma comunque non è molto affidabile per essere un software la cui licenza è costosa.

Aggiornamento: da maggio 2015, ho formattato my / home su 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 precedentemente descritto sopra.


Posso confermare l'ultima voce qui in cui il driver Paragon ExtFS può creare qualche problema ai tuoi dischi Linux. Per me, che è dualbooting OSX e Linux, paragon ha creato corruzioni sul mio / dispositivo. È stato facile da risolvere, ma non è una soluzione stabile ...

Ulteriore brutta esperienza con il driver Paragon ExtFS. Il panico del kernel coerente porta al riavvio del sistema, alla corruzione del file system (fortunatamente fsck su Linux box ha funzionato). Ho provato su due diverse unità esterne con gli stessi risultati.

9

Puoi avviare rapidamente la VM Linux sul tuo OS X usando Vagrant . È necessario installare un provider di macchine virtuali come VirtualBox e Vagrant tramite il file .dmg dal sito o utilizzando brew cask .

Dopo aver vagrantinstallato il comando, eseguilo in qualsiasi cartella selezionata:

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

Questo genererà Vagrantfilefile e .vagrantcartelle di configurazione .

e avrai Linux box avviato in pochi minuti (scaricato dal repository Atlas Hashicorp ).

Quindi connettiti al box tramite il comando: vagrant sshe prova a montare il tuo dispositivo su Linux.

Per impostazione predefinita, la cartella corrente verrà sincronizzata con la /vagrantcartella nella VM. Per opzioni più avanzate, è possibile modificare Vagrantfilecon la configurazione richiesta.

Quindi, se monti il ​​tuo filesystem all'interno della /vagrantcartella, verrà automaticamente sincronizzato nuovamente su macOS.


In alternativa, è sufficiente installare un VirtualBox , eseguire l'app GUI, installare e avviare una versione minima di Linux, ad esempio Ubuntu, al fine di ottenere lo stesso come spiegato sopra.


Le soluzioni non native sopra non sono l'ideale, ma almeno macOS sarebbe più stabile anziché installare estensioni del kernel instabili che potrebbero causare molti arresti anomali del sistema.


Ho funzionato con vagrant init ubuntu/xenial64; vagrant up --provider virtualboxas ubuntu/vivid64non è più disponibile.
Fredrik Erlandsson,

Prova ubuntu/trusty64invece a usarlo .
Kenorb,

8

Avevo un'unità USB formattata ext4 che ero in grado di montare dopo aver installato osxfuse . Leggerlo funziona alla grande, ma non sono sicuro che scrivere sia sicuro.

Inoltre, per spostare i file dal filesystem di OS X ( HFS + ) a ext4, potresti prima voler rimuovere quei file nascosti .DS_Store in cui si intrufola il filesystem di OS X poiché occasionalmente causano inode errati .

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

È meglio che doverli riparare dopo con un comando fsck .


7

Risposta aggiornata per (alta) Sierra

Per Sierra e High Sierra ext4fuse sembra funzionare bene solo per l' accesso in lettura e quindi potrebbe probabilmente essere considerata l'opzione 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 montarlo come un normale utente, ma in quel caso sarai in grado di accedere solo a file leggibili dal mondo, ecco perché per un accesso completo devi usare sudo, ad esempio:

sudo ext4fuse -o allow_other /dev/disk2s1

Ecco uno script bash che automatizza parzialmente il processo. Una volta lanciato, creerà automaticamente il punto di montaggio dopo che ti verrà chiesto di inserire uno degli identificativi del 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 usare ad esempio diskutil umount /dev/disk2s1- se ricevi un messaggio di smontaggio fallito, puoi forzare lo smontaggio con diskutil umount force /dev/disk2s1, anche se sarebbe più pulito chiudere le app che stanno usando i file sul disco e riprovare a smontare senza force.

Se ti capita di avere file di proprietà _lpoperator(apparentemente vengono creati quando usi rsync con l'opzione preserva gruppo), il seguente comando ti permetterà di accedere a quei file:

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

Risposta originale per Yosemite e precedenti (obsoleto)

Sono necessari due pacchetti per abilitare il supporto EXT2 / 3/4 su OSX: OSXFUSE e FUSE-EXT2 .

Le formule homebrew per OSXFUSE e FUSE-EXT2 non hanno funzionato per me né su maverick né su yosemite.

Ciò che ha funzionato è stato il seguente:

  1. Scarica e installa manualmente DMX OSXFUSE da http://osxfuse.github.io/ . IMPORTANTE : una volta avviato il programma di installazione di PKG, assicurati di aver selezionato MacFUSE Compatibility Layer nella procedura guidata (non è abilitato per impostazione predefinita) - senza di esso si verificava 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 programma di installazione di PKG.

Dopo aver installato OSXFUSE e FUSE-EXT2 è possibile 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 es. disk0s2Nell'esempio seguente, (AGGIORNAMENTO) nelle versioni successive di MacOS le partizioni ext3 / ext4 potrebbero essere etichettate con Microsoft Basic Data e non Linux ):

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

  2. Montare la partizione su un punto di montaggio esistente:

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

Il montaggio come utente normale non ha funzionato per me. Probabilmente questo può essere risolto armeggiando con le autorizzazioni, ma non ci ho pensato.

Nota: il mio sospetto è che le formule homebrew non funzionassero perché homebrew si installa osxfusesenza il livello di compatibilità MacFUSE .

Esistono due osxfusepacchetti in homebrew:

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

Entrambe le versioni non riescono a montare 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 osxfuseversione principale probabilmente ha bisogno di alcuni parametri di installazione speciali per abilitare la compatibilità con MacFUSE, quindi fino a quando questo non verrà risolto in homebrew dovrebbe essere usato il metodo DMG manuale.

Questo metodo ha funzionato per me su maverick, yosemite, elcapitan e sierra.

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

Per salvare un po 'di digitazione in più, uso un piccolo script che prende il nome della partizione come disk0s2e lo monta sotto /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 si cerca diskutil list, ad es mount_ext4.sh disk2s3.


1
Ho provato questo, ma purtroppo viene visualizzato l'errore FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:(ma non esiste una descrizione o un riferimento al problema). Ho installato il componente aggiuntivo Livello di compatibilità. Sono su macOS Sierra, quindi ho provato la versione gzp500 di Github.
Winterflags,

6

Esistono anche e2fsprogs disponibili in MacPorts. Non l'ho ancora testato da solo, ma sembra promettente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.