Existuje bezpečná a stabilní aplikace pro čtení a zápis do souborových systémů ext4 v systému Mac   OS   X?

Pokud ne, jaký je nejlepší způsob přístupu k obsahu souborový systém ext4 v systému Mac   OS   X?

Komentáře

  • Bylo by více než užitečné, kdybyste určili, jakou verzi OS X používáte. V závislosti na revizi OS existují problémy s kompatibilitou dostupných řešení.

Odpověď

Odpověď závisí na vaší ochotě investovat do komerčního softwaru:

Pokud nevadí vám utratit nějaké peníze za komerční produkt , extFS pro Mac společnosti Paragon a> vám poskytne přístup ke čtení a zápisu do souborových systémů ext2 / ext3 / ext4. Podpora aktuální verze s všechny verze OS X / macOS od 10.10 výše.

Pokud hledáte bezplatné řešení , můžete nastavit virtuální stroj s Linuxem, připojit tam své svazky a sdílet je prostřednictvím Samba nebo (S) FTP. Tento příspěvek obsahuje několik podrobností, jak toho dosáhnout pomocí aplikace VirtualBox , bezplatné aplikace pro virtuální stroje. . Toto není zrovna lehké řešení, i když použití předem připraveného VirtualBox VM vás ušetří instalaci a konfiguraci distribuce Linuxu od nuly.

Komentáře

  • Určitě existuje ‚ bezplatné řešení nonvm?
  • osboxes.org poskytuje novější verze oproti virtualboxes.org.

Odpověď

V návaznosti na Kenovu odpověď: Úspěšně jsem použil fuse4x a fuse-ext2 a Doporučuji fuse-ext2 přes ext4fuse. Fuse-ext2 poskytuje přístup pro zápis, zatímco ext4fuse poskytuje pouze přístup pro čtení. Všimněte si, že navzdory svému jménu fuse-ext2 podporuje EXT2 / EXT3 / EXT4.

ext4fuse pro mě byl problém , protože vyžaduje ruční kompilaci a nemá podporu pro možnosti fuse4x, které by mi umožnily nastavit řízení přístupu. fuse-ext2 poskytuje balíčky ke stažení a verze 0.0.7 fungovala jen fi ne. Zkopíroval jsem několik velkých ISO bez problémů.

Komentáře

  • mohou fuse-ext2 připojit věci jako zapisovatelné nebo pouze pro čtení?

Odpověď

OSXFUSE lze také nainstalovat úplně pomocí brew správce balíčků příkazového řádku:

brew install homebrew/fuse/ext4fuse 

Upozorňujeme, že instalace říká, že některé příkazy je třeba spouštět jako „sudo“.


S Yosemite se podívejte na toto . Potom toto zkontrolujte, zda je adresář pro vašeho uživatele čitelný. Aby to fungovalo, musel jsem použít skupinu kol takto:

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

Answer

S nedávnými změnami homebrew by to mělo být tak jednoduché jako:

brew cask install osxfuse brew install ext4fuse 

Možná budete muset restartovat.

ext4fuse je bohužel jen pro čtení. Možná budete muset použít příznak , aby fungoval jako normální uživatel.

Ostatní, kteří si tuto otázku prohlížejí, by se mohli zajímat libguestfs . „Nevím o portu OS X, ale vzhledem k tomu, že VirtualBox má API, není vyloučeno.

Zajímalo by mě, proč nikdo nenapsal vrstvu kompatibility, která by umožňovala souborový systém s jádrem Linuxu. kód pro spuštění v uživatelském prostoru / pojistce. Nebo má někdo?

Odpověď

Aktualizovaná odpověď pro (High) Sierra

Pro Sierra a High Sierra Zdá se, že ext4fuse funguje dobře pro pouze přístup pro čtení a proto pravděpodobně by to mohlo být považováno za preferovanou možnost. Zatímco jiné odpovědi již uvádějí některé příklady použití, zopakuji to ještě jednou s některými důležitými podrobnostmi:

