3 votes

HFS+ nombre de blocs d'allocation invalide

Il y a quelques jours, j'ai voulu installer Ubuntu GNOME à la place d'Ubuntu normal et j'ai eu la possibilité d'écraser automatiquement mon installation Ubuntu (que j'avais sur une partition séparée de mon OS X Yosemite). Après avoir installé GNOME de cette façon, il est apparu que le programme d'installation a également supprimé ma partition OS X.

Depuis, j'ai essayé plusieurs choses pour récupérer ma partition Mac, j'ai utilisé TestDisk pour trouver les secteurs et gdisk pour recréer la table de partition (et les partitions). Le problème est que je ne peux pas monter ces nouvelles partitions. J'ai essayé fsck.hfsplus pour réparer la partition mais cela me donne l'erreur suivante (démarrage à partir de la clé USB d'essai GNOME) :

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.

Voici les résultats de mon testdisk :

Testdisk results Voici les partitions que j'ai créées dans gdisk :

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

Voici les différentes sorties après avoir démarré en mode de récupération Internet :

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

5voto

klanomath Points 63400

A mon avis, "TestDisk" a détruit votre GPT.

Veuillez comparer le résultat de TestDisk avec mes disques. Les disques dans mon exemple sont de taille égale, le disque0 contient une partition CoreStorage et le disque2 une partition JHFS+ à l'ancienne. J'utilise deux disques séparés car on ne sait pas (du moins pour moi) quel type de formatage (CS ou JHFS+) a été utilisé à l'origine.

Le PMBR/GPT et les trois premières partitions (EFI/Macintosh HD/Recovery HD) devraient ressembler à ceci, si vous aviez une partition CoreStorage auparavant :

    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

ou comme ceci, si vous aviez auparavant un volume JHFS+ classique :

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

(Veuillez considérer que la taille du média, les blocs, le secteur du GPT secondaire, la taille du 2ème volume et le bloc de départ du 3ème volume sont différents des vôtres, car j'utilise ici des disques d'exemple plus petits).

Votre problème devrait être résolu en réécrivant le GPT une fois de plus.

Préparation :

Installez un système vanille complet (Mavericks ou Yosemite devrait fonctionner) sur une clé USB (ou un disque externe). Un système de récupération ne fonctionnera pas. Démarrez sur la clé USB, téléchargez et installez wxHexEditor . Activez l'utilisateur Root et connectez-vous en tant que Root.

Conseil : Lorsque vous travaillez avec wxHexEditor, n'utilisez pas le copier-coller. Saisissez tout manuellement ! Vous pourriez accidentellement écrire directement sur votre disque.

Partition JHFS+ ou CoreStorage ?

Vous devez d'abord déterminer si vous aviez une partition JHFS+ ou CoreStorage à l'index numéro 2.

Ouvrez la calculatrice. Ouvrez wxHexEditor. Vérifiez que vous travaillez en mode lecture seule ("Options" -> "Mode fichier" -> "Lecture seule"). Dans la barre de menu, allez dans "Devices" -> "Open disk device" -> choisissez le diskNumber approprié. Il s'agit probablement du disque 0. Le disque devrait avoir d'autres partitions (disk0s1 - disk0s5). Essayez de disposer la fenêtre wxHexEditor comme dans les exemples ci-dessous avec des lignes rouges droites.

Ensuite, cliquez sur le bouton "Go to offset" (marqué par le cercle vert) et entrez 409640 exactement comme dans l'image ci-dessous. Parfois, vous devez le faire deux fois pour atteindre le bon secteur. Vérifiez à nouveau le secteur correct en entrant le décalage (marqué en rouge) dans la calculatrice et divisez-le par 512.

Les trois premiers secteurs d'une partition CoreStorage ressemblent à ceci :

cs

Les 3 premiers secteurs d'un JHFS+ ressemblent à ceci :

jhfs+

Si vous obtenez une image fondamentalement différente, arrêtez-vous ici.

Où commence la partition EFI ?

Cliquez sur le bouton "Go to offset" et entrez 40 exactement comme dans l'image ci-dessous :

efi

Si vous voyez les mêmes entrées comme dans l'image ci-dessus (XEBSD 4.4...EFI...FAT32), c'est le secteur de départ de votre partition EFI. S'il n'y a que des zéros, cela peut aussi être valable.

Où commence la partition Recovery HD ?

C'est probablement la partie la plus difficile, car il faut trouver une chaîne de caractères qui ne soit pas très spécifique. Sautez presque à la fin de votre 2ème partition (dans votre cas ~400 Mo/781250 secteurs moins que 1164570456 = 1163789206)

Saisissez ensuite "HFSJ" comme dans l'image ci-dessous, recherchez cette chaîne deux fois et notez les différents décalages :

rhd

Vous pouvez avoir deux résultats vraiment différents selon le type de partition :

  1. Calculez le numéro de secteur de la première découverte. Dans mon exemple (voir image ci-dessus) c'est 68069452800/512=132948150. Continuez à chercher et calculez le secteur de la deuxième découverte. Dans mon cas, c'était 68069454848/512=132948154 (pas d'image).
    La différence entre les deux résultats est de 4 blocs (=2 KB).

    Ceci est typique de la limite entre une partition JHFS+ et le disque dur de récupération. Le disque dur de récupération commence alors au secteur de la deuxième découverte - 2 (dans mon exemple 132948154-2=132948152).

  2. Calculez le numéro de secteur de la première découverte. Dans mon exemple, c'était 67733904384/512=132292782 (pas d'image). Continuez à chercher et calculez le secteur de la deuxième découverte. Dans mon cas, c'était 68069454848/512=132948154 (pas d'image). La différence entre les deux résultats est de 655372 (~336 MB).

    Ceci est typique de la limite entre une partition CoreStorage et le disque dur de restauration. Le disque dur de récupération commence alors au secteur de la deuxième découverte - 2 (dans mon exemple 132948154-2=132948152).

Avec ces résultats, vous devriez être en mesure de restaurer votre GPT correctement. Quittez wxHexEditor. Si l'on vous demande d'enregistrer les modifications ne les sauvez pas ! .

Reconstruire un GPT correct

Ici, je suppose que l'identifiant de votre disque principal est disk0. Tout d'abord, vous devez démonter votre disque principal :

diskutil umountDisk disk0

Vérifiez la disposition des partitions puis supprimez les trois premières partitions :

gpt -r -vv show /dev/disk0

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

Comme l'EFI et le Recovery HD ont généralement des tailles fixes, nous pouvons calculer le bloc de début et de fin de votre volume principal.

D'abord on reconstruit l'EFI avec :

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

Ensuite, nous calculons la taille du volume principal : le bloc de départ est de 409640. Le bloc de fin a été trouvé dans la section "Où commence la partition du Recovery HD" : 1 de moins que le bloc de départ du Recovery HD. La taille est donc StartBlockOfRecoveryHD-409640.

Si vous avez trouvé un JHFS+ classique plus tôt, la commande suivante devrait réparer la partition 2 :

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

Si vous avez trouvé une partition CoreStorage plus tôt, la commande suivante devrait réparer la partition 2 :

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

Pour reconstruire le disque dur de récupération, entrez :

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

Remonter le disque0 avec :

diskutil mountDisk disk0

Quittez Terminal, lancez l'utilitaire de disque et vérifiez si votre volume principal (probablement le disque dur de Macintosh) présente des erreurs et essayez de les réparer si nécessaire.
Si vous avez trouvé une partition CoreStorage auparavant, vous devrez peut-être redémarrer sur votre clé USB avant de réparer les volumes avec l'utilitaire de disque, car le volume logique CoreStorage pourrait ne pas être reconnu/monté correctement. Dans votre configuration - 1 disque principal et la clé USB - le volume logique devrait être disk2.

J'espère que cela résout vos problèmes.

Si vous rencontrez des problèmes (par exemple si vous ne trouvez pas le bon secteur de départ de votre Recovery HD), si vous avez des doutes ou des questions, arrêtez immédiatement et contactez-moi avec un commentaire @klanomath !

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