Finns det en säker, stabil applikation för att läsa från och skriva till ext4 filsystem på Mac OS X?
Om inte, vad är det bästa sättet att komma åt innehållet i ett ext4-filsystem på Mac OS X?
Kommentarer
- Det skulle vara mer än användbart om du specificerade vilken version av OS X du kör. Det finns kompatibilitetsproblem med de tillgängliga lösningarna beroende på operativsystemversion.
Svar
Svaret beror på att du är villig att investera i kommersiell programvara:
Om du har inget emot att spendera lite pengar på en kommersiell produkt , Paragons extFS för Mac ger dig läs- och skrivåtkomst till ext2 / ext3 / ext4 filsystem. Den nuvarande versionen stöd s alla versioner av OS X / macOS från 10.10 och uppåt.
Om du letar efter en gratis lösning , kan du ställa in en virtuell Linux-maskin, montera din volym (er) där och dela den / dem via Samba eller (S) FTP. Det här inlägget har några detaljer om hur man kan uppnå detta med VirtualBox , en gratis virtuell maskinapplikation . Observera att detta inte är en lätt lösning, även om du använder en förbyggd VirtualBox VM kommer du att installera och konfigurera en Linux-distro från grunden.
Kommentarer
- Visst finns det ’ en gratis nonvm-lösning?
- osboxes.org tillhandahåller nyare versioner jämfört med virtualboxes.org.
Svar
Byggde på Ken: s svar: Jag använde fuse4x och fuse-ext2 framgångsrikt och Jag rekommenderar fuse-ext2 över ext4fuse. Fuse-ext2 ger skrivåtkomst medan ext4fuse bara ger läsbehörighet. Observera att trots att namnet stöder fuse-ext2 EXT2 / EXT3 / EXT4.
ext4fuse var ett besvär för mig , eftersom det kräver manuell kompilering och inte har något stöd för fuse4x-alternativ som gör att jag kan ställa in åtkomstkontroll. fuse-ext2 tillhandahåller nedladdningsbara paket och versionen av 0.0.7 fungerade bara fi ne. Jag kopierade några stora ISO-filer utan problem.
Kommentarer
- kan fuse-ext2 montera saker som skrivbara eller bara läsbara?
Svar
Man kan också installera OSXFUSE helt via brygga kommandoradspakethanteraren:
brew install homebrew/fuse/ext4fuse
Observera att installationen säger att vissa kommandon måste köras som ”sudo” utöver detta.
Med Yosemite är det bättre att ta en titt på detta . Och se till att katalogen är läsbar av användaren genom att göra detta . För att det skulle fungera var jag tvungen att använda hjulgruppen så här:
sudo dscl . append /Groups/wheel GroupMembership $(whoami)
Svar
Med de senaste ändringarna av homebrew bör detta vara så enkelt som:
brew cask install osxfuse brew install ext4fuse
Du kan behöva starta om.
ext4fuse är tyvärr skrivskyddad. Och du kan behöva använda en flagga för att få den att fungera som en normal användare.
Andra som tittar på den här frågan kan vara intresserade av libguestfs . Jag känner inte till en OS X-port, men med tanke på att VirtualBox har ett API är det inte uteslutet.
Jag undrar varför ingen har skrivit ett kompatibilitetsskikt för att tillåta Linux-kärnfilsystem kod som ska köras i användarutrymme / säkring. Eller har någon någon?
Svar
Uppdaterat svar för (High) Sierra
För Sierra och High Sierra ext4fuse verkar fungera bra för endast läsbehörighet och därför det kan förmodligen betraktas som det föredragna alternativet. Medan andra svar redan ger några användningsexempel, upprepar jag det igen med några viktiga detaljer:
Installera ext4fuse med:
brew install ext4fuse
Du kan montera som en normal användare men i så fall kommer du bara att kunna få tillgång till världsläsbara filer, det är därför för fullständig åtkomst du behöver använda sudo
, t.ex.:
sudo ext4fuse -o allow_other /dev/disk2s1
Här är ett bash-skript som delvis automatiserar processen.När den startas kommer den automatiskt att skapa monteringspunkten efter att du uppmanas att ange en av de visade enhetsidentifierarna som 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}
För att avmontera kan du använda t.ex. diskutil umount /dev/disk2s1
– om du får ett meddelande som avmonterar misslyckades kan du tvinga avmontering med diskutil umount force /dev/disk2s1
, även om det vore renare att stänga apparna som använder filerna på disken och försök igen avmontering utan force
.
Om du råkar ha filer som ägs av _lpoperator
(uppenbarligen skapas de när du använder rsync med bevarande gruppalternativ), sedan följande kommando tillåter åtkomst till dessa filer:
/usr/sbin/dseditgroup -o edit -a everyone -t group _lpoperator
Originalsvar för Yosemite och äldre * ( utfasad)
T * wo-paket behövs för att möjliggöra stöd för EXT2 / 3/4 på OSX: OSXFUSE och FUSE-EXT2 .
homebrew formler för OSXFUSE och FUSE-EXT2 fungerade inte för mig på antingen mavericks eller yosemite.
Vad som fungerade var följande:
- Manuell nedladdning och installation av OSXFUSE DMG från http://osxfuse.github.io/ . VIKTIGT : När du har startat PKG-installationsprogrammet, se till att du har valt MacFUSE Compatibility Layer i guiden (det är inte aktiverat som standard) – utan det fick jag ett fel när jag försökte montera.
- Ladda ner FUSE-EXT2 manuellt från http://sourceforge.net/projects/fuse-ext2/ eller för Sierra / El Capitan från https://github.com/gpz500/fuse-ext2/releases och kör PKG-installationsprogram.
När du har installerat både OSXFUSE och FUSE-EXT2 kan du montera ext2 / ext3 / ext4-partitionerna som nämns i andra svar:
-
Hitta enhetsnamnet för EXT-partitionen du vill montera (t.ex.
disk0s2
i exemplet nedan, (UPPDATERING) i senare MacOS-versioner ext3 / ext4-partitioner kan märkas Microsoft grundläggande data och inte Linux ):1: Linux_Swap 8.2 GB disk0s1 2: Linux 119.9 GB disk0s2
-
Montera partitionen till en befintlig monteringspunkt:
sudo mount -t fuse-ext2 /dev/disk0s2 /Volumes/ext4
Montering som en vanlig användare fungerade inte för mig. Förmodligen kan detta åtgärdas genom att fikla med behörigheter, men jag tittade inte på det.
Obs! Min misstanke är att homebrew-formlerna inte fungerade eftersom homebrew installerar osxfuse
utan MacFUSE Compatibility Layer .
Det finns två osxfuse
paket i homebrew:
# brew search osxfuse >>> osxfuse >>> Caskroom/cask/osxfuse
Båda versionerna kan inte montera EXT-partitioner. Mest troligt är DMG-versionen (Caskroom/cask/osxfuse
) misslyckas eftersom homebrew installerar paketet med standardinställningar, vilket innebär att MacFUSE Compatibility Layer inte ingår. Huvudversionen osxfuse
behöver troligen någon speciell installationsparameter för att möjliggöra MacFUSE-kompatibilitet, så tills detta är fixat i homebrew bör manuell DMG-metod användas.
Denna metod fungerade på mavericks, yosemite, el capitan och sierra.
EXT2 / 3/4 monteringsskript för äldre OSX-versioner (utfasad)
För att spara lite extra typning använder jag ett litet skript som tar partitionsnamnet som disk0s2
och monterar det under /Volumes/disk0s2
och skapar mappen om det behövs:
### mount_ext4.sh sudo mkdir -p "/Volumes/$1" sudo mount -t fuse-ext2 "/dev/$1" "/Volumes/$1" open "/Volumes/$1"
Skriptet kallas med partitionsnamnet som du tittar upp via diskutil list
, t.ex. mount_ext4.sh disk2s3
.
Kommentarer
- Försökte detta men fick tyvärr felet
FUSE-EXT2 could not mount /dev/disk2s2 at /Volumes/ext4 because the following problem occurred:
(men det finns ingen problembeskrivning eller referens). Jag har installerat tillägget Compability Layer. Jag ’ m på macOS Sierra så försökte Github gzp500-versionen.
Svar
Om du undrar vad kommandoraden är att montera en ext4-partition med säkring och ext2fuse (t.ex. när du installerar med MacPorts port install ext2fuse
) – måste du först arbeta där Linux-partitionen är:
diskutil list
Detta kommer att lista alla partitioner för alla diskar och bland dem bör du se de relevanta listade under TYPE-kolumnen som Linux Kombinera diskX och partitionsnummer Y så här / dev / diskXsY – e.g:
mount -t fuse-ext2 /dev/disk1s2 ~/my_mount_point
Det kanske klagar över att det inte går att skriva till loggfilen men det bör fortfarande montera partitionen i din hemmonteringspunkt. Men om du vill montera partitionen i en systemkatalog måste du köra den som root t.ex.:
sudo mount -t fuse-ext2 /dev/disk1s2 /sys_mount_point
Om det inte fungerar, försök:
sudo ext2fuse /dev/disk1s2 /sys_mount_point
Uppdatera : Nyligen har jag hittat att fuse-ext2 har problem med vissa nyare ext4-funktioner, så istället är det bättre att använda ext4fuse (port install ext4fuse
eller brew install ext4fuse
). Använd kommandot ext4fuse direkt:
ext4fuse /dev/disk1s2 ~/mount_point
Även som nämnts av Timothy i kommentarerna behöver du vanligtvis bara använda sudo
om du monterar utanför din hemkatalog eller om skivan (/ dev / diskX) endast är tillgänglig via root:
sudo ext4fuse /dev/disk1s2 /sys_mount_point
Det bör noteras att du kan bara komma åt det monterade filsystemet som root / sudo. t.ex.
sudo ls /sys_mount_point
Och för att avmontera filsystemet använder du bara normal umount
kommando (med sudo om det används för att montera partitionen):
umount ~/mount_point
Kommentarer
- Du behöver bara komma åt enheten som root om du monterar den utanför din hemkatalog. Du kan
cd ~
,mkdir mnt
,ext4fuse /dev/diskXsY mnt
,ls -la mnt
utan sudo / root. - mount: exec /Library/Filesystems/fuse-ext2.fs/Contents/Resources/ mount_fuse-ext2 för …: Ingen sådan fil eller katalog
Svar
Bara för ordens skull har jag testat Paragon ExtFS-drivrutin (testversion) på min MacBook Pro för att skriva till ext4-partition i Linux. Jag tyckte att drivrutinen var väldigt instabil, och det skapade skador på filsystemet som fsck
inte kunde reparera varken i Linux eller i Diskverktyg.
Mitt idén var att få tillgång till min /home
partition från Mac OS X med denna Paragon-drivrutin, men jag föreslår inte att jag gör den här installationen. Hittills har jag min /home
partition i Linux formaterad till hfsplus
utan journalföring, och sedan kan jag komma åt mina filer från Mac OS X. Naturligtvis får jag då och då några problem i min FS men är inte särskilt frekvent. Men jag föreslår inte heller denna inställning (åtminstone att du har en uppdaterad säkerhetskopia för ditt dagliga arbete).
Slutligen tror jag att Paragon är mer lämpligt kanske för externa hårddiskar men hur som helst är det inte särskilt tillförlitligt för att vara mjukvara som licensierar är dyrt. = ”8691f1b99f”>
Från och med maj 2015 har jag formaterat mitt / hem till ext4, och jag monterar filsystemet med hjälp av fuse-ext2 i kombination med FUSE för OS X. Jag kan komma åt ext4-partitionen för att läsa och skriva. Det är mer solid installation än den jag tidigare beskrivit ovan.
Kommentarer
- Jag kan bekräfta den senaste posten här där Paragon ExtFS-drivrutinen kan göra några dåliga problem på dina Linux-enheter. För mig, som är dualbooting OSX och Linux, skapade paragon korruptioner på min / enhet. Detta var lätt att lösa men det är dock inte en stabil lösning …
- Ytterligare dålig erfarenhet av Paragon ExtFS-drivrutin. Konsekventa kärnpanik som leder till omstart av systemet, korruption av filsystemet (lyckligtvis fungerade fsck på Linux-rutan). Försökte på två olika externa enheter med samma resultat.
Svar
Du kan starta Linux VM snabbt på ditt OS X med Vagrant . Du måste installera VM-leverantör som VirtualBox och Vagrant antingen via .dmg-filen från webbplats eller använder bryggningsfat .
När du har vagrant
kommandot, kör det här valfri mapp:
vagrant init ubuntu/trusty64; vagrant up --provider virtualbox
Detta genererar Vagrantfile
konfigurationsfil och .vagrant
-mapp.
och du kommer att starta Linux-rutan inom några minuter (laddad ned från Atlas Hashicorp repository).
Sedan ansluter till rutan via kommando: vagrant ssh
och försök att montera din enhet inuti Linux.
Som standard är din nuvarande mapp kommer att synkroniseras med /vagrant
-mappen i VM. För mer avancerade alternativ kan du ändra med nödvändig konfiguration.
Så om du monterar ditt filsystem i /vagrant
-mappen synkroniseras det automatiskt tillbaka till din macOS.
Alternativt behöver du bara installera en VirtualBox , köra GUI-appen, installera och starta en minimal version av Linux, t.ex. Ubuntu för att uppnå samma som förklarats ovan.
Ovanstående icke-inbyggda lösningar är inte idealiska, men åtminstone din macOS skulle vara mer stabilt snarare än att installera instabila kärntillägg som kan orsaka många systemkrascher.
Kommentarer
- Körde med
vagrant init ubuntu/xenial64; vagrant up --provider virtualbox
somubuntu/vivid64
är inte tillgänglig längre. - Försök använda
ubuntu/trusty64
istället.
Svar
Jag hade en ext4-formaterad USB-enhet som jag kunde montera efter att jag installerade osxfuse . Att läsa från det fungerar bra, men jag är inte säker på om det är säkert att skriva.
Också för att flytta filer från OS X: s filsystem ( HFS + ) till ext4, kanske du först vill ta bort de dolda .DS_Store-filerna OS X-filsystemet smyger in eftersom de ibland orsakar dåliga inoder .
find /my/data/to/move -name "*.DS_Store" -type f -delete
Det är bättre än att behöva fixa dem efter med en fsck kommando.
Svar
Det finns också e2fsprogs tillgängliga i MacPorts. Jag har inte testade det ännu själv men ser lovande ut.
Svar
Ta en titt på – > https://github.com/alperakcan/fuse-ext2
Detta är vad jag ska försöka härnäst.
För ext2 finns en version av macports: https://ports.macports.org/port/ext2fuse/summary
Det finns en ext4-modul för osxfuse (som du kan i stall via macports) men det är skrivskyddat!
Många versioner är lite förvirrande men vid ett tillfälle lyckades jag få det att fungera, jag kommer att försöka igen och uppdatera det här svaret om det gör det . 🙂
osxfuse är tillgängligt på macports och som ett fristående paket. Jag vet inte vilken som fungerar bäst ännu på nyare OS X-versioner, men jag föredrar macports för min gratisprogramvara på OS X.