HFS+ ungültige Anzahl von Zuordnungsblöcken

Okay, vor ein paar Tagen wollte ich Ubuntu GNOME über normales Ubuntu installieren und es gab mir die Möglichkeit, meine Ubuntu-Installation automatisch zu überschreiben (die ich auf einer separaten Partition von meinem OS X Yosemite hatte). Nachdem ich GNOME auf diese Weise installiert hatte, schien das Installationsprogramm auch meine OS X-Partition zu entfernen.

Seitdem habe ich verschiedene Dinge versucht, um meine Mac-Partition wiederherzustellen, ich habe TestDisk verwendet, um die Sektoren zu finden, und gdisk, um die Partitionstabelle (und Partitionen) neu zu erstellen. Das Problem ist, dass ich diese neuen Partitionen nicht mounten kann. Ich habe versucht, die Partition mit fsck.hfsplus zu reparieren, aber es gibt mir den folgenden Fehler (von GNOME-Test-USB gebootet):

ubuntu-gnome@ubuntu-gnome:~$ sudo fsck.hfsplus /dev/sda2
** /dev/sda2
** Checking HFS Plus volume.
   Invalid number of allocation blocks
(4294967295, 0)
** Volume check failed.

Hier sind meine Testdisk-Ergebnisse:

Testdisk-ErgebnisseHier sind die Partitionen, die ich in gdisk erstellt habe:

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34          409633   200.0 MiB   EF00  EFI System Partition
   2          411648      1164570455   555.1 GiB   AF00  Apple HFS/HFS+
   3      1165256704      1166528119   620.8 MiB   AF00  Apple HFS/HFS+
   4      1166528512      1182543855   7.6 GiB     8200  Linux swap
   5      1182543872      1465147391   134.8 GiB   8300  Linux filesystem

Hier sind die verschiedenen Ausgaben nach dem Booten im Internet-Wiederherstellungsmodus:

diskutil list:

-bash-3.2# diskutil list /dev/disk0
   #:                        TYPE NAME                    SIZE        IDENTIFIER
   0:       GUID_partition_scheme                         *750.2 GB   disk0
   1:                         EFI                          209.7 MB   disk0s1
   2:                   Apple_HFS                          596.0 GB   disk0s2
   3:                   Apple_HFS                          651.0 MB   disk0s3
   4:                  Linux Swap                          8.2 GB     disk0s4
   5: 0FC63DAF-8483-4772-8E79-3D69D8477DE4                 144.7 GB   disk0s5
/dev/disk1
   #:                        TYPE NAME                    SIZE        IDENTIFIER
   0:      Apple_partition_scheme                         *1.2 GB     disk1
   1:         Apple_partition_map                          30.7 KB    disk1s1
   2:                   Apple_HFS Mac OS X Base System     1.2 GB     disk1s2

/dev/disk2-disk12 are part of the recovery system and irrelevant here

diskutil cs list:

No CoreStorage logical volume groups found

gpt -r -vv show /dev/disk0:

-bash-3.2# gpt -r -vv show /dev/disk0
gpt show: /dev/disk0: mediasize=750156374016; sectorsize=512; blocks=1465149168
gpt show: /dev/disk0: PMBR at sector 0
gpt show: /dev/disk0: Pri GPT at sector 1
gpt show: /dev/disk0: Sec GPT at sector 1465149167
       start        size index contents
           0           1       PMBR
           1           1       Pri GPT header
           2          32       Pri GPT table
          34      409600     1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      409634        2014                                                     
      411648  1164158808     2 GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  1164570456      686248
  1165256704     1271416     3 GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  1166528120         392
  1166528512    16015344     4 GPT part - 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
  1182543856          16
  1182543872   282603520     5 GPT part - 0FC63DAF-8483-4772-8E79-3D69D8477DE4
  1465147392        1743
  1465149135          32       Sec GPT table
  1465149167           1       Sec GPT header
@klanomath danke für deine Antwort. Ich habe meine Frage bearbeitet (sorry, es hat eine Weile gedauert)
Das habe ich auch tatsächlich versucht. Der Grund, warum die Sektoren in den von mir erstellten Partitionen etwas anders sind, liegt darin, dass ich das Volume mit dem Festplattendienstprogramm repariert habe. Wenn ich versuche, die einzelnen Partitionen zu reparieren, bekomme ich auch Fehler. Ich werde die Wiederherstellung erneut starten und diesen Kommentar mit diesen Fehlern bearbeiten.
Danke. Ich werde deine Antwort versuchen. Welche Chance habe ich, die Partition wiederherzustellen, die Sie denken? Es muss nicht bootfähig sein, ich brauche nur ein paar Dateien (hfsprescue ist derzeit keine Option, da ich alles wiederherstellen müsste und kein 700-GB-Flash-Laufwerk habe). Neuinstallation von OS X ist kein Problem.
@klanomath Okay, das Festplattendienstprogramm in der Wiederherstellung gab die gleichen Fehler. Ich werde Yosemite auf dem GNOME-Flash-Laufwerk installieren und DiskWarrior und wxHexEditor ausprobieren. Stack mag keine erweiterten Kommentare, also werde ich dies auch in einen Chat verschieben.

