Bir ext4 dosya sistemini OS X'e nasıl bağlayabilirim?


131

Mac OS X'te ext4 dosya sistemlerinden okuma ve yazma için güvenli, sağlam bir uygulama var mı ?

Değilse, Mac OS X'te bir ext4 dosya sisteminin içeriğine erişmenin en iyi yolu nedir?


Hangi OS X sürümünü çalıştırdığınızı belirlediyseniz çok daha yararlı olurdu. İşletim sistemi revizyonuna bağlı olarak mevcut çözümler ile uyumluluk sorunları var.
kopischke

Yanıtlar:


60

Bunun cevabı, ticari yazılıma yatırım yapma isteğinize bağlıdır:

Ticari bir ürüne biraz para harcamaktan çekinmiyorsanız , Paragon'un Mac için extFS'si ext2 / ext3 / ext4 dosya sistemlerine okuma ve yazma erişimi sağlayacaktır. Mevcut sürüm, OS X / macOS'un tüm sürümlerini 10,10'dan itibaren desteklemektedir.

Ücretsiz bir çözüm arıyorsanız , bir Linux sanal makinesi kurabilir, birimlerinizi oraya monte edebilir ve Samba veya (S) FTP aracılığıyla paylaşabilirsiniz . Bu gönderi , ücretsiz bir sanal makine uygulaması olan VirtualBox'ı kullanarak bunun nasıl başarılacağına ilişkin bazı ayrıntılara sahiptir . Bu önceden hafif bir çözüm değildir, önceden oluşturulmuş bir VirtualBox kullanmak bile olsa, bir Linux dağıtımını sıfırdan yüklemenizi ve yapılandırmanızı önler.


2
Elbette ücretsiz bir nonvm çözümü var?
Pacerier

osboxes.org , sanalboxes.org'a karşı daha yeni sürümler sağlar.
Tim

36

Ken'in cevabını geliştirmek: fuse4x ve fuse ext2'yi başarılı bir şekilde kullandım ve ext4fuse yerine fuse ext2'yi öneririm.

ext4fuse benim için güçtü, çünkü manuel derleme gerektiriyor ve fuse4x seçeneklerini erişim denetimini ayarlamama izin verecek desteği yok. fuse-ext2 indirilebilir paketler sunar ve 0.0.7 sürümü gayet iyi çalışır. Birkaç büyük ISO'yu sorunsuzca kopyaladım.


sigorta-ext2 yazılabilir olarak mı yoksa sadece salt okunur mu?
knocte

25

Bir de OSXFUSE'yi tamamen demlemek komut satırı paket yöneticisi aracılığıyla yükleyebilir :

brew install homebrew/fuse/ext4fuse

Kurulumun bazı komutların buna ek olarak 'sudo' olarak çalıştırılması gerektiğini söylediğini unutmayın.


Yosemite ile daha iyi bir göz bu . Ve sonra dizin yaparak kullanıcı tarafından okunabilir olduğundan emin olun bu . Çalışması için, tekerlek grubunu bu şekilde kullanmak zorunda kaldım:

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

18

Homebrew’e yapılan son değişikliklerle bu, şu kadar basit olmalı:

brew cask install osxfuse
brew install ext4fuse

Yeniden başlatmanız gerekebilir.

ext4fuse ne yazık ki salt okunur. Normal bir kullanıcı olarak çalışması için bir bayrak kullanmanız gerekebilir .

Bu soruyu görüntüleyen diğer kişiler libguestfs ile ilgilenebilir . Bir OS X bağlantı noktasının farkında değilim, ancak VirtualBox'ın bir API'si olduğu düşünüldüğünde, söz konusu değil.

Neden hiç kimse Linux çekirdek dosya sistemi kodunun kullanıcı alanında / sigortada çalışmasına izin verecek bir uyumluluk katmanı yazmadığını merak ediyorum. Ya da biri var mı?


10

Komut satırının sigorta ve ext2fuse kullanarak bir ext4 bölümü monte etmenin ne olduğunu merak ediyorsanız (örneğin MacPorts kullanılarak yüklendiğinde port install ext2fuse) - ilk önce Linux bölümünün nerede olduğunu bulmanız gerekir:

