Le cauchemar des tables de partition

J’ai récemment monté un PC bon marché dans le but d’en faire un HTPC basique. Une fois Xubuntu installé, l’enfer commence et je suis désormais convaincu que le prix exorbitant d’un Mac Mini est totalement justifié vu la facilité d’utilisation et l’ergonomie de Mac OS X (et hors de question d’acheter Windows, et en encore moins de le pirater) !
Premier échec : impossible de me connecter au réseau en wifi. Apparemment, soit le WPA2, soit la carte wifi, soit les deux sont en cause. Après un week-end de tentative, j’ai laissé tombé et j’ai mis un câble entre le PC et le routeur !
Deuxième échec : je n’ai toujours pas réussi à connecter Xubuntu et le Mac en réseau. Je n’en ai pas vraiment besoin (j’aurai bien fait un serveur Time Machine, mais je n’ai pas envie de ma casser la tête plus que cela).
Troisième échec : impossible de monter mes disques durs externes sur Linux (Xubuntu, Mandriva 2008 et Mandriva One 2010) alors qu’ils marchent sans problème sur le Mac et sur mon ancien PC tournant avec Windows 2000 ! En cause, la table de partition. Mac OS X ne semble pas s’en servir, MacDrive non plus… Et j’ai mis trois jours pour trouver le problème, puis 5 minutes pour le résoudre.

En premier lieu, faire une sauvegarde du disque en question car le risque de perdre toutes les données est fort ! Je ne peux pas être responsable de la perte de vos données en cas de mauvaise manipulation !
Puis brancher uniquement le disque que l’on veut réparer : il est difficile de s’y retrouver avec des noms comme /dev/rdisk1 ou /dev/rdisk2.

Pré-requis : un disque dur externe avec une table de partition foireuse, un ordinateur avec un système basé sur Unix (Linux ou Mac OS X), les logiciels pdisk et TestDisk, et bien sur savoir se servir d’un Terminal.

Tout d’abord, j’ai utilisé TestDisk en mode super utilisateur dans un terminal (il faut d’abord installer TestDisk !):
Linux :
sudo testdisk
Mac:
sudo /Applications/testdisk-6.11.3/darwin/testdisk
ou simplement en double cliquant sur l’icone dans Applications, puis en sélectionnant Sudo
(Sur la première page, on peut choisir « No Log », sauf s’il l’on souhaite enregistrer ce que l’on a fait.)

TestDisk avec le choix de super utilisateur

Si le disque en question est en lecture seule – (RO) écrit derrière le disque -, il faut (dans cet ordre) quitter TestDisk, le démonter et relancer TestDisk:
Xubuntu : clic droit sur le disque, démonter
Mac : Utilitaire de disque : Démonter (et pas éjecter !))

Cela dit si le disque est en HFS+ avec une table de partition Apple, TestDisk ne peut pas récrire la table de partition. Mais il peut la lire et nous aurons besoin de ses informations pour réparer le disque.
Sélectionner le disque, puis « Proceed. » Normalement, TestDisk est suffisamment bien fait pour reconnaître le format de la table de partition : il suffit de presser la touche « Entrer », une première fois pour valider le format de la table de partition, une deuxième fois pour lancer l’analyse.

Selection du type de table de partition.

Avant l'analyse

Et nous voici avec une belle table de partition (celle de l’exemple n’a pas d’erreur):

Table de partition dans TestDisk

Après Quick Search, la fonction Write (pour écrire la table de partition) est disponible. Si l’on tente d’écrire on a le message suivant:

Function write_part_mac not implemented
Use pdisk to recreate the missing partition
using values displayed by TestDisk

Ce serait beaucoup trop simple ! Je veux bien… Je comprends l’anglais mais c’est qui ce pdisk ? La meilleur réponse, adapté en français par mes soins, vient du blog de Broes. pdisk est un rescapé des outils Unix qui équipent les Mac, aussi puissant qu’incompréhensible ! La suite explique la procédure :

Garder cette fenêtre ouverte et dans une autre fenêtre de Terminal, lancer pdisk (il est, semble-t-il, installé par défaut sur Snow Leopard, je n’ai pas pu l’installer sur Xubuntu):
sudo pdisk

Dans l’ordre, il faut:
taper e (pour éditer), puis le nom du disque donné par TestDisk (/dev/rdisk2 dans mon cas)
p pour voir où on en est (c’est une image de la table de partition).
i pour effacer la table de partition puis y pour valider (noter que pdisk ne change pas la table de partition elle même tant que l’on n’a pas tapé w et validé : on peut recommander si l’on se trompe ;-) )
Valider jusqu’à ce que la ligne Command (? for help): soit de retour.
La partie difficile commence : il faut écrire manuellement la table de partition.
p pour voir où on en est.
c pour créer la table, partition par partition :
Taper le début du bloc de la partition (même valeur que le « Start » donné par TestDisk), valider
Taper la taille de la partition (même valeur que le « Size in sectors » donné par TestDisk), valider
p pour voir où on en est. Recommencer avec c pour la partition suivante, etc. jusqu’à ce que p donne la même chose que la table donnée par TestDisk.
En cas d’erreur, i pour effacer la table, et on recommence !
Quand on est sûr de son coup, on presse w pour écrire la table, puis y pour valider.

pdisk

Quitter pdisk et TestDisk : normalement le disque se remonte tout seul sur le Mac !

En bonus avec TestDisk : l’utilitaire PhotoRec, qui permet de récupérer des données effacées, notamment sur les cartes mémoires de nos chers appareils photos. Et tout cela gratuitement :-)

Répondre / Leave a Reply

Spam Protection by WP-SpamFree