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?
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?
Risposte:
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.
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.
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)
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?
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 ext4fuse
o 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 sudo
se 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 umount
comando (con sudo se usato per montare la partizione):
umount ~/mount_point
cd ~
, mkdir mnt
, ext4fuse /dev/diskXsY mnt
, ls -la mnt
senza sudo / root.
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 fsck
non è stato in grado di riparare né in Linux né in Utility Disco.
La mia idea era di avere accesso alla mia /home
partizione da Mac OS X usando questo driver Paragon, ma non suggerisco di fare questa configurazione. Finora, ho la mia /home
partizione in Linux formattata hfsplus
senza 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.
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 vagrant
installato il comando, eseguilo in qualsiasi cartella selezionata:
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
Questo genererà Vagrantfile
file e .vagrant
cartelle di configurazione .
e avrai Linux box avviato in pochi minuti (scaricato dal repository Atlas Hashicorp ).
Quindi connettiti al box tramite il comando: vagrant ssh
e prova a montare il tuo dispositivo su Linux.
Per impostazione predefinita, la cartella corrente verrà sincronizzata con la /vagrant
cartella nella VM. Per opzioni più avanzate, è possibile modificare Vagrantfile
con la configurazione richiesta.
Quindi, se monti il tuo filesystem all'interno della /vagrant
cartella, 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.
vagrant init ubuntu/xenial64; vagrant up --provider virtualbox
as ubuntu/vivid64
non è più disponibile.
ubuntu/trusty64
invece a usarlo .
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 .
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
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:
Dopo aver installato OSXFUSE e FUSE-EXT2 è possibile montare le partizioni ext2 / ext3 / ext4 come indicato in altre risposte:
Trova il nome del dispositivo per la partizione EXT che desideri montare (ad es. disk0s2
Nell'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
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 osxfuse
senza il livello di compatibilità MacFUSE .
Esistono due osxfuse
pacchetti 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 osxfuse
versione 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.
Per salvare un po 'di digitazione in più, 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 diskutil list
, ad es mount_ext4.sh disk2s3
.
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.