Apakah ada aplikasi yang aman dan stabil untuk membaca dari dan menulis ke sistem file ext4 pada Mac OS X?
Jika tidak, apa cara terbaik untuk mengakses konten sistem file ext4 di Mac OS X?
Apakah ada aplikasi yang aman dan stabil untuk membaca dari dan menulis ke sistem file ext4 pada Mac OS X?
Jika tidak, apa cara terbaik untuk mengakses konten sistem file ext4 di Mac OS X?
Jawaban:
Jawabannya tergantung pada kesediaan Anda untuk berinvestasi dalam perangkat lunak komersial:
Jika Anda tidak keberatan mengeluarkan uang untuk produk komersial , extFS Paragon untuk Mac akan memberi Anda akses baca dan tulis ke sistem file ext2 / ext3 / ext4. Versi saat ini mendukung semua versi OS X / macOS dari 10.10 ke atas.
Jika Anda mencari solusi gratis , Anda dapat mengatur mesin virtual Linux, pasang volume Anda di sana dan bagikan melalui Samba atau (S) FTP. Posting ini memiliki beberapa detail tentang cara mencapai ini menggunakan VirtualBox , aplikasi mesin virtual gratis. Catatan ini bukan solusi yang ringan, bahkan jika menggunakan VirtualBox VM prebuilt akan membuat Anda menginstal dan mengkonfigurasi distro Linux dari awal.
Membangun berdasarkan jawaban Ken: Saya berhasil menggunakan fuse4x dan fuse-ext2 , dan saya merekomendasikan fuse-ext2 daripada ext4fuse.
ext4fuse merepotkan saya, karena membutuhkan kompilasi manual dan tidak memiliki dukungan untuk opsi fuse4x yang memungkinkan saya untuk mengatur kontrol akses. fuse-ext2 menyediakan paket yang dapat diunduh, dan versi 0.0.7 berfungsi dengan baik. Saya menyalin beberapa ISO besar tanpa masalah.
Satu juga dapat menginstal OSXFUSE sepenuhnya melalui manajer paket baris perintah buatan :
brew install homebrew/fuse/ext4fuse
Perhatikan bahwa instalasi memberitahukan perintah-perintah tertentu harus dijalankan sebagai 'sudo' sebagai tambahan untuk ini.
Dengan Yosemite lebih baik kita lihat ini . Dan kemudian pastikan direktori tersebut dapat dibaca oleh pengguna Anda dengan melakukan ini . Agar berfungsi, saya harus menggunakan grup roda seperti ini:
sudo dscl . append /Groups/wheel GroupMembership $(whoami)
Dengan perubahan terbaru pada homebrew, ini harus sesederhana:
brew cask install osxfuse
brew install ext4fuse
Anda mungkin harus reboot.
sayangnya, ext4fuse hanya-baca. Dan Anda mungkin perlu menggunakan bendera untuk membuatnya berfungsi sebagai pengguna normal.
Orang lain yang melihat pertanyaan ini mungkin tertarik pada libguestfs . Saya tidak mengetahui port OS X, tetapi mengingat bahwa VirtualBox memiliki API, itu tidak keluar dari pertanyaan.
Saya bertanya-tanya mengapa tidak ada yang menulis lapisan kompatibilitas untuk memungkinkan kode sistem kernel Linux berjalan di userspace / sekering. Atau punya seseorang?
Jika Anda bertanya-tanya apa baris perintah untuk me-mount partisi ext4 menggunakan sekering dan ext2fuse (misalnya ketika diinstal menggunakan MacPorts port install ext2fuse
) - maka pertama-tama Anda harus mencari tahu di mana partisi Linux:
diskutil list
Ini akan mencantumkan semua partisi untuk semua disk dan di antaranya Anda akan melihat yang relevan terdaftar di bawah kolom TYPE sebagai Linux. Gabungkan nomor diskX dan partisi Y seperti ini / dev / diskXsY - mis:
mount -t fuse-ext2 /dev/disk1s2 ~/my_mount_point
Mungkin mengeluh tentang tidak bisa menulis ke file log tetapi masih harus me-mount partisi ke titik mount rumah Anda. Tetapi jika Anda ingin me-mount partisi ke direktori sistem maka Anda perlu menjalankannya sebagai root misalnya:
sudo mount -t fuse-ext2 /dev/disk1s2 /sys_mount_point
Jika tidak berhasil coba:
sudo ext2fuse /dev/disk1s2 /sys_mount_point
Pembaruan : Baru-baru ini saya menemukan bahwa fuse-ext2 memiliki masalah dengan fitur-fitur baru ext4 tertentu, jadi alih-alih lebih baik menggunakan ext4fuse ( port install ext4fuse
atau brew install ext4fuse
). Gunakan perintah ext4fuse secara langsung:
ext4fuse /dev/disk1s2 ~/mount_point
Juga seperti yang disebutkan oleh Timothy dalam komentar yang biasanya hanya perlu Anda gunakan sudo
jika Anda memasang di luar direktori home Anda atau disk (/ dev / diskX) hanya dapat diakses oleh root:
sudo ext4fuse /dev/disk1s2 /sys_mount_point
Perlu dicatat bahwa Anda hanya dapat mengakses sistem file yang di-mount sebagai root / sudo. misalnya
sudo ls /sys_mount_point
Dan untuk meng-unmount sistem file Anda cukup menggunakan umount
perintah normal (dengan sudo jika digunakan untuk me-mount partisi):
umount ~/mount_point
cd ~
, mkdir mnt
, ext4fuse /dev/diskXsY mnt
, ls -la mnt
tanpa sudo / root.
Sebagai catatan, saya telah menguji driver Paragon ExtFS (versi percobaan) pada MacBook Pro saya untuk menulis ke partisi ext4 di Linux. Saya menemukan bahwa pengandar sangat tidak stabil, dan itu menciptakan kerusakan pada sistem file yang fsck
tidak dapat memperbaiki baik di Linux maupun di Disk Utility.
Ide saya adalah untuk memiliki akses ke /home
partisi saya dari Mac OS X menggunakan driver Paragon ini, tetapi saya tidak menyarankan untuk melakukan pengaturan ini. Sejauh ini, saya memiliki /home
partisi saya di Linux yang diformat hfsplus
tanpa penjurnalan, dan kemudian saya dapat mengakses file-file saya dari Mac OS X. Tentu saja, dari waktu ke waktu saya mendapatkan beberapa masalah di FS saya tetapi tidak terlalu sering. Namun, saya juga tidak menyarankan pengaturan ini (setidaknya Anda memiliki cadangan terbaru untuk pekerjaan harian Anda).
Akhirnya, saya percaya bahwa Paragon lebih cocok mungkin untuk digunakan untuk hard disk eksternal tetapi bagaimanapun itu tidak terlalu dapat diandalkan untuk menjadi perangkat lunak yang lisensinya mahal.
Pembaruan: Pada Mei 2015, saya telah memformat / home saya ke ext4, dan saya me-mount sistem file menggunakan fuse-ext2 dalam kombinasi dengan FUSE untuk OS X. Saya dapat mengakses partisi ext4 untuk membaca dan menulis. Ini adalah pengaturan yang lebih solid daripada yang saya jelaskan di atas.
Anda dapat mem-boot Linux VM dengan cepat pada OS X Anda menggunakan Vagrant . Anda harus menginstal penyedia VM seperti VirtualBox dan Vagrant baik melalui file .dmg dari situs atau menggunakan brew cask .
Setelah Anda vagrant
menginstal perintah, jalankan ini di folder yang dipilih:
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
Ini akan menghasilkan Vagrantfile
file dan .vagrant
folder config .
dan Anda akan mem- boot kotak Linux dalam beberapa menit (diunduh dari repositori Atlas Hashicorp ).
Kemudian sambungkan ke kotak melalui perintah: vagrant ssh
dan coba pasang perangkat Anda di Linux.
Secara default folder Anda saat ini akan disinkronkan dengan /vagrant
folder di VM. Untuk opsi lebih lanjut, Anda dapat memodifikasi Vagrantfile
dengan konfigurasi yang diperlukan.
Jadi, jika Anda memasang sistem file Anda di dalam /vagrant
folder, itu akan secara otomatis disinkronkan kembali ke MacOS Anda.
Atau Anda hanya perlu menginstal VirtualBox , menjalankan aplikasi GUI, menginstal dan mem-boot Linux versi minimal misalnya Ubuntu untuk mencapai yang sama seperti yang dijelaskan di atas.
Solusi non-asli di atas tidak ideal, tetapi setidaknya macOS Anda akan lebih stabil daripada menginstal ekstensi kernel yang tidak stabil yang dapat menyebabkan banyak sistem crash.
vagrant init ubuntu/xenial64; vagrant up --provider virtualbox
karena ubuntu/vivid64
tidak tersedia lagi.
ubuntu/trusty64
saja.
Saya memiliki drive USB yang diformat dengan ext4 yang dapat saya pasang setelah saya menginstal osxfuse . Membaca darinya bekerja dengan baik, tetapi saya tidak yakin apakah menulis itu aman.
Selain itu, untuk memindahkan file dari sistem file OS X ( HFS + ) ke ext4, Anda mungkin ingin menghapus file .DS_Store yang disembunyikan itu ketika sistem file OS X menyelinap masuk karena terkadang menyebabkan inode yang buruk .
find /my/data/to/move -name '*.DS_Store' -type f -delete
Lebih baik daripada harus memperbaikinya setelah dengan perintah fsck .
Untuk Sierra dan High Sierra ext4fuse tampaknya berfungsi dengan baik hanya untuk akses baca dan oleh karena itu mungkin dapat dianggap sebagai opsi yang lebih disukai. Sementara jawaban lain sudah memberikan beberapa contoh penggunaan, saya akan mengulanginya sekali lagi dengan beberapa detail penting:
Instal ext4fuse dengan:
brew install ext4fuse
Anda dapat melakukan mount sebagai pengguna normal tetapi dalam hal ini Anda hanya akan dapat mengakses file yang dapat dibaca dunia, itu sebabnya untuk akses penuh yang perlu Anda gunakan sudo
, misalnya:
sudo ext4fuse -o allow_other /dev/disk2s1
Berikut ini adalah skrip bash yang mengotomatisasi sebagian proses. Ketika diluncurkan itu akan secara otomatis membuat titik pemasangan setelah Anda akan diminta untuk memasukkan salah satu pengidentifikasi perangkat yang ditampilkan seperti 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}
Untuk meng-unmount, Anda dapat menggunakan mis diskutil umount /dev/disk2s1
- jika Anda menerima pesan bahwa unmount gagal, Anda dapat memaksakan unmount diskutil umount force /dev/disk2s1
, meskipun akan lebih bersih untuk menutup aplikasi yang menggunakan file pada disk dan coba lagi unmount tanpa force
.
Jika Anda memiliki file yang dimiliki oleh _lpoperator
(tampaknya mereka dibuat ketika Anda menggunakan rsync dengan opsi pertahankan grup), maka perintah berikut akan memungkinkan Anda untuk mengakses file-file itu:
/usr/sbin/dseditgroup -o edit -a everyone -t group _lpoperator
Diperlukan dua paket untuk mengaktifkan dukungan EXT2 / 3/4 pada OSX: OSXFUSE dan FUSE-EXT2 .
The homebrew rumus untuk OSXFUSE dan FUSE-EXT2 tidak bekerja untuk saya di kedua maverick atau yosemite.
Apa yang berhasil adalah sebagai berikut:
Setelah Anda menginstal OSXFUSE dan FUSE-EXT2, Anda dapat memasang partisi ext2 / ext3 / ext4 seperti yang disebutkan dalam jawaban lain:
Temukan nama perangkat untuk partisi EXT yang ingin Anda pasang (mis. disk0s2
Dalam contoh di bawah ini, (PEMBARUAN) di partisi MacOS versi ext3 / ext4 nanti mungkin diberi label Microsoft Basic Data dan bukan Linux ):
# diskutil list | grep Linux
1: Linux_Swap 8.2 GB disk0s1
2: Linux 119.9 GB disk0s2
Pasang partisi ke titik pemasangan yang ada:
sudo mkdir -p /Volumes/ext4
sudo mount -t fuse-ext2 /dev/disk0s2 /Volumes/ext4
Pemasangan sebagai pengguna biasa tidak berhasil untuk saya. Mungkin ini bisa diperbaiki dengan mengutak-atik izin, tapi saya tidak memeriksanya.
Catatan: Kecurigaan saya adalah bahwa formula homebrew tidak berfungsi karena homebrew menginstal osxfuse
tanpa Layer Kompatibilitas MacFUSE .
Ada dua osxfuse
paket di homebrew:
# brew search osxfuse
>>> osxfuse
>>> Caskroom/cask/osxfuse
Kedua versi gagal untuk me-mount partisi EXT. Kemungkinan besar, versi DMG ( Caskroom/cask/osxfuse
) gagal karena homebrew menginstal paket dengan pengaturan default, yang berarti bahwa Lapisan Kompatibilitas MacFUSE tidak termasuk. Versi utama osxfuse
mungkin memerlukan beberapa parameter instalasi khusus untuk mengaktifkan kompatibilitas MacFUSE, jadi sampai ini diperbaiki dalam homebrew, metode DMG manual harus digunakan.
Metode ini bekerja untuk saya pada maverick, yosemite, elcapitan dan sierra.
Untuk menyimpan beberapa pengetikan saya menggunakan skrip kecil yang mengambil nama partisi seperti disk0s2
dan memasangnya di bawah /Volumes/disk0s2
, membuat folder jika perlu:
### mount_ext4.sh
sudo mkdir -p "/Volumes/$1"
sudo mount -t fuse-ext2 "/dev/$1" "/Volumes/$1"
open "/Volumes/$1"
Script dipanggil dengan nama partisi yang Anda cari diskutil list
, misalnya mount_ext4.sh disk2s3
.
FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:
(tetapi tidak ada deskripsi masalah atau referensi). Saya telah menginstal addon Layer Kompatibilitas. Saya menggunakan MacOS Sierra jadi mencoba versi Github gzp500.