diskutil list

Bu, tüm diskler için tüm bölümleri listeler ve aralarında TYPE sütunu altında Linux olarak listelenen ilgili bölümleri görmelisiniz. DiskX ve Y bölüm numarasını bu gibi / dev / diskXsY - ile birleştirin:

mount -t fuse-ext2 /dev/disk1s2 ~/my_mount_point

Günlük dosyasına yazamamaktan şikayet edebilir, ancak yine de bölümü evdeki bağlantı noktasına monte etmelidir. Ancak, bölümü bir sistem dizinine monte etmek istiyorsanız, root olarak çalıştırmanız gerekir, örneğin:

sudo mount -t fuse-ext2 /dev/disk1s2 /sys_mount_point

Bu işe yaramazsa deneyin:

sudo ext2fuse /dev/disk1s2 /sys_mount_point

Güncelleme : Daha yakın bir zamanda fuse- ext2'nin bazı yeni ext4 özellikleriyle ilgili sorunları olduğunu gördüm, bu yüzden ext4fuse ( port install ext4fuseveya brew install ext4fuse) işlevini kullanmak daha iyidir . Ext4fuse komutunu doğrudan kullanın:

ext4fuse /dev/disk1s2 ~/mount_point

Ayrıca, Timothy tarafından yorumlarda belirtildiği gibi, genellikle sadece sudoana dizininizin dışına monte ediyorsanız ya da diske (/ dev / diskX) yalnızca root tarafından erişilebiliyorsa kullanmanız gerekir:

sudo ext4fuse /dev/disk1s2 /sys_mount_point

Sadece o bağlı dosya sistemine root / sudo olarak erişebildiğinize dikkat edilmelidir. Örneğin

sudo ls /sys_mount_point

Ve dosya sistemini kaldırmak için sadece normal umountkomutu kullanırsınız (eğer bölümü kurmak için kullanılıyorsa sudo ile):

umount ~/mount_point

Ana dizininizin dışına takarsanız, sürücüye kök olarak erişmeniz gerekir. Şunları yapabilirsiniz cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mntsudo / root olmadan.
Timothy Zorn

mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2 for ...: Böyle bir dosya veya dizin yok
Wolfgang Fahl

9

Sadece kayıt için, MacBook Pro'daki Paragon ExtFS sürücüsünü (deneme sürümü) Linux'ta ext4 bölümüne yazmak için test ettim. Sürücünün çok dengesiz olduğunu gördüm ve fsckne Linux'ta ne de Disk Yardımcı Programında tamir edemeyen dosya sisteminde bozulmalar yarattı .

Benim fikrim, /homebu Paragon sürücüsünü kullanarak bölümüme Mac OS X'ten erişebilmekti , ancak bu kurulumu yapmayı önermiyorum. Şimdiye kadar, /homeLinux'taki bölümlerimi hfsplushiçbir günlüğe kaydetmeden biçimlendirdim ve sonra dosyalarıma Mac OS X'ten erişebiliyorum. Elbette zaman zaman FS'imde bazı sıkıntılar yaşıyorum ama çok sık değil. Ancak, bu kurulumu da önermiyorum (en azından günlük çalışmanız için güncel bir yedeğiniz var).

Son olarak, Paragon'un harici sabit disklerde kullanmak için daha uygun olabileceğine inanıyorum, ancak yine de hangi lisansın pahalı olduğu konusunda çok güvenilir değil.

Güncelleme: Mayıs 2015 itibariyle, / home'umu ext4 olarak biçimlendirdim ve dosya sistemini OS X için FUSE ile birlikte fuse-ext2 kullanarak monte ediyorum. Ext4 bölümüne okuma ve yazma için erişebilirim. Yukarıda daha önce tarif ettiğimden daha sağlam bir kurulum.


Paragon ExtFS sürücüsünün linux sürücülerinizde sorun yaşayabileceği son girişi burada onaylayabilirim. OSX ve Linux'u çift çizen benim için paragon, cihazımda bozulmalara yol açtı. Bunu çözmek kolaydı, ancak bu kararlı bir çözüm değil ...