Antworten (1)

Meiner Meinung nach hat "TestDisk" Ihr GPT abgespritzt.

Bitte vergleichen Sie das TestDisk-Ergebnis mit meinen Festplatten. Die Festplatten in meinem Beispiel sind gleich groß, disk0 enthält eine CoreStorage-Partition und disk2 eine JHFS+-Partition im alten Stil. Ich verwende zwei separate Festplatten, da (zumindest für mich) nicht bekannt ist, welcher Formatierungstyp (CS oder JHFS+) ursprünglich verwendet wurde.

Das PMBR/GPT und die ersten drei Partitionen (EFI/Macintosh HD/Recovery HD) sollten wie folgt aussehen, wenn Sie zuvor eine CoreStorage-Partition hatten:

    root# gpt -r -vv show disk0
gpt show: disk0: mediasize=68719476736; sectorsize=512; blocks=134217728
gpt show: disk0: PMBR at sector 0
gpt show: disk0: Pri GPT at sector 1
gpt show: disk0: Sec GPT at sector 134217727
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  132538512      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  132948152    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC

oder so, wenn Sie zuvor ein klassisches JHFS+-Volume hatten:

root# gpt -r -vv show disk2
gpt show: disk2: mediasize=68719476736; sectorsize=512; blocks=134217728
gpt show: disk2: PMBR at sector 0
gpt show: disk2: Pri GPT at sector 1
gpt show: disk2: Sec GPT at sector 134217727
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  132538512      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  132948152    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC

(Bitte beachten Sie, dass die Mediengröße, die Blöcke, der Sektor des sekundären GPT, die Größe des 2. Volumes und der Startblock des 3. Volumes von Ihren abweichen, da ich hier kleinere Beispieldisketten verwende.)

Ihr Problem sollte gelöst werden, indem Sie die GPT noch einmal neu schreiben.

Vorbereitung:

Installieren Sie ein vollständiges Vanilla-System (Mavericks oder Yosemite sollten funktionieren) auf einem USB-Stick (oder einem externen Laufwerk). Ein Wiederherstellungssystem wird nicht funktionieren. Booten Sie vom USB-Stick, laden Sie wxHexEditor herunter und installieren Sie es . Aktivieren Sie den Root-Benutzer und melden Sie sich als Root an.

Hinweis: Verwenden Sie beim Arbeiten mit wxHexEditor kein Kopieren und Einfügen. Alles manuell eingeben! Sie könnten versehentlich direkt auf Ihre Festplatte schreiben.

JHFS+ oder CoreStorage-Partition?

Zuerst müssen Sie feststellen, ob Sie eine JHFS+- oder CoreStorage-Partition auf Indexnummer 2 hatten.

Öffnen Sie den Rechner. Öffnen Sie wxHexEditor. Stellen Sie sicher, dass Sie im Nur-Lese-Modus arbeiten ("Optionen" -> "Dateimodus" -> "Nur lesen"). Gehen Sie in der Menüleiste zu "Geräte" -> "Festplattengerät öffnen" -> wählen Sie die entsprechende Festplattennummer. Wahrscheinlich ist es disk0. Die Platte sollte weitere Partitionen haben (disk0s1 - disk0s5). Bitte versuchen Sie, das wxHexEditor-Fenster wie in den Beispielen unten mit geraden roten Linien anzuordnen.

Klicken Sie dann auf die Schaltfläche "Go to offset" (mit dem grünen Kreis markiert) und geben Sie 409640 genau wie im Bild unten ein. Manchmal muss man das zweimal machen, um zum richtigen Sektor zu springen. Überprüfen Sie den richtigen Sektor erneut, indem Sie den Offset (rot markiert) in den Rechner eingeben und durch 512 teilen.

Die ersten 3 Sektoren einer CoreStorage-Partition sehen so aus:

cs

Die ersten 3 Sektoren eines JHFS+ sehen so aus:

jhfs+

Wenn Sie ein grundlegend anderes Bild erhalten, hören Sie hier auf.

Wo beginnt die EFI-Partition?

Klicken Sie auf die Schaltfläche "Go to offset" und geben Sie 40 genau wie im Bild unten ein:

efi

Wenn Sie dieselben Einträge wie im Bild oben sehen (XEBSD 4.4...EFI...FAT32) ist dies der Startsektor Ihrer EFI-Partition. Wenn es nur Nullen gibt, könnte dies auch gültig sein.

Wo beginnt die Recovery HD-Partition?

