L'original de cet article a été publié par Romsk sur les forums PC Astuces. Merci à lui de nous avoir autorisé à le reproduire ici.
Testdisk est un logiciel précieux que chacun devrait avoir en bibliothèque au cas où… (un grand bravo au passage à son développeur Christophe Grenier).
Pour l’avoir personnellement utilisé quelques fois il me semble qu'un pas à pas détaillé manque un peu, certaines manips pouvant vite se transformer en catastrophe. Aussi, pour compléter mes sujets sur les partitions disparues, le MBR et les secteurs de boot, il m’a semblé intéressant de détailler l’utilisation de ce logiciel qui s’avère parfaitement adapté à ces manips et de vous expliquer les différentes fenêtres et procédures à effectuer.
1ère notion à retenir = prudence… Testdisk manipule en effet les partitions, secteurs de boot, MBR, géométrie du disque dur (configuration CHS), et par là même toute erreur peut compliquer voire rendre impossible toute récupération de données ultérieures
2ème notion qui en découle = strictement aucun risque tant qu’on ne fait qu’explorer les partitions et le DD. Le danger vient de la fonction [ Write ] qu’il ne faut utiliser qu’en connaissance de cause (être sûr de ses manips)
3ème notion = logiciel facile d’utilisation : les seules touches à utiliser sont les flèches haut bas droite et gauche, la touche entrée ainsi que certaines touches du clavier (A, P, T, D,…) en fonction des options qui apparaissent à l’écran
4ème point = pour mieux comprendre les explications et explorer vos propres DD, téléchargez testdisk et ouvrez votre propre fenêtre de testdisk . Tout au long du topic les fenêtres de testdisk seront représentées en rouge.
Ouvrez une console (Konsole dans la barre de lancement rapide) et tapez testdisk
1) Au démarrage TestDisk explore en 2 ou 3 secondes les données du BIOS et/ou de l'OS (« please wait ») puis affiche les disques durs retrouvés sur le système ainsi que les unités externes et les clés USB :
Select a media (use Arrow keys, then press ENTER): Disk /dev/hdc - 708 MB / 675 MiB Disk /dev/sda - 120 GB / 111 GiB Disk /dev/sdb - 120 GB / 111 GiB [Proceed ] [ Quit ] Note: Disk capacity must be correctly detected for a successful recovery. If a disk listed above has incorrect size, check HD jumper settings, BIOS detection, and install the latest OS patches and disk drivers.
Les disques apparaissent sous forme Linux : les disques durs IDE sont /dev/hda (IDE 1 maître), /dev/hdb (IDE 1 esclave), /dev/hdc (IDE 2 maître), ou /dev/hdd (IDE 2 esclave). Les disques durs SATA commencent habituellement à /dev/hde ou /dev/sda. Les périphériques SCSI et USB commencent toujours à /dev/sda
Ici il y a 2 SATA (et/ou SCSI ou périphérique USB) et un DD IDE de 708 MB configuré en maître sur le port IDE secondaire.
le message en bas d’écran explique que la taille donnée par testdisk pour les DD doit parfaitement correspondre à la taille réelle des DD car dans le cas contraire la récupération ne pourra pas marcher.
Si cette taille diffère (par exemple un DD de 120 Go reconnu comme seulement 32 Go) il faut vérifier les paramètres de détection du DD dans le BIOS ainsi que le cavalier présent sur le DD. Si le disque dur est détecté à seulement 130 Go (alors qu’il en fait 160 ou 200), il faut vérifier qu’on ait bien le SP1 installé (ou SP2) et activer le mode LBA 48 bits dans la BdR .
Puis on explore le DD de son choix : par les flèches haut bas mettre en surbrillance le DD que l’on veut explorer, par les flèches droite gauche mettre en surbrillance [Proceed] pour scanner le DD en question, puis valider le choix en appuyant sur la touche Entrée.
2) S’ouvre alors une nouvelle fenêtre qui va permettre de choisir le type de table de partition que l’on possède :
Disk /dev/sda - 120 GB / 111 GiB Please select the partition table type, press ENTER when done.. [ Intel ] Intel/PC partition [ Mac ] Apple partition map [ None ] Non partioned media [ Sun ] Sun Solaris partition [ XBox ] XBox partition Note: Do NOT select 'None' for media with only a single partition. It's very rare for a drive to be 'Non-partitioned'.
Par les flèches haut bas sélectionner [Intel] (sauf exception) et appuyer sur Entrée : ceci vous amène dans la fenêtre de menu principal de Testdisk où figurent les différentes commandes et options :
Disk /dev/sda - 120 GB / 111 GiB - CHS 14593 255 63 [ Analyse ] Analyse les différentes partitions du DD et cherche des partitions perdues [ Advanced ] permet de récupérer et réparer les secteurs de boot des partitions [ Geometry ] modifier la géometrie du disque [ Options ] modifier les options [ MBR Code ] écrire le MBR de TestDisk sur le premier secteur du DD [ Delete ] effacer la table de partition du MBR [ Quit ] revenir à la sélection de DD Note: Correct disk geometry is required for a successful recovery. ‘Analyse’ process may give some warnings if it thinks the logical geometry is mismatched.
À noter dans cette fenêtre que Testdisk explore la géométrie du DD (ici 14593 cylindres, 255 têtes et 63 secteurs par piste), et en cas d'anomalie il y aura des messages d’alerte…
Explore la structure et l’arborescence des partitions du DD puis permet de rechercher d’éventuelles partitions perdues.
Disk /dev/sda - 120 GB / 111 GiB - CHS 14593 255 63 Current partition structure: Partition...........Start.............End...........Size in sectors 1 * FAT32........0..1..1....1010..254..63....16241652 [NO NAME] 2 P Linux.....1011..0..1....1023..254..63.......208845 [/boot] 3 E ext LBA..1024..0..1..14592..254..63..217985985 5 L Linux.....1024..1..1....3573..254..63....40965687 [md0] X extended..3574..0..1....4210..254..63....10233405 6 L Linux.....3574..1..1....4210..254..63....10233342 [md1] X extended..4211..0..1..14592..254..63..166786830 7 L Linux.....4211..1..1...14592..254..63..166786767 *=Primary bootable P=Primary L=Logical E=Extended D=Deleted [Proceed ] [ Save ]
Cette fenêtre affiche les caractéristiques des partitions :
A ce stade TestDisk a vérifié que chaque valeur est dans les limites autorisées, c'est à dire aucune valeur de secteur < 1, ni > au nombre de secteurs par tête. Les entrées de partition sont lues en utilisant le début logique et la taille logique exprimés en secteurs, et TestDisk vérifie que ces valeurs logiques correspondent bien aux informations stockées sous forme CHS. TestDisk vérifie également que la table des partitions ne comporte pas de partition se terminant après la fin du disque, et qu'aucune partition ne se chevauche.
Pour chaque partition, TestDisk lance quelques contrôles de base spécifiques au type de système de fichiers, il contrôle le secteur de boot, la présence du nombre magique (0xAA55) dans le MBR et chacune des partitions étendues. Cette phase est très rapide car les contrôles sont minimaux.
En appuyant sur [Proceed ] TestDisk va ensuite rechercher d’éventuelles partitions « perdues » sans se servir des résultats de l'étape précédente. Pour ce, il recherche notamment les adresses de début de partition possible, la présence d'une en-tête de système de fichiers (FAT, secteur d'initialisation NTFS,…).
Si une partition est découverte TestDisk l’ajoute à la liste des partitions existantes :
Disk /dev/sda - 120 GB / 111 GiB - CHS 14593 255 63 Partition.............Start............End............Size in sectors * FAT32............0..1..1....1010..254..63...16241652 [NO NAME] P Linux.........1011..0..1....1023..254..63......208845 [/boot] D Linux.........1024..1..1....3573..254..63...40965687 D Linux RAID..1024..1..1....3573..254..63...40965687 [md0] D Linux.........3574..1..1....4210..254..63...10233342 D Linux RAID..3574..1..1....4210..254..63...10233342 [md1] L Linux..........4211..1..1..14592..254..63..166786767 Structure: Ok. Use Up/Down Arrow keys to select partition. Use LEFT/RIGHT Arrow keys to CHANGE partition characteristics: *=Primary bootable P=Primary L=Logical E=Extended D=Deleted Keys A: add partition, L: load backup, T: change type, P: list files, ENTER: to continue
Là encore « *=Primary bootable P=Primary L=Logical E=Extended D=Deleted » ne sont pas des commandes mais des descriptifs du statut de chaque partition. On peut cependant les modifier (et on doit le faire lorsqu'on trouve des partitions perdues) en se positionnant sur la partition de son choix et en utilisant les flèches droite gauche (« D » permet d’effacer une partition indésirable ou que l’on pense erronée, mais on pourra toujours la récupérer par la suite en relançant testdisk car en réalité ça n’efface que le secteur de boot).
Par contre « Keys A: add partition, L: load backup, T: change type, P: list files » sont des commandes :
FAT32 0 1 1 1010 254 63 16241652 [NO NAME] Use right arrow to change directory, q to quit Directory / -rwxr-xr-x.....0...0...805306368 20-Jul-2005 10:35 PAGEFILE.SYS drwxr-xr-x.....0...0..............0 14-Feb-2005 22:41 WINDOWS -r-xr-xr-x......0...0.........4952 28-Aug-2001 15:00 Bootfont.bin -r-xr-xr-x......0...0.......251712 3-Aug-2004 22:59 NTLDR -r-xr-xr-x......0...0.........47564 3-Aug-2004 22:38 NTDETECT.COM -rwxr-xr-x.....0...0...........212 14-Feb-2005 22:51 BOOT.INI drwxr-xr-x.....0...0..............0 14-Feb-2005 22:47 Documents
Une fois les modifications (éventuelles) effectuées, on fait « entrée » et on revient à la fenêtre précédente :
Disk /dev/sda - 120 GB / 111 GiB - CHS 14593 255 63 Partition............Start.............End............Size in sectors 1* FAT32..........0..1..1....1010..254..63....16241652 [NO NAME] 2P Linux.......1011..0..1....1023..254..63.......208845 [/boot] 3E ext LBA...1024..0..1...14592..254..63..217985985 5L Linux.......1024..1..1....3573..254..63....40965687 [md0] 6L Linux.......3574..1..1....4210..254..63....10233342 [md1] 7L Linux.......4211..1..1...14592..254..63..166786767 [ Quit ] [Search! ] [ Write ] Return to main menu
Puis on appuie sur la touche entrée et on revient à la fenêtre précédente où il faudra confirmer les modifications par la touche « Write ».
A noter qu’en cas de mauvaise manipulation sur la partition système (modifier le statut bootable de la partition, supprimer la partition, supprimer son secteur de boot…), l’ordinateur pourrait ne pas redémarrer avec divers messages d’erreur du genre « hal.dll manquant ou endommagé,… ». Or dans ce cas précis une réparation via la console de récupération n’est pas garantie : d’où l’intérêt d’avoir testdisk version DOS sur disquette bootable pour « réparer » d’éventuelles erreurs via testdisk.
Permet de récupérer et réparer les secteurs de boot des partitions :
Disk /dev/sda - 120 GB / 111 GiB - CHS 14593 255 63 ...Partition...........Start.............End............Size in sectors 1* FAT32............0..1..1....1010..254..63....16241652 [NO NAME] 2P Linux.........1011..0..1....1023..254..63.......208845 [/boot] 3E ext LBA......1024..0..1...14592..254..63..217985985 5L Linux RAID..1024..1..1....3573..254..63....40965687 [md0] X extended.....3574..0..1....4210..254..63....10233405 6L Linux RAID..3574..1..1....4210..254..63....10233342 [md1] X extended.....4211..0..1...14592..254..63..166786830 7L Linux.........4211..1..1...14592..254..63..166786767 [ Type ] [ Boot ] [ Quit ] Boot sector recovery
Sélectionnez la partition que vous souhaitez modifier (flèche haut bas) et choisissez la commande à effectuer :
Disk /dev/sda - 120 GB / 111 GiB - CHS 14593 255 63 Partition............Start..............End..........Size in sectors 1 * FAT32........0..1..1....1010..254..63...16241652 [NO NAME] Boot sector OK Backup boot sector OK Sectors are identical. [ Quit ] [Rebuild BS][ Dump ] [Repair FAT] Return to Advanced menu
Dans cet exemple le secteur de boot et sa copie de sauvegarde ont tous les deux le statut « OK » et les secteurs sont identiques : il n’y a aucun problème il faut faire « Quit ».
Les options de commandes visibles sur la dernière ligne diffèrent selon la structure du secteur de boot :
Si on est pas sûr que testdisk ait trouvé la bonne FAT (fichiers retrouvés différents de ce qu’on attendait ou carrément absents), il faut taper « N(o) » et testdisk va alors chercher le « cluster root » puis proposer un « extrapolated boot sector ». Là encore attention à l’éventuel message warning… et « lister » les fichiers avant d’écrire ce nouveau secteur (« write »).
Ce menu permet de modifier les valeurs CHS lues par Testdisk lorsque des erreurs évidentes sont visibles (mais il n’affecte pas le DD lui même). attention toutefois car si après avoir modifié les valeurs de geométrie du disque on valide par « Write » mais qu'on s'est trompé dans les valeurs, on risque de ne plus pouvoir récupérer nos données par la suite : à n’utiliser donc que dans des circonstances très précises et avec beaucoup de précaution car ça peut interdire définitivement l’accès aux données récupérées.
Disk /dev/sda - 120 GB / 111 GiB - CHS 14593 255 63, sector size=512 Because these numbers change the way that TestDisk looks for partitions and calculates their sizes, it's important to have the correct disk geometry. PC partitionning programs often make partitions end on cylinder boundaries. A partition's CHS values are based on disk translations which make them different than its physical geometry. The most common CHS head values are: 255, 240 and sometimes 16. [ Cylinders ] [ Heads ] [ Sectors ] [Sector Size] [ Ok ] Done with changing geometry
Si la géométrie du DD ne correspond pas à celle qui a été utilisée lors de la création de la table de partition, on voit apparaître lors de l’analyse un message d’erreur du type : Bad sector count, Bad relative sector or Bad ending head. Dans ce cas il faut essayer de changer le “nombre De têtes” dans “geometry” jusqu’à ce que Testdisk retrouve toutes les partitions, en testant d’abord la valeur de 255 (et à défaut 240, voire 16, 32, 64 ou 128).
Habituellement pas utilisé
A n’utiliser que lorsque toutes les autres solutions ont échoué et qu’on n’arrive plus du tout à booter. Cette commande réécrit le secteur de boot du MBR et sa signature 0xAA55 (comme le ferait la commande fdisk /mbr) mais en écrivant un MBR « version Testdisk « ce nouveau MBR (version Testdisk) va rechercher lors du démarrage un quelconque secteur de boot dans la 1ère partition. Si échec un menu va s’afficher du type :
TestDisk 1234F:
Appuyer successivement sur les touches 1, 2, 3 et 4 : ceci indiquera au MBR qu’il doit essayer de booter sur n’importe quel secteur de boot qu’il pourra trouver respectivements dans les 1ère, 2ème, 3ème ou 4ème partition. Si on a la chance d’arriver enfin à booter il faudra ensuite reconstruire le MBR conformément à sa structure initiale (avant que les problèmes ne surviennent) : attention de ne pas se tromper pour ne pas risquer de perdre à nouveau sa table de partition…
Efface les 64 octets de la table de partition du MBR (en écrivant des zéros), mais sans toucher au secteur de boot du MBR ni à sa signature 0xAA55. A éviter… c’est en fait la commande opposée à MBRcode qui, elle, réécrit le MBR sans toucher aux 64 octets de la table de partition.
Si le secteur de boot est endommagé, les données ne sont plus accessibles. Windows affichera “The drive is not formatted, do you want to format it now ?” (Le volume n'est pas formaté, souhaitez-vous le formater maintenant ?)
Lancer TestDisk > sélectionner le DD à explorer > entrée > sélectionner « intel » > entrée > sélectionner « Analyse » > entrée > « Proceed » > entrée : souvent à ce stade on ne retrouve pas la partition perdue > entrée > « Search » > entrée : dans la nouvelle fenêtre qui apparaitra (après 10 à 20 minutes de scan) il faut vérifier le statut de chaque partition (*, P, L, E, D) et éventuellement modifier par les flèches droite gauche les erreurs visibles (notamment pour les partitions retrouvées qui ont souvent le statut « D ») > entrée > « Write » > entrée > confirmer par « Y ».
Pour chaque partition retrouvée, un message d’alerte peut s’afficher du genre « Partition sector doesn't have the endmark 0xAA55 » ou « Boot sector bad » :
5L FAT32.....383..1..1......3736..254..63.......53881947 Boot sector test_FAT : Partition sector doesn't have the endmark 0xAA55 Backup boot sector OK First sectors (Boot code and partition information) are not identical. Second sectors (cluster information) are not identical. Third sectors (Second part of boot code) are not identical.
il faut alors utiliser la fonction « Backup boot sector » (si la copie de sauvegarde est OK) ou « Rebuild BS » (s’il n’y a pas de copie de sauvegarde valide)…