3 votes

La partition APFS a disparu après la création du MBR hybride

Après avoir essayé de créer un MBR hybride pour le double démarrage de Windows en UEFI et BIOS avec gdisk, la partition APFS principale (conteneur) a disparu, laissant un espace vide dans la table de partition GPT. Il est seulement possible de le voir avec sudo gpt -r show /dev/disk1 (espace de 409640 à 732437176).

      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

Disk Utility et gdisk ne montrent pas du tout cet espace vide. Il est également impossible de réparer la structure de la partition avec l'utilitaire de disque. Comment récupérer un conteneur APFS manquant ? Hex dump ci-dessous.

enter image description here

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

1voto

klanomath Points 63400

Vous pouvez simplement réinsérer la partition avec gpt "dans l'espace vide". Le problème ici est que la partition du conteneur APFS pourrait avoir été plus petite que l'espace libre maintenant disponible.

La bonne nouvelle est que la (ancienne) taille du conteneur est stockée dans le superbloc APFS qui ne devrait pas avoir été modifié par la création d'un MBR hybride. Le superbloc est le premier bloc d'un conteneur APFS - ici probablement le bloc 409640 (qui est le 409641ème bloc de votre SSD) si le schéma de partition Apple par défaut a été utilisé initialement.

  • démarrer sur un système complet (idéalement 10.13 mais les systèmes plus anciens devraient également fonctionner avec l'inconvénient que vous ne pouvez pas vérifier le conteneur avec fsck_apfs par la suite)

  • obtenir la liste des partitions avec diskutil list . (dans l'exemple ci-dessous, je suppose que l'identifiant du périphérique est disk1)

  • Démontez le SSD : diskutil umountDisk disk1

  • hexdump bloc 409640 du SSD :

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

    ce qui donne quelque chose comme ceci (exemple seulement) :

    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

    La ligne concernée est 0x020 : 4e 58 53 42 00 10 00 00 f6 37 ff 00 00 00 00 00

    • 4e 58 53 42 (NXSB) est le bloc magique APFS (Offset : 0x20 Type : char[4])
    • 00 10 00 00 est la taille du bloc (Offset : 0x24 Type : Uint32). Après avoir inversé l'ordre des octets et l'avoir converti en décimal, cela donne 4096 octets, ce qui est la taille par défaut des conteneurs APFS.
    • f6 37 ff 00 00 00 00 00 est le nombre de blocs dans le conteneur (Offset : 0x28 Type : Uint64)

      pour le convertir en décimal, inverser l'ordre des octets f6 37 ff 00 00 00 00 00 -> 00 00 00 00 00 ff 37 f6 et le saisir dans un convertisseur . Le nombre de blocs 4k est ici de 16 726 006 et la taille finale 16 726 006 x 4096 octets = 68 509 720 576 octets. En blocs de 512 octets, cela fait 133 808 048 blocs.

  • Vérifiez la plausibilité du résultat. Dans votre cas, le nombre de blocs de 512 octets devrait être égal à 732027536 ou légèrement inférieur.

  • Maintenant, ajoutez la partition avec gpt :

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

    ou dans votre cas probablement :

    sudo gpt add -i 5 -b 409640 -s 732027536 -t 7C3457EF-0000-11AA-AA11-00306543ECAC /dev/disk1
  • Vérifiez le disque : sudo fsck_apfs /dev/disk1 . Si on vous demande de démarrer à partir du conteneur APFS "restauré" pour le vérifier parce que votre système sur l'autre disque de démarrage est MacOS 10.12 ou moins, utilisez quelque chose comme sudo fsck_apfs -nl /dev/disk1s2 . Si vous obtenez un avertissement du type "avertissement : Overallocation Detected on Main device : (.....+1) bitmap address (.....)" vous pouvez probablement l'ignorer tant que le volume /dev/disk1s2 semble être OK.

0 votes

Excellente solution. Il y a maintenant 409640 blocs d'espace entre les partitions. C'est probablement OK, mais fsck_apfs donne warning: Overallocation Detected on Main device: (1658653+1) bitmap address (296051) . Quelle peut en être la cause ?

0 votes

@Alexander Veuillez ajouter la sortie hexdump à votre question.

0 votes

Ajouté le hexdump.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X