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 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 i přes své jméno 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 také jako „sudo“.
S Yosemite se podívejte na toto . toto pak zajistěte, aby byl adresář pro vašeho uživatele čitelný. Aby to fungovalo, musel jsem použít skupinu kol takto:
sudo dscl . append /Groups/wheel GroupMembership $(whoami)
Odpovědět
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řistupovat 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 při použití rsync s možností 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í:
- 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.
- 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:
-
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
-
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: Moje podezření je, ž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. ‚ m v systému macOS Sierra, takže jsem vyzkoušel verzi Github gzp500.
Odpověď
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č je velmi nestabilní, a způsobil poškození souborového systému, který fsck
nebyl schopen opravit ani v Linuxu, ani v Disk Utility.
Moje myšlenka byla 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: Od května 2015 jsem naformátoval svůj / domov 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 , 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 během několika minut budete mít spuštěn Linux box (stažený z Atlas Hashicorp repozitář).
Poté se připojte ke schránce 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í.
Pokud tedy připojíte souborový systém do složky /vagrant
, automaticky se synchronizuje 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
asubuntu/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, můžete 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 otestoval jsem to ještě sám, ale vypadá to slibně.
Odpovědět
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.