J'ai pu sauver au moins la partition OS X en accédant au Mac à distance via TeamViewer et en restaurant l'ancien groupe de volumes logiques CoreStorage.
Voici les étapes à suivre pour récupérer le volume OS X :
- Démarrage en mode de récupération Internet
- Attachez une clé USB de 16 Go
- Installez un système complet sur la clé USB. En mode de récupération Internet, le système d'origine avec lequel le Mac a été livré est installé : Mountain Lion
- Après avoir démarré à partir de la clé USB et configuré un compte administrateur, le système a été mis à jour vers El Capitan.
-
wxHexEditor (un éditeur de disque brut) et TeamViewer (accès à distance) ont été installés.
Après avoir vérifié le disque avec disktutil list
, diskutil cs list
et sudo gpt -r show disk0
l'image suivante est apparue :
- le disque avait un MBR au lieu d'un pMBR
- un volume CoreStorage a été configuré mais le volume physique était corrompu - aucune famille de volumes logiques et aucune logique n'étaient disponibles.
- Pas de volume - ni OS X, ni NTFS, ni le volume de récupération ne fonctionnent.
Pour restaurer une table de partition GUID, le MBR a dû être écrasé avec
sudo dd if=/dev/zero of=/dev/disk0 bs=512 count=1
et une nouvelle table de partition GUID a dû être créée :
sudo gpt destroy disk0
sudo gpt create -f disk0
a ajouté une nouvelle partition EFI :
sudo gpt -i 1 40 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk0
et copié l'EFI de la clé USB sur disk0s1 :
sudo dd if=/dev/disk1s1 of=/dev/disk0s1 bs=4m
Maintenant, j'ai essayé de déterminer si la partition principale d'OS X était CoreStorage ou non-CoreStorage avec wxHexEditor :
Dans les volumes HFSJ normaux, les blocs 409640 et 409641 du disque (=blocs un et deux de la partition OS X) contiennent généralement des zéros et le bloc 409642 la chaîne "HFSJ" dans les 16 premiers octets. Le premier bloc d'un CoreStorage contient quelques non-zéros - les deux blocs suivants correspondent à des partitions non-CoreStorage.
Le bloc 409640 avait quelques non-zéros, donc j'ai supposé qu'il était "corestorisé".
La fin d'un groupe de volumes CoreStorage peut être déterminée par des chaînes de caractéristiques dans de type plist des objets invisibles dans la "zone administrative" du groupe de volumes CoreStorage.
La chaîne "physicalVolumes" a quatre occurrences près de la fin d'un LVG. La dernière occurrence se trouve dans le 8185ème dernier bloc de la LVG. En recherchant les chaînes de caractères avec wxHexEditor, le dernier bloc a été déterminé.
Dans l'exemple ci-dessus, cela donne 511246241792/512 + 8184 = bloc 998536000. Le numéro de bloc doit être divisible par huit pour les disques de 512. Avec le dernier bloc du LVG, la deuxième partition peut être ajoutée avec :
sudo gpt -i 2 409640 -s 998536000 -t 53746F72-6167-11AA-AA11-00306543ECAC disk0
Le volume cassé est réapparu. Le disque a alors été vérifié et réparé ainsi que les volumes. Il a fallu plusieurs tentatives pour réparer toutes les erreurs du volume. Je n'ai pas essayé de récupérer la partition Windows 7.
Le volume principal était entièrement amorçable. Toutes les données ont été sauvegardées et le disque a été re-partitionné. Un nouveau système a été installé et les données sauvegardées ont été transférées avec l'assistant de migration.