Nainstalujte ext4fuse s:

 brew install ext4fuse  

Můžete se připojit jako normální uživatel, ale v takovém případě budete moci pouze přistupujte ke světově čitelným souborům, proto pro plný přístup musíte použít sudo, např .:

 sudo ext4fuse -o allow_other /dev/disk2s1  

Tady je bash skript, který proces částečně automatizuje.Po spuštění automaticky vytvoří přípojný bod poté, co budete vyzváni k zadání jednoho ze zobrazených identifikátorů zařízení, například 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}  

K odpojení můžete použít např. diskutil umount /dev/disk2s1 – pokud se zobrazí zpráva, že odpojení selhalo, můžete vynutit odpojení pomocí diskutil umount force /dev/disk2s1, i když by bylo čistší zavřít aplikace, které používají soubory na disku, a pokusit se odpojit znovu bez force.

Pokud máte soubory vlastněné _lpoperator (zřejmě jsou vytvořeny, když použijete rsync s volbou zachování skupiny), pak následující příkaz umožní přístup k těmto souborům:

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

Původní odpověď pro Yosemite a starší * ( zastaralé)

K povolení podpory EXT2 / 3/4 v OSX jsou potřeba balíčky T * wo: OSXFUSE a FUSE-EXT2 .

homebrew vzorce pro OSXFUSE a FUSE-EXT2 nefungovaly pro mě na mavericks nebo yosemite.

Co fungovalo, bylo následující:

  1. Ruční stažení a instalace OSXFUSE DMG z http://osxfuse.github.io/ . DŮLEŽITÉ : Po spuštění instalačního programu PKG nezapomeňte v průvodci vybrat MacFUSE Compatibility Layer . (ve výchozím nastavení není povoleno) – bez ní se při pokusu o připojení zobrazovala chyba.
  2. Ručně stáhnout FUSE-EXT2 z http://sourceforge.net/projects/fuse-ext2/ nebo pro Sierru / El Capitan z https://github.com/gpz500/fuse-ext2/releases a spustit Instalační program PKG.

Jakmile máte nainstalované OSXFUSE i FUSE-EXT2, můžete připojit oddíly ext2 / ext3 / ext4, jak je uvedeno v jiných odpovědích:

  1. Najděte název zařízení pro oddíl EXT, který chcete připojit (např. disk0s2 v níže uvedeném příkladu, (UPDATE) v novějších verzích systému MacOS mohou být oddíly ext3 / ext4 označeny Základní data Microsoftu a ne Linux ):

     1: Linux_Swap 8.2 GB disk0s1 2: Linux 119.9 GB disk0s2  
  2. Připojte oddíl k stávající bod připojení:

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

Připojit jako běžný uživatel pro mě nepracoval. Pravděpodobně to lze napravit fidlováním s oprávněními, ale já jsem to nezkoumal.

Poznámka: Mám podezření, že vzorce homebrew nefungovaly, protože homebrew instaluje osxfuse bez vrstvy kompatibility MacFUSE .

V homebrew jsou dva balíčky osxfuse:

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

Obě verze nelze připojit k oddílům EXT. S největší pravděpodobností verze DMG (Caskroom/cask/osxfuse) selže, protože homebrew nainstaluje balíček s výchozím nastavením, což znamená, že není zahrnuta MacFUSE Compatibility Layer . Hlavní osxfuse verze pravděpodobně potřebuje nějaký speciální instalační parametr umožňující kompatibilitu MacFUSE, takže dokud to nebude opraveno v homebrewu, měla by být použita manuální metoda DMG.

Tato metoda fungovala na mavericks, yosemite, el capitan a sierra.

Připojovací skript EXT2 / 3/4 pro starší verze OSX (zastaralé)

