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?
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?
Yanıtlar:
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.
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.
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)
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ı?
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 ext4fuse
veya 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 sudo
ana 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 umount
komutu kullanırsınız (eğer bölümü kurmak için kullanılıyorsa sudo ile):
umount ~/mount_point
cd ~
, mkdir mnt
, ext4fuse /dev/diskXsY mnt
, ls -la mnt
sudo / root olmadan.
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 fsck
ne Linux'ta ne de Disk Yardımcı Programında tamir edemeyen dosya sisteminde bozulmalar yarattı .
Benim fikrim, /home
bu Paragon sürücüsünü kullanarak bölümüme Mac OS X'ten erişebilmekti , ancak bu kurulumu yapmayı önermiyorum. Şimdiye kadar, /home
Linux'taki bölümlerimi hfsplus
hiç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.
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 .
vagrant
Komutu yükledikten sonra, bunu seçilen herhangi bir klasörde çalıştırın:
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
Bu Vagrantfile
config dosya ve .vagrant
klasö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 ssh
ve cihazınızı Linux içine monte etmeye çalışın .
Varsayılan olarak mevcut klasörünüz /vagrant
VM'deki klasörle senkronize edilecektir . Daha gelişmiş seçenekler için, Vagrantfile
gerekli konfigürasyonda değişiklik yapabilirsiniz .
Böylece dosya sisteminizi /vagrant
klasö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.
vagrant init ubuntu/xenial64; vagrant up --provider virtualbox
gibi koştum ubuntu/vivid64
.
ubuntu/trusty64
Bunun yerine kullanmayı deneyin .
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 .
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
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ı:
Hem OSXFUSE hem de FUSE-EXT2 kurulduktan sonra, ext2 / ext3 / ext4 bölümlerini diğer cevaplarda belirtildiği gibi monte edebilirsiniz:
Monte etmek istediğiniz EXT bölümünün cihaz adını bulun (örneğin disk0s2
aş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
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 .
osxfuse
Homebrew'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 osxfuse
sü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ı.
Bazı ekstra yazma işlemleri için, bölüm adını alan disk0s2
ve 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
.
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.