Das ist wahrscheinlich der schwierigste Teil, weil Sie eine Zeichenfolge finden müssen, die nicht sehr spezifisch ist. Springe fast bis zum Ende deiner 2. Partition (in deinem Fall ~400 MB/781250 Sektoren weniger als 1164570456 = 1163789206)

Geben Sie dann "HFSJ" wie im Bild unten ein, suchen Sie zweimal nach dieser Zeichenfolge und notieren Sie sich die verschiedenen Offsets:

rechts

Je nach Partitionstyp können Sie zwei wirklich unterschiedliche Ergebnisse erhalten:

  1. Berechnen Sie die Sektornummer des ersten Fundes. In meinem Beispiel (siehe Bild oben) ist es 68069452800/512=132948150. Suchen Sie weiter und berechnen Sie den Sektor des zweiten Fundes. In meinem Fall war es 68069454848/512=132948154 (kein Bild).
    Die Differenz zwischen den beiden Befunden beträgt 4 Blöcke (=2 KB).

    Dies ist typisch für die Grenze zwischen einer JHFS+-Partition und der Recovery HD. Die Recovery HD beginnt dann beim Sektor des zweiten Fundes - 2 (in meinem Beispiel 132948154-2=132948152).

  2. Berechnen Sie die Sektornummer des ersten Fundes. In meinem Beispiel war es 67733904384/512=132292782 (kein Bild). Suchen Sie weiter und berechnen Sie den Sektor des zweiten Fundes. In meinem Fall war es 68069454848/512=132948154 (kein Bild). Die Differenz zwischen den beiden Befunden beträgt 655372 (~336 MB)

    Dies ist typisch für die Grenze zwischen einer CoreStorage-Partition und der Recovery HD. Die Recovery HD beginnt dann beim Sektor des zweiten Fundes - 2 (in meinem Beispiel 132948154-2=132948152).

Mit diesen Ergebnissen sollten Sie in der Lage sein, Ihr GPT ordnungsgemäß wiederherzustellen. Beenden Sie wxHexEditor. Wenn Sie aufgefordert werden, Änderungen zu speichern, speichern Sie sie nicht! .

Erstellen Sie ein ordnungsgemäßes GPT neu

Hier gehe ich davon aus, dass die Kennung Ihrer Hauptfestplatte disk0 ist. Zuerst müssen Sie Ihre Hauptfestplatte aushängen:

diskutil umountDisk disk0

Überprüfen Sie das Partitionslayout und entfernen Sie dann die ersten drei Partitionen:

gpt -r -vv show /dev/disk0

gpt remove -i 3 disk0
gpt remove -i 2 disk0
gpt remove -i 1 disk0

Da die EFI und die Recovery HD in der Regel feste Größen haben, können wir den Start- und Endblock Ihres Hauptvolumens berechnen.

Zuerst bauen wir das EFI neu auf mit:

gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk0

Dann berechnen wir die Größe des Hauptvolumes: Der Startblock ist 409640. Der Endblock wurde im Abschnitt „Wo beginnt die Partition der Recovery HD?“ gefunden: 1 kleiner als der Startblock der Recovery HD. Die Größe ist dann StartBlockOfRecoveryHD-409640.

Wenn Sie früher ein klassisches JHFS+ gefunden haben, sollte der folgende Befehl Partition 2 reparieren:

gpt add -b 409640 -i 2 -s StartBlockOfRecoveryHD-409640 -t 48465300-0000-11AA-AA11-00306543ECAC disk0

Wenn Sie zuvor eine CoreStorage-Partition gefunden haben, sollte der folgende Befehl Partition 2 reparieren:

gpt add -b 409640 -i 2 -s StartBlockOfRecoveryHD-409640 -t 53746F72-6167-11AA-AA11-00306543ECAC disk0

Geben Sie Folgendes ein, um die Recovery HD neu zu erstellen:

gpt add -b StartBlockOfRecoveryHD -i 3 -s 1269536 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk0

Remount disk0 mit:

diskutil mountDisk disk0

Beenden Sie Terminal, starten Sie das Festplatten-Dienstprogramm und überprüfen Sie Ihr Hauptvolume (wahrscheinlich Macintosh HD) auf Fehler und versuchen Sie, diese gegebenenfalls zu reparieren.
Wenn Sie zuvor eine CoreStorage-Partition gefunden haben, müssen Sie möglicherweise auf Ihrem USB-Stick neu starten, bevor Sie die Volumes mit dem Festplatten-Dienstprogramm reparieren, da das logische CoreStorage-Volume möglicherweise nicht richtig erkannt/gemountet wird. In Ihrem Setup - 1 Hauptfestplatte und der USB-Stick - sollte das logische Volume disk2 sein.

Ich hoffe, das löst Ihre Probleme.

Wenn Sie auf Probleme stoßen (z. B. wenn Sie den richtigen Startsektor Ihrer Recovery HD nicht finden), Zweifel oder Fragen haben, hören Sie sofort auf und kontaktieren Sie mich mit einem Kommentar @klanomath!