Abych ušetřil nějaké další psaní, používám malý skript, který přebírá název oddílu, například disk0s2 a připojí jej pod /Volumes/disk0s2 a vytváří v případě potřeby složku:

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

Skript je volán s názvem oddílu, který vyhledáte pomocí diskutil list, např mount_ext4.sh disk2s3.

Komentáře

  • Vyzkoušeli jsme to, ale bohužel se zobrazila chyba FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred: (ale není zde žádný popis problému ani reference). Nainstaloval jsem doplněk Compability Layer. I ‚ m na macOS Sierra, takže jsem vyzkoušel verzi Github gzp500.

Odpovědět

Pokud vás zajímá, jaký je příkazový řádek pro připojení oddílu ext4 pomocí pojistky a ext2fuse (např. při instalaci pomocí MacPorts port install ext2fuse) – pak musíte nejprve pracovat kde je oddíl Linuxu:

diskutil list 

Zobrazí se seznam všech oddílů pro všechny disky a mezi nimi byste měli vidět příslušné oddíly uvedené ve sloupci TYP jako Linux Kombinujte diskX a číslo oddílu Y takto / dev / diskXsY – e.g:

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

Může si stěžovat, že není schopen zapisovat do souboru protokolu, ale přesto by měl oddíl připojit k domovskému bodu připojení. Pokud ale chcete oddíl připojit do systémového adresáře, musíte jej spustit jako root, například:

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

Pokud to nefunguje, zkuste:

sudo ext2fuse /dev/disk1s2 /sys_mount_point 

Aktualizace : Nedávno jsem našel že fuse-ext2 má problémy s některými novějšími funkcemi ext4, takže místo toho je lepší použít ext4fuse (port install ext4fuse nebo brew install ext4fuse). Použijte přímo příkaz ext4fuse:

ext4fuse /dev/disk1s2 ~/mount_point 

Jak uvedl Timothy v komentářích, obvykle stačí použít sudo pokud se připojujete mimo domovský adresář nebo je disk (/ dev / diskX) přístupný pouze uživateli root:

sudo ext4fuse /dev/disk1s2 /sys_mount_point 

Je třeba poznamenat, že k tomuto připojenému souborovému systému má přístup pouze jako root / sudo. např.

sudo ls /sys_mount_point 

A k odpojení souborového systému stačí použít normální umount (s sudo, pokud se používá k připojení oddílu):

umount ~/mount_point 

Komentáře

  • Vy k jednotce potřebujete přístup pouze jako root, pokud ji připojíte mimo domovský adresář. Můžete cd ~, mkdir mnt, ext4fuse /dev/diskXsY mnt, ls -la mnt bez sudo / root.
  • mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/ mount_fuse-ext2 pro …: Žádný takový soubor nebo adresář

Odpověď

Jen pro jistotu jsem otestoval ovladač Paragon ExtFS (zkušební verze) na svém MacBooku Pro, aby mohl v Linuxu zapisovat na oddíl ext4. Zjistil jsem, že ovladač byl velmi nestabilní a vytvořil poškození souborového systému, který fsck nebyl schopen opravit ani v Linuxu, ani v Disk Utility.

Moje myšlenkou bylo mít přístup k mému /home oddílu z Mac OS X pomocí tohoto ovladače Paragon, ale nenavrhuji toto nastavení dělat. Zatím mám svůj /home oddíl v Linuxu naformátovaný na hfsplus bez žurnálování a poté mohu přistupovat ke svým souborům z Mac OS X. Čas od času samozřejmě dostanu některé problémy v mém FS, ale nejsou příliš časté. Toto nastavení však nenavrhuji (alespoň že máte aktuální zálohu pro svou každodenní práci).

Nakonec věřím, že Paragon je vhodnější použít pro externí pevné disky, ale přesto není příliš spolehlivý na to, aby byl software, jehož licence je drahá.

