Esiste un'applicazione sicura e stabile per leggere e scrivere sui ext4 file system su Mac OS X?
In caso contrario, qual è il modo migliore per accedere ai contenuti di un file system ext4 su Mac OS X?
Esiste un'applicazione sicura e stabile per leggere e scrivere sui ext4 file system su Mac OS X?
In caso contrario, qual è il modo migliore per accedere ai contenuti di un file system ext4 su Mac OS X?
La risposta dipende dalla tua volontà di investire in software commerciale:
Se non ti dispiace spendere soldi per un prodotto commerciale , Paragon's extFS per Mac 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 i tuoi volumi e condividerli tramite Samba o (S) FTP. questo post ha alcuni dettagli su come ottenere ciò usando VirtualBox , un'applicazione gratuita per macchine virtuali. Nota che questa non è esattamente una soluzione leggera, anche se l'uso di una VirtualBox VM precostruita ti risparmierà l'installazione e la configurazione di una distribuzione Linux da zero.
Basandosi sulla risposta di Ken: ho usato fuse4x e fuse-ext2 con successo, e consiglio fuse-ext2 su ext4fuse.
ext4fuse era una seccatura per me, perché richiedeva la compilazione manuale e non supportava le opzioni fuse4x che mi permettevano 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.
Si può anche installare OSXFUSE completamente tramite il brew gestore di pacchetti da riga di comando:
brew install homebrew/fuse/ext4fuse
Si noti che l'installazione dice che alcuni comandi devono essere eseguiti come 'sudo' oltre a questo.
Con Yosemite è meglio dare un'occhiata a questo . E poi assicurati che la directory sia leggibile dal tuo utente facendo questo . Per farlo funzionare ho dovuto usare il gruppo wheel in questo modo:
sudo dscl . append /Groups/wheel GroupMembership $(whoami)
Con le recenti modifiche a homebrew, questo dovrebbe essere semplice come:
brew cask install osxfuse
brew install ext4fuse
Potrebbe essere necessario riavviare.
ext4fuse è di sola lettura, sfortunatamente. Potrebbe essere necessario utilizzare un flag per farlo funzionare come un utente normale.
Gli altri che visualizzano 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 questione.
Mi chiedo perché nessuno abbia scritto un livello di compatibilità per consentire l'esecuzione del codice del kernel del kernel di Linux in userspace / fuse. O qualcuno ha?
Se ti stai chiedendo quale sia la linea di comando per montare una partizione ext4 usando fuse ed ext2fuse (ad es. quando installato usando MacPorts port install ext2fuse
), allora prima 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 sotto la colonna TYPE come Linux. Combina il diskX e il numero di partizione Y come questo / dev / diskXsY - ad esempio:
mount -t fuse-ext2 /dev/disk1s2 ~/my_mount_point
Si può lamentare di non essere in grado di scrivere nel file di log, 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 e.g:
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à di ext4, quindi è meglio usare ext4fuse ( port install ext4fuse
o %codice%). Utilizzare direttamente il comando ext4fuse:
ext4fuse /dev/disk1s2 ~/mount_point
Inoltre, come menzionato da Timothy nei commenti, di solito devi usare brew install ext4fuse
se stai montando fuori dalla tua home directory o il disco (/ dev / diskX) è accessibile solo da root:
sudo ext4fuse /dev/disk1s2 /sys_mount_point
Si noti che è possibile accedere solo al filesystem montato come root / sudo. per es.
sudo ls /sys_mount_point
E per smontare il filesystem basta usare il comando sudo
normale (con sudo se usato per montare la partizione):
umount ~/mount_point
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 creava corruzioni sul filesystem che fsck
non era in grado di riparare nè su Linux nè su Utility Disco.
La mia idea era di avere accesso alla mia partizione /home
da Mac OS X usando questo driver Paragon, ma non suggerisco di fare questa installazione. Finora, ho la mia partizione /home
in Linux formattata a hfsplus
senza journaling, quindi posso accedere ai miei file da Mac OS X. Naturalmente, di tanto in tanto ottengo qualche problema nella mia FS ma non lo sono molto frequente Tuttavia, non suggerisco questa configurazione (almeno che tu abbia un backup aggiornato per il tuo lavoro quotidiano).
Infine, credo che Paragon sia più adatto forse da utilizzare per dischi rigidi esterni, ma comunque non è molto affidabile per essere un software la cui licenza è costosa.
Aggiornamento: A 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 rispetto a quella descritta in precedenza.
Puoi avviare Linux VM rapidamente sul tuo OS X usando Vagrant . È necessario installare il provider VM come VirtualBox e Vagrant tramite file .dmg dal sito o utilizzando brew cask .
Una volta installato il comando vagrant
, eseguilo in qualsiasi cartella selezionata:
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
Questo genererà Vagrantfile
config file e .vagrant
folder.
e avrai avviato Linux in pochi minuti (scaricato da repository Atlas Hashicorp ).
Quindi connetti alla casella tramite comando: vagrant ssh
e prova a montare il tuo dispositivo in Linux.
Per impostazione predefinita, la cartella corrente verrà sincronizzata con la cartella /vagrant
nella VM. Per le opzioni più avanzate, puoi modificare Vagrantfile
con la configurazione richiesta.
Quindi, se monti il tuo filesystem all'interno della cartella /vagrant
, verrà automaticamente sincronizzato sul tuo macOS.
In alternativa, devi solo installare un VirtualBox , eseguire l'app GUI, installare e avviare una versione minima di Linux, ad es. Ubuntu per ottenere lo stesso risultato spiegato sopra.
Le soluzioni non native non sono ideali, ma almeno il tuo macOS sarebbe più stabile piuttosto che installare estensioni del kernel instabili che potrebbero causare molti arresti anomali del sistema.
Ho avuto un drive USB formattato ext4 che sono riuscito a montare dopo aver installato osxfuse . Leggere da esso funziona alla grande, ma non sono sicuro che scrivere sia sicuro.
Inoltre, per spostare file dal filesystem di OS X ( HFS + ) a ext4, potresti prima voler rimuovi quei file .DS_Store nascosti il filesystem di OS X si insinua poiché a volte causano errori inodi .
find /my/data/to/move -name '*.DS_Store' -type f -delete
È meglio che doverli aggiustare dopo con un comando fsck .
Ci sono anche e2fsprogs disponibili in MacPorts. Non l'ho ancora provato ma sembra promettente.
Per Sierra e High Sierra ext4fuse sembra funzionare bene per leggi solo l'accesso e quindi potrebbe probabilmente essere considerata l'opzione preferita. Mentre altre risposte forniscono già alcuni esempi di utilizzo, la ripeterò ancora una volta con alcuni dettagli importanti:
Installa ext4fuse con:
brew install ext4fuse
Puoi montare come utente normale, ma in tal caso sarai in grado di accedere solo a file leggibili a livello mondiale, ecco perché per l'accesso completo devi utilizzare sudo
, ad esempio:
sudo ext4fuse -o allow_other /dev/disk2s1
Ecco uno script bash che automatizza parzialmente il processo. Una volta avviato, creerà automaticamente il punto di montaggio dopo che ti verrà richiesto 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 smontarlo puoi usare per es. diskutil umount /dev/disk2s1
- se ricevi un messaggio che smonta di non riuscire, puoi forzare lo smontaggio con diskutil umount force /dev/disk2s1
, anche se sarebbe più pulito chiudere le app che utilizzano i file sul disco e riprovare a smontare senza force
.
Se ti capita di avere file di proprietà di _lpoperator
(apparentemente vengono creati quando usi rsync con l'opzione preserve group), allora il seguente comando ti permetterà di accedere a quei file:
/usr/sbin/dseditgroup -o edit -a everyone -t group _lpoperator
Sono necessari due pacchetti per abilitare il supporto di EXT2 / 3/4 su OSX: OSXFUSE e FUSE-EXT2 .
Le formule homebrew per OSXFUSE e FUSE-EXT2 non hanno funzionato per me su Mavericks o Yosemite.
Ciò che funzionava era il seguente:
Dopo aver installato sia OSXFUSE sia FUSE-EXT2, puoi montare le partizioni ext2 / ext3 / ext4 come menzionato in altre risposte:
Trova il nome del dispositivo per la partizione EXT che vuoi montare (ad esempio disk0s2
nell'esempio sotto, (UPDATE) nelle versioni successive di MacOS le partizioni ext3 / ext4 potrebbero essere etichettate Microsoft Basic Data e non Linux ):
# diskutil list | grep Linux
1: Linux_Swap 8.2 GB disk0s1
2: Linux 119.9 GB disk0s2
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 manipolando le autorizzazioni, ma non l'ho esaminato.
Nota: il mio sospetto è che le formule homebrew non funzionassero perché homebrew installa osxfuse
senza il Livello di compatibilità MacFUSE .
Ci sono due pacchetti osxfuse
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 Compatibilità MacFUSE non è incluso. La versione osxfuse
principale probabilmente necessita di alcuni parametri di installazione speciali per abilitare la compatibilità con MacFUSE, quindi finché questo non viene risolto in homebrew deve essere utilizzato il metodo DMG manuale.
Questo metodo ha funzionato per me su anticonformisti, yosemite, elcapitan e sierra.
Per risparmiare un po 'di digitazione extra uso un piccolo script che prende il nome della partizione come disk0s2
e 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 tramite diskutil list
, ad es. mount_ext4.sh disk2s3
.