Paragon ExtFS sürücüsü ile daha kötü bir deneyim. Sistemin yeniden başlatılmasına yol açan tutarlı çekirdek panikleri, dosya sisteminin bozulması (Neyse ki Linux kutusunda fsck işe yaradı). Aynı sonuçlarla iki farklı harici sürücüde denendi.

9

Sen başlatılabilir Linux VM kullanarak OS X'de hızla serseri . VirtualBox ve Vagrant gibi VM sağlayıcısını siteden .dmg dosyası aracılığıyla veya demleme fıçısı kullanarak yüklemeniz gerekir .

vagrantKomutu yükledikten sonra, bunu seçilen herhangi bir klasörde çalıştırın:

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

Bu Vagrantfileconfig dosya ve .vagrantklasör üretecektir .

ve birkaç dakika içinde Linux kutusu açılacaktır ( Atlas Hashicorp deposundan indirilir ).

Ardından komut kutusuna kutuya bağlanın : vagrant sshve cihazınızı Linux içine monte etmeye çalışın .

Varsayılan olarak mevcut klasörünüz /vagrantVM'deki klasörle senkronize edilecektir . Daha gelişmiş seçenekler için, Vagrantfilegerekli konfigürasyonda değişiklik yapabilirsiniz .

Böylece dosya sisteminizi /vagrantklasöre monte ederseniz , otomatik olarak macOS'unuza senkronize edilir.


Alternatif olarak, sadece bir VirtualBox kurmanız , GUI uygulamasını çalıştırmanız, Linux'a (örneğin Ubuntu ) en az sürümünü kurmanız ve önyüklemenizi sağlamanız gerekir.


Yerel olmayan çözümlerin üzerinde ideal değildir, ancak en azından macOS'unuz çok fazla sistem çökmesine neden olabilecek dengesiz çekirdek uzantıları yüklemek yerine daha kararlı olacaktır.


Artık mevcut olmadığı vagrant init ubuntu/xenial64; vagrant up --provider virtualboxgibi koştum ubuntu/vivid64.
Fredrik Erlandsson

ubuntu/trusty64Bunun yerine kullanmayı deneyin .
kenorb

8

Osxfuse'u yükledikten sonra takabildiğim ext4 formatlı bir USB sürücüm vardı . Ondan okumak harika çalışıyor ama yazmanın güvenli olup olmadığından emin değilim.

Ayrıca, OS X'in dosya sistemi (dosya taşımak için HFS + ext4'e), önce isteyebilirsiniz bu gizli .DS_Store dosyaları kaldırmak OS X dosya sistemi zaman zaman kötü neden olarak içeriye sızar Inode'u .

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

Onları bir fsck komutuyla düzeltmek zorunda kalmaktan iyidir .


7

(Yüksek) Sierra için güncellenmiş cevap

Sierra ve High Sierra ext4fuse, sadece okuma erişimi için iyi çalışıyor gibi görünüyor ve bu nedenle muhtemelen tercih edilen seçenek olarak görülebilir. Diğer cevaplar zaten bazı kullanım örnekleri verirken, bazı önemli ayrıntılarla bir kez daha tekrarlayacağım:

Ext4fuse'u aşağıdakilerle yükleyin :

brew install ext4fuse

Normal bir kullanıcı olarak bağlayabilirsiniz ancak bu durumda yalnızca dünyaca okunabilir dosyalara erişebileceksiniz, bu nedenle tam erişim için kullanmanız gerekenler sudo, örneğin:

sudo ext4fuse -o allow_other /dev/disk2s1

İşte süreci kısmen otomatikleştiren bir bash betiği. Başlatıldığında, aşağıdaki gibi görüntülenen cihaz tanımlayıcılarından birini girmeniz istendikten sonra otomatik olarak bağlantı noktasını oluşturur 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}

Bağlantıyı kesmek için, örneğin kullanabilirsiniz diskutil umount /dev/disk2s1- bağlantıyı kesme işleminin başarısız olduğunu bildiren bir mesaj alırsanız diskutil umount force /dev/disk2s1, diskte dosyaları kullanan uygulamaları kapatıp yeniden açmayı yeniden denemek daha temiz olsa da, bağlantıyı kesmeye zorlayabilirsiniz force.