Aktualizace: V květnu 2015 jsem formátoval / home na ext4, a připojuji souborový systém pomocí fuse-ext2 v kombinaci s FUSE pro OS X. Mohu přistupovat k oddílu ext4 pro čtení a zápis. Je to pevnější nastavení než to, které jsem dříve popsal výše.

Komentáře

  • Zde mohu potvrdit poslední položku, kde může ovladač Paragon ExtFS způsobit na vašich linuxových discích nějaké potíže. Pro mě, který dualbootuje OSX a Linux, paragon vytvořil poškození na mém / zařízení. To bylo snadné vyřešit, ale to není stabilní řešení …
  • Další špatné zkušenosti s ovladačem Paragon ExtFS. Konzistentní panika jádra vedoucí k restartu systému, poškození souborového systému (naštěstí fsck v Linux boxu fungoval). Vyzkoušeno na dvou různých externích discích se stejnými výsledky.

Odpovědět

Můžete spustit Linux VM rychle na vašem OS X pomocí Vagrant . Je třeba nainstalovat poskytovatele virtuálních počítačů, například VirtualBox a Vagrant , a to buď prostřednictvím souboru .dmg ze nebo pomocí brew cask .

Jakmile máte nainstalovaný příkaz vagrant, spusťte jej v libovolná vybraná složka:

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

Tím se vygeneruje Vagrantfile konfigurační soubor a .vagrant složka.

a vy budete mít Linux box spuštěný během několika minut (staženo z Atlas Hashicorp repozitář).

Poté se připojte k poli pomocí příkazu: vagrant ssh a zkuste připojit zařízení do systému Linux.

Ve výchozím nastavení je aktuální složka bude synchronizováno se složkou /vagrant ve VM. Pokročilejší možnosti můžete upravit s požadovanou konfigurací.

Takže pokud připojíte souborový systém do složky /vagrant, bude automaticky synchronizován zpět do váš macOS.


Alternativně stačí nainstalovat VirtualBox , spustit aplikaci GUI, nainstalovat a spustit minimální verzi systému Linux, např. Ubuntu , abyste dosáhli stejného výsledku, jaký je vysvětlen výše.


Nepůvodní řešení výše nejsou ideální, ale alespoň vaše systém macOS by byl stabilnější než instalace nestabilních rozšíření jádra, což by mohlo způsobit velké zhroucení systému.

Komentáře

  • Spuštěno s vagrant init ubuntu/xenial64; vagrant up --provider virtualbox as ubuntu/vivid64 již není k dispozici.
  • Zkuste místo toho použít ubuntu/trusty64.

Odpověď

Měl jsem USB disk ve formátu ext4, který jsem byl schopen připojit po instalaci osxfuse . Čtení z něj funguje skvěle, ale nejsem si jistý, zda je psaní bezpečné.

Také pro přesun souborů ze souborového systému OS X ( HFS + ) na ext4, možná budete nejprve chtít odstranit ty skryté soubory .DS_Store , do kterých se vplíží souborový systém OS X, protože občas způsobí špatné inody .

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

Je lepší než je muset opravit pomocí fsck .

Odpověď

V MacPorts jsou k dispozici také e2fsprogs. Nemám ještě jsem to sám otestoval, ale vypadá to slibně.

Odpověď

Podívejte se na – > https://github.com/alperakcan/fuse-ext2

O to se pokusím dále.

Pro ext2 existuje verze macports: https://ports.macports.org/port/ext2fuse/summary

Existuje ext4 modul pro osxfuse (který můžete v stall via macports), ale je to jen pro čtení!

Množství verzí je trochu matoucí, ale v jednom okamžiku se mi to podařilo dostat do práce, budu to zkoušet znovu a aktualizovat tuto odpověď, pokud ano . 🙂

osxfuse je k dispozici na macports a jako samostatný balíček. Nevím, který z nich zatím funguje nejlépe v novějších verzích OS X, ale dávám přednost macportům pro můj svobodný software v OS X.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *