Mounten der HFS + -Partition unter Arch Linux

22

Ich habe einige Probleme beim Mounten einer HFS + -Partition unter Arch Linux.

Wenn ich laufe sudo mount -t hfsplus /dev/sda2 /mnt/macbekomme ich folgende Fehlermeldung:

mount: wrong fs type, bad option, bad superblock on /dev/sda2,
   missing codepage or helper program, or other error

   In some cases useful info is found in syslog - try
   dmesg | tail or so.

Laufen dmesg | tailgibt:

[ 6645.183965] cfg80211: Calling CRDA to update world regulatory domain
[ 6648.331525] cfg80211: Calling CRDA to update world regulatory domain
[ 6651.479107] cfg80211: Calling CRDA to update world regulatory domain
[ 6654.626663] cfg80211: Calling CRDA to update world regulatory domain
[ 6657.774207] cfg80211: Calling CRDA to update world regulatory domain
[ 6660.889864] cfg80211: Calling CRDA to update world regulatory domain
[ 6664.007521] cfg80211: Exceeded CRDA call max attempts. Not calling CRDA
[ 6857.870580] perf interrupt took too long (2503 > 2495), lowering kernel.perf_event_max_sample_rate to 50100
[11199.621246] hfsplus: invalid secondary volume header
[11199.621251] hfsplus: unable to find HFS+ superblock

Gibt es eine Möglichkeit, diese Partition zu mounten?

EDIT :

Verwenden sudo mount -t hfsplus -o ro,loop,offset=409640,sizelimit=879631488 /dev/sda2 /mnt/macentledigt sich hfsplus: invalid secondary volume headerindmesg | tail

ZuluDeltaNiner
quelle

Antworten:

36

Es ist wahrscheinlich, dass das HFS-Volume nicht bereitgestellt wird, da die HFS-Partition in ein CoreStorage-Volume eingeschlossen ist (der Standardwert seit OS X 10.10). Sie können überprüfen, ob dies der Fall ist mit der Ausgabe von fdisk -l: fdisk Ausgabe

HFS + verwendet zwei Volume-Header, einen 1024 in das Gerät und den sekundären 1024 vom Ende des Geräts . Laut Spezifikation wird beim Mounten einer Partition erwartet, dass der sekundäre Header genau 1024 Byte vom Ende der Partition entfernt ist, aber mit CoreStorage, das das HFS-Volume umschließt, ist dies nicht mehr der Fall, sodass es abgebrochen wird. Sie können passieren -o sizelimit=Nzu mountmanuell der HFS Volume - Größe angeben , und dieses Problem zu beheben, aber , wie man für den magischen Wert nicht erhalten N?

Das testdiskDienstprogramm kann nach Partitionen suchen und so anzeigen, wo die HFS-Partition tatsächlich endet. Seien Sie vorsichtig - die Auswahl der falschen Optionen in testdisk kann Ihre Partitionstabelle beschädigen!

  1. Starten Sie TestDisk mit testdisk /dev/sdXund OKwählen Sie dann das Laufwerk aus
  2. Wählen Sie Intelfür MBR- oder EFI GPTGPT-formatierte Laufwerke
  3. Drücken Sie Analyseund dannQuick Search
  4. Nach einigen Augenblicken sollte es die gefundenen Partitionen drucken: Testergebnisse

    Die angegebene Partition ähnelt der tatsächlichen Partitionsgröße von 623463232 Sektoren (ist jedoch etwas kleiner) fdisk -l.

    Da die TestDisk-Ausgabe Sektoren verwendet, müssen Sie sie mit der logischen Sektorgröße des Laufwerks (normalerweise 512 oder 4096 Byte) multiplizieren, um die Größe des HFS-Volumes in Byte zu erhalten. Dies ist der Wert, den Nwir -o sizelimit=Nbeim Mounten des HFS-Volumes verwenden.

    Wenn Sie die logische Sektorgröße Ihres Laufwerks nicht kennen, überprüfen Sie die Ausgabe der zweiten ersten Zahl, die fdisk -lin der folgenden Zeile angezeigt wird:Ermitteln der logischen Sektorgröße Ihrer Festplatte

  5. Drücken Sie qmehrmals, um das Programm zu verlassen

  6. Hängen Sie den Datenträger ein: mount /dev/sdXn -t hfsplus -o ro,sizelimit=N
Stewart Adam
quelle
3
Von Benutzer edmonde : Dieses Rezept hat bei mir hervorragend funktioniert, aber ich musste es mit der logischen Sektorgröße (der ersten von zwei Zahlen, in meinem Fall 512 gegenüber 4096) und nicht mit der physischen Sektorgröße optimieren, um die Gesamtvolumengröße zu berechnen. Ich bin mir nicht sicher warum, aber es hat großartig funktioniert.
Fixer1234
Das hat mein Problem behoben. Andere Ressourcen schlugen vor, einen offsetParameter zu verwenden, der in Kombination damit nicht funktionierte, aber nur sizelimit die Anzahl der Bytes (Bytes * Sektoren)
festlegte
Das funktioniert bei mir nicht. Ich bekomme mount failed: Unknown error -1und nichts in dmesg. hfsplusist definitiv geladen.
Dan
+1 behoben durch Verwendung der logischen Sektorgröße
Jake
1
Diese Lösung funktionierte für mich bis nach einem Update auf OSX, das diese Funktion einstellte. Hat noch jemand dieses Problem? Irgendein Rat?
Vik
2

Eine andere Möglichkeit besteht darin, CoreStorage zu entfernen, wenn Ihnen ein OS X-Computer zur Verfügung steht. Dies würde auch die Entschlüsselung beseitigen, wenn Sie es verwenden und warten müssen, bis die Entschlüsselung abgeschlossen ist (an die Stromversorgung angeschlossen und in OS X gebootet, sogar Wiederherstellung).

Sie müssten von einem anderen Datenträger booten, vorzugsweise von einer Internetwiederherstellung (falls verfügbar, Befehl-Option-r beim Neustart). Öffnen Sie das Terminal und führen Sie Folgendes aus:

diskutil cs list

Die Ausgabe sollte Ihre CoreStorage-Volumes und alle Volumes anzeigen. Eines davon ist der Status "Zurücksetzbar". Wenn dies "Ja" anzeigt, sind Sie in guter Verfassung, um fortzufahren. Als nächstes würden Sie ausführen:

diskutil cs revert /dev/ diskXsY

(Wobei X die Plattennummer und Y die Partitionsnummer ist).

Sie können den Status anschließend mit demselben Befehl "diskutil cs list" überprüfen. Wenn es nicht verschlüsselt ist, sollte es bereits wieder ein Standard-GPT-Partitionslayout haben und Sie können versuchen, es erneut in Arch bereitzustellen. Es sollte weiterhin ein Journal erstellt werden, das schreibgeschützt bleibt, wenn Sie dies im Festplatten-Dienstprogramm ändern möchten.

Wenn es verschlüsselt wurde, dauert der Vorgang eine Weile, aber "diskutil cs list" zeigt Ihnen den Fortschritt in Prozent an.

Ich hatte selbst keine Probleme beim Mounten von Nicht-CoreStorage-HFS + -Laufwerken und -Partitionen auf Arch. Schließlich habe ich die Daten verschoben, als ext4 neu partitioniert und die Daten wieder dorthin verschoben.

Cory T
quelle