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:

  1. 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.
  2. 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:

  1. 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  
  2. 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 som ubuntu/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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *