Die APFS-Partition ist nach dem Erstellen des Hybrid-MBR verschwunden

Nach dem Versuch, einen Hybrid-MBR für das duale Booten von Windows in UEFI und BIOS mit gdisk zu erstellen, verschwand die APFS-Hauptpartition (Container) und hinterließ leeren Platz in der GPT-Partitionstabelle. sudo gpt -r show /dev/disk1Es ist nur möglich, mit (Leerzeichen von 409640 bis 732437176) zu sehen .

      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  732027536         
  732437176     195912      2  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
  732633088      32768      3  GPT part - E3C9E316-0B5C-4DB8-817D-F92DF00215AE
  732665856  244107264      4  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
  976773120         15         
  976773135         32         Sec GPT table
  976773167          1         Sec GPT header

Das Festplatten-Dienstprogramm und gdisk zeigen diesen leeren Speicherplatz überhaupt nicht an. Es ist auch unmöglich, die Partitionsstruktur mit dem Festplattendienstprogramm zu reparieren. Wie stellt man einen fehlenden APFS-Container wieder her? Hex-Dump unten.

Geben Sie hier die Bildbeschreibung ein

1+0 records in
1+0 records out
0000000 55 83 b6 a3 d0 9d ef aa 01 00 00 00 00 00 00 00
0000010 f8 cc 00 00 00 00 00 00 01 00 00 80 00 00 00 00
0000020 4e 58 53 42 00 10 00 00 52 3b 74 05 00 00 00 00
0000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000040 02 00 00 00 00 00 00 00 f1 c2 c7 d5 be fe 4d 6c
0000050 a8 5a c1 d2 1e 5e 2b d4 77 68 02 00 00 00 00 00
0000060 f9 cc 00 00 00 00 00 00 18 01 00 00 2c 6c 00 00
0000070 ec a3 04 00 00 00 00 00 c0 16 04 00 00 00 00 00
0000080 88 00 00 00 19 0d 00 00 86 00 00 00 02 00 00 00
0000090 06 0d 00 00 13 00 00 00 3f 67 02 00 00 00 00 00
00000a0 66 bb 0b 00 00 00 00 00 01 04 00 00 00 00 00 00
00000b0 00 00 00 00 64 00 00 00 02 04 00 00 00 00 00 00
00000c0 10 04 00 00 00 00 00 00 12 04 00 00 00 00 00 00
00000d0 be a4 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0000200

Antworten (1)

Sie können die Partition einfach mit gpt "im leeren Bereich" neu hinzufügen. Das Problem hier ist: Die APFS-Containerpartition war möglicherweise kleiner als der jetzt verfügbare freie Speicherplatz.

Die gute Nachricht ist: Die (ehemalige) Größe des Containers wird im APFS-Superblock gespeichert, der nicht durch die Erstellung eines Hybrid-MBR hätte geändert werden dürfen. Der Superblock ist der erste Block eines APFS-Containers – hier wahrscheinlich Block 409640 (das ist der 409641. Block Ihrer SSD), wenn das standardmäßige Apple-Partitionsschema ursprünglich verwendet wurde.

  • Booten Sie auf ein vollwertiges System (idealerweise 10.13, aber ältere Systeme sollten auch funktionieren, mit dem Nachteil, dass Sie den Container anschließend nicht mit fsck_apfs überprüfen können)
  • Holen Sie sich die Partitionsliste mit diskutil list. (im folgenden Beispiel gehe ich davon aus, dass die Gerätekennung disk1 ist)
  • Unmounten Sie die SSD:diskutil umountDisk disk1
  • Hexdump-Block 409640 der SSD:

    sudo dd if=/dev/disk1 skip=409640 bs=512 count=1 | hexdump
    

    was zu so etwas führt (nur Beispiel):

    1+0 records in
    1+0 records out
    0000000 4a 2e 4c 58 2c 73 22 1d 01 00 00 00 00 00 00 00
    0000010 ac 01 00 00 00 00 00 00 01 00 00 80 00 00 00 00
    0000020 4e 58 53 42 00 10 00 00 f6 37 ff 00 00 00 00 00
    0000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0000040 02 00 00 00 00 00 00 00 d1 67 7e 03 33 23 42 a5
    0000050 a8 da 96 fc 12 ae de 21 18 04 00 00 00 00 00 00
    0000060 ad 01 00 00 00 00 00 00 18 01 00 00 18 6c 00 00
    0000070 01 00 00 00 00 00 00 00 19 01 00 00 00 00 00 00
    0000080 10 00 00 00 80 07 00 00 0e 00 00 00 02 00 00 00
    0000090 7b 07 00 00 05 00 00 00 00 04 00 00 00 00 00 00
    00000a0 07 fd 03 00 00 00 00 00 01 04 00 00 00 00 00 00
    00000b0 00 00 00 00 64 00 00 00 02 04 00 00 00 00 00 00
    00000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    *
    0000200
    

    Die relevante Zeile ist 0x020:4e 58 53 42 00 10 00 00 f6 37 ff 00 00 00 00 00

    • 4e 58 53 42(NXSB) ist der magische APFS-Block (Offset: 0x20 Typ: char[4])
    • 00 10 00 00ist die Blockgröße (Offset: 0x24 Typ: Uint32). Nach dem Zurücksetzen der Byte-Reihenfolge und Konvertieren in Dezimalzahlen sind dies 4096 Byte, was die Standardgröße für APFS-Container ist.
    • f6 37 ff 00 00 00 00 00ist die Anzahl der Blöcke im Container (Offset: 0x28 Typ: Uint64)

      Um es in eine Dezimalzahl umzuwandeln, kehren Sie die Byte-Reihenfolge um f6 37 ff 00 00 00 00 00-> 00 00 00 00 00 ff 37 f6und geben Sie sie in einen Konverter ein . Die Anzahl der 4k-Blöcke beträgt hier 16.726.006 und die Endgröße 16.726.006 x 4096 Byte = 68.509.720.576 Byte. In 512-Byte-Blöcken sind das 133.808.048 Blöcke.

  • Prüfen Sie das Ergebnis auf Plausibilität. In Ihrem Fall sollte die Anzahl der 512-Byte-Blöcke gleich 732027536 oder etwas weniger sein.

  • Fügen Sie nun die Partition mit gpt hinzu:

    sudo gpt add -i 5 -b 409640 -s 512b_block_number -t 7C3457EF-0000-11AA-AA11-00306543ECAC /dev/disk1
    

    oder in Ihrem Fall wahrscheinlich:

    sudo gpt add -i 5 -b 409640 -s 732027536 -t 7C3457EF-0000-11AA-AA11-00306543ECAC /dev/disk1
    
  • Überprüfen Sie die Festplatte: sudo fsck_apfs /dev/disk1. Wenn Sie aufgefordert werden, vom „wiederhergestellten“ APFS-Container zu booten, um dies zu überprüfen, weil Ihr System auf dem anderen Boot-Laufwerk macOS 10.12 oder niedriger ist, verwenden Sie so etwas wie sudo fsck_apfs -nl /dev/disk1s2. Wenn Sie eine Warnung wie „warning: Overallocation Detected on Main device: (.....+1) bitmap address (.....)“ erhalten, können Sie diese wahrscheinlich ignorieren, solange das Volume /dev/disk1s2 den Anschein hat okay sein.

Tolle Lösung. Es sind jetzt 409640 Blöcke Platz zwischen den Partitionen. Es ist wahrscheinlich in Ordnung, aber fsck_apfs gibt warning: Overallocation Detected on Main device: (1658653+1) bitmap address (296051). Wodurch kann es verursacht werden?
@Alexander Bitte fügen Sie Ihrer Frage die Hexdump-Ausgabe hinzu
Hexdump hinzugefügt.
@Alexander Mit der in Ihrem Hexdump angezeigten Größe sollte in Ihrer gpt-Ausgabe jetzt kein freier Speicherplatz mehr vorhanden sein, außer den 6 Blöcken am Anfang und den 15 Blöcken am Ende. Daher ist unklar, was Sie mit "It's now 409640 blocks space between partitions..." meinen . ("52 3b 74 05 ..." = 732027536 x 512b Blöcke und der wahrscheinliche gpt-Befehl in meiner Antwort ist tatsächlich der richtige.)
Ich war falsch. Ich habe mir den „Start“ der Partition nicht angesehen, also dachte ich, dass zwischen den Partitionen (5 und 2) 409640 Blöcke Platz sind, 40 409600 1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B 409640 732027536 5 GPT part - 7C3457EF-0000-11AA-AA11-00306543ECAC 732437176 195912 2 GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7aber das Festplatten-Dienstprogramm erkennt immer noch eine Überbelegung.
@Alexander Ich habe nach der Fehlerzeichenfolge "Overallocation Detected on Main Device" gesucht und meines Wissens nach scheint dies selbst nach einer Neuinstallation von High Sierra in einem APFS-Container ein relativ häufiges Ergebnis zu sein.