Bagaimana saya bisa memasang sistem file ext4 pada OS X?


131

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?


Akan sangat membantu jika Anda menentukan versi OS X apa yang Anda jalankan. Ada masalah kompatibilitas dengan solusi yang tersedia tergantung pada revisi OS.
kopischke

Jawaban:


60

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.


2
Tentunya ada solusi nonvm gratis?
Pacerier

osboxes.org menyediakan versi yang lebih baru vs virtualboxes.org.
Tim

36

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.


dapatkah fuse-ext2 me-mount sesuatu sebagai dapat ditulis atau hanya dibaca?
knocte

25

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)

18

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?


10

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 ext4fuseatau 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 sudojika 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 umountperintah normal (dengan sudo jika digunakan untuk me-mount partisi):

umount ~/mount_point

Anda hanya perlu mengakses drive sebagai root jika Anda memasangnya di luar direktori home Anda. Anda bisa cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mnttanpa sudo / root.
Timothy Zorn

mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2 untuk ...: Tidak ada file atau direktori seperti itu
Wolfgang Fahl

9

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 fscktidak dapat memperbaiki baik di Linux maupun di Disk Utility.

Ide saya adalah untuk memiliki akses ke /homepartisi saya dari Mac OS X menggunakan driver Paragon ini, tetapi saya tidak menyarankan untuk melakukan pengaturan ini. Sejauh ini, saya memiliki /homepartisi saya di Linux yang diformat hfsplustanpa 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.


Saya dapat mengkonfirmasi entri terakhir di sini di mana driver Paragon ExtFS dapat membuat masalah pada drive linux Anda. Bagi saya, yang merupakan dualbooting OSX dan Linux, paragon menciptakan kerusakan pada perangkat saya. Ini mudah untuk dipecahkan tetapi itu bukan solusi yang stabil ...

Pengalaman buruk selanjutnya dengan driver Paragon ExtFS. Panic kernel yang konsisten mengarah ke sistem reboot, korupsi sistem file (untungnya fsck pada kotak Linux berhasil). Sudah mencoba dua drive eksternal yang berbeda dengan hasil yang sama.

9

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 vagrantmenginstal perintah, jalankan ini di folder yang dipilih:

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

Ini akan menghasilkan Vagrantfilefile dan .vagrantfolder config .

dan Anda akan mem- boot kotak Linux dalam beberapa menit (diunduh dari repositori Atlas Hashicorp ).

Kemudian sambungkan ke kotak melalui perintah: vagrant sshdan coba pasang perangkat Anda di Linux.

Secara default folder Anda saat ini akan disinkronkan dengan /vagrantfolder di VM. Untuk opsi lebih lanjut, Anda dapat memodifikasi Vagrantfiledengan konfigurasi yang diperlukan.

Jadi, jika Anda memasang sistem file Anda di dalam /vagrantfolder, 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.


Berlari dengan vagrant init ubuntu/xenial64; vagrant up --provider virtualboxkarena ubuntu/vivid64tidak tersedia lagi.
Fredrik Erlandsson

Coba gunakan ubuntu/trusty64saja.
kenorb

8

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 .


7

Jawaban yang diperbarui untuk Sierra (Tinggi)

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

Jawaban asli untuk Yosemite dan lebih lama (usang)

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:

  1. Unduh dan instal DMG OSXFUSE secara manual dari http://osxfuse.github.io/ . PENTING : Setelah Anda meluncurkan penginstal PKG, pastikan Anda memilih Lapisan Kompatibilitas MacFUSE di wizard (itu tidak diaktifkan secara default) - tanpanya saya mendapatkan kesalahan saat mencoba memasang.
  2. Unduh FUSE-EXT2 secara manual dari http://sourceforge.net/projects/fuse-ext2/ atau untuk Sierra / El Capitan dari https://github.com/gpz500/fuse-ext2/releases dan jalankan pemasang PKG.

Setelah Anda menginstal OSXFUSE dan FUSE-EXT2, Anda dapat memasang partisi ext2 / ext3 / ext4 seperti yang disebutkan dalam jawaban lain:

  1. Temukan nama perangkat untuk partisi EXT yang ingin Anda pasang (mis. disk0s2Dalam 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

  2. 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 osxfusetanpa Layer Kompatibilitas MacFUSE .

Ada dua osxfusepaket 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 osxfusemungkin 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.

EXT2 / 3/4 mount script untuk versi OSX yang lebih lama (usang)

Untuk menyimpan beberapa pengetikan saya menggunakan skrip kecil yang mengambil nama partisi seperti disk0s2dan 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.


1
Mencoba ini tetapi sayangnya mendapatkan kesalahan 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.
Winterflags

6

Ada juga e2fsprogs yang tersedia di MacPorts. Saya belum mengujinya sendiri tetapi terlihat menjanjikan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.