Partition non-montable ?

J'avais un problème avec ma partition de stockage sur mon pc de bureau. Pourquoi ? Qu'avais je fait pour en arriver la ?

Ma configuration de disque :

root@localhost ~# fdisk -l

Disque /dev/sda: 82.3 Go, 82348277760 octets 255 heads, 63 sectors/track, 10011 cylinders Units = cylindres of 16065 * 512 = 8225280 bytes Disk identifier: 0x907c7daf

Périphérique Amorce Début Fin Blocs Id Système /dev/sda1 1 6374 51199123+ 7 HPFS/NTFS /dev/sda2 * 6503 10011 28186042+ 83 Linux /dev/sda3 6375 6502 1028160 82 Linux swap / Solaris

Les entrées de la table de partitions ne sont pas dans l'ordre du disque

Disque /dev/sdb: 120.0 Go, 120034123776 octets 255 heads, 63 sectors/track, 14593 cylinders Units = cylindres of 16065 * 512 = 8225280 bytes Disk identifier: 0x00035608

Périphérique Amorce Début Fin Blocs Id Système /dev/sdb1 1 14593 117218241 7 HPFS/NTFS

La réinstallation de Windows après l'installation de Linux m'avais comme d'habitude écrasé mon GRUB. Mais après plusieurs tests, impossible de récupérer un GRUB...

Ni une ni deux je me documente sur GRUB, je voit qu'il manque les 512 octets du stage1 sur un des disques (dans le MBR). Je recopie tant bien que mal ces 512 octets sur la partition que je pensait être la première bootée mais elle ne s'avère ne pas être la bonne ! Sans trop y réfléchir je recopie le stage1 sur tous les disques et à tous les débuts de partition (sda, sda1, sda2 , sdb, sdb1).

L'erreur, ou plutôt les deux, se situent sur les partitions sda2 et sdb1, la première erreur à supprimé le boot loader de windows et la seconde le BS (boot strap) ou secteur de boot de la partition. La partition windows est réparable assez facilement en exécutant la commande fixmbr dans une invite DOS, cependant je n'ai pas encore pu tester la manipulation sur cette configuration car je n'arrive pas à trouver le driver pour mon disque SCSI.

L'erreur la plus difficile à diagnostiquer est la seconde. Le secteur de boot est une partie extrêmement fragile de la partition ! La moindre mauvaise manipulation dans ce secteur ( soit 512 octets ) conduit à un total dysfonctionnement de la partition. Plus aucun moyen de la monter ni de la réparer à priori. L'utilitaire TestDisk, très puissant dans la restauration de données, nous dis que les deux secteurs BS ( celui que la partition utilise et celui de sauvegarde qui se situe en fin de partition (C'est le tout dernier secteur) ) sont OK mais qu'il sont différents et s'arrête là. A partir de ce moment là, sur nombre de forum c'est la MFT ( Master File Table ) qui est accusée. Les solutions de restaurations deviendraient limités et très cher ( solutions OnTrack ).

Je me penche un peu plus sur le contenu des premiers secteurs de la partition pour essayer de la réparer par moi même.

J'ai fait quelque chose de simple :

  1. Lire le premier secteur => les commandes à utiliser :
    • Pour savoir quelle partition on souhaite utiliser : fdisk -l
    • dd if=/dev/sdb1 of=sdb1 count=1
    • hexdump -C sdb1 OU hexdump -C sdb1 | less
  2. Ensuite je cherche à trouver des noms de fichiers pour vérifier que mes données sont toujours présentes, il suffit pour cela d'aller un peu plus loin dans la partition pour arriver sur la table d'allocation (MFT) :
    • dd if=/dev/sdb1 of=sdb1 count=5000
    • hexdump -C sdb1 | less
  3. Après avoir trouvé une excellente documentation sur les partitions windows (FAT et NTFS), je trouve les deux secteurs qui correspondent au BS :
    • dd if=/dev/sdb1 of=bs count=1
    • dd if=/dev/sdb1 of=bs_save skip=$ count=1 ( Le nombre 117218241 vient du résultat de la commande fdisk -l et correspond au nombre de block ( le calcul est bon car ( Units = cylindres of 16065 * 512 = 8225280 bytes ), on voit ici que la taille d'un secteur est de 512 octets ( il faudrait adapter le multiplicateur pour une taille de secteur de 256 => *4 ou à l'inverse taille secteur 2k => *(1/2) ).
    • Pour vérifier que les secteurs sont vraiment différents j'ai utiliser les commande diff et cmp ( diff bs bs_save ou cmp bs bs_save )
  4. Une fois que j'ai récupéré les deux BS et vu qu'ils étaient bien différents, j'ai procédé au remplacement du BS par la sauvegarde de celui-ci. ATTENTION ici plus le droit à l'erreur : une mauvaise manipulation et la partition devient illisible sans trop de possibilité pour la récupérer. J'ai opté pour la solution de recopier directement le dernier secteur sur le premier secteur de la partition. Il est surement possible de travailler avec les fichiers.
    • dd if=/dev/sdb1 of=/dev/sdb1 skip=$ count=1
  5. Après cette manipulation, une vérification du secteur BS (le premier) est plutôt conseillée. Chez moi pas de problème, la copie à réussie.

J'essaie de monter ma partition : mount -t ntfs /dev/sdb1 /media/donnees/ Et là magie (ou presque ;) ), elle se monte sans problème !

Une grande leçon de je_fait_à_l_arrache_on_verra_ce_qui_ce_passe_après_et_ça_marche_pas ! J'espère que ça pourra vous aider aussi !


Liens utiles pour un peu tout ce qui concerne la récupération de partitions et de données :

Le meilleur pour les informations sur la structure de NTFS

Page de l'outil TestDisk

Un autre imprudent 

Utilisation de PhotoRec

La documentation officielle Microsoft

GRUB

Utile pour apprendre à sauvegarder "brutalement" mais efficassement 

Réparation de disque

Ajouter un rétrolien

URL de rétrolien : http://sylvainlg.fr/blog/index.php?trackback/36

Haut de page