Sahip olduğunuz dosyalara sahipseniz _lpoperator(görünüşe göre rsync grup korumasını koru seçeneğiyle kullanıldıklarında oluşturulurlarsa), aşağıdaki komut bu dosyalara erişmenize izin verir:

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

Yosemite ve daha yaşlılar için orijinal cevap (kullanımdan kaldırıldı)

OSX'te EXT2 / 3/4 desteğini etkinleştirmek için iki paket gerekir: OSXFUSE ve FUSE-EXT2 .

Homebrewleri OSXFUSE ve FUSE-EXT2 için formüller işe yaramadı mavericks veya yosemite ya benim için.

Ne iş yaptı:

  1. OSXFUSE DMG'yi elle indirin ve http://osxfuse.github.io/ adresinden yükleyin . ÖNEMLİ : PKG yükleyicisini başlattıktan sonra sihirbazda MacFUSE Uyumluluk Katmanı'nı seçtiğinizden emin olun (varsayılan olarak etkin değildir) - onsuz monte etmeye çalışırken bir hata ile karşılaşıyordum.
  2. FUSE-EXT2'yi http://sourceforge.net/projects/fuse-ext2/ adresinden veya https://github.com/gpz500/fuse-ext2/ sürümlerinden Sierra / El Capitan'dan manuel olarak indirin ve PKG yükleyicisini çalıştırın.

Hem OSXFUSE hem de FUSE-EXT2 kurulduktan sonra, ext2 / ext3 / ext4 bölümlerini diğer cevaplarda belirtildiği gibi monte edebilirsiniz:

  1. Monte etmek istediğiniz EXT bölümünün cihaz adını bulun (örneğin disk0s2aşağıdaki örnekte, (UPDATE) sonraki MacOS sürümlerinde ext3 / ext4 bölümleri Linux'ta değil, Microsoft Temel Verileri olarak etiketlenmiş olabilir ):

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

  2. Bölümü varolan bir bağlama noktasına monte edin:

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

Düzenli bir kullanıcı olarak montaj benim için işe yaramadı. Muhtemelen bu izinlerle uğraşarak çözülebilir, ama ben ilgilenmedim.

Not: Benim şüphem, homebrew MacFUSE Uyumluluk Katmanıosxfuse olmadan yüklendiği için homebrew formüllerinin işe yaramadığıdır .

osxfuseHomebrew'te iki paket var :

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

Her iki sürüm de EXT bölümlerini bağlayamıyor. Büyük olasılıkla, DMG sürümü ( Caskroom/cask/osxfuse) başarısız oluyor; çünkü homebrew paketi varsayılan ayarlarla yüklüyor , bu da MacFUSE Uyumluluk Katmanı'nın dahil olmadığı anlamına geliyor . Ana osxfusesürüm muhtemelen MacFUSE uyumluluğunu etkinleştirmek için bazı özel kurulum parametrelerine ihtiyaç duyar, bu nedenle homebrew'e sabitlenene kadar manuel DMG yöntemi kullanılmalıdır.

Bu yöntem benim için mavericks, yosemite, elcapitan ve sierra'da çalıştı.

Eski OSX sürümleri için EXT2 / 3/4 montaj komut dosyası (kullanımdan kaldırıldı)

Bazı ekstra yazma işlemleri için, bölüm adını alan disk0s2ve altına yükleyen küçük bir komut dosyası kullanıyorum /Volumes/disk0s2, gerekirse klasörü oluşturalım:

### mount_ext4.sh
sudo mkdir -p "/Volumes/$1"
sudo mount -t fuse-ext2 "/dev/$1" "/Volumes/$1"
open "/Volumes/$1"

Komut dosyası diskutil list, örneğin aradığınız bölüm adı ile çağrılır mount_ext4.sh disk2s3.


1
Bunu denedim ama maalesef hatayı alıyorum FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:(ancak hiçbir problem tanımı veya referansı yok). Uyumluluk Katmanı eklentisini yükledim. MacOS'tayım Sierra bu yüzden Github gzp500 versiyonunu denedi.
Winterflags,

6

MacPorts'ta e2fsprogs da mevcut. Henüz kendim test etmedim ama umut verici görünüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.