Re: gpart , recuperation table de partition

Top Page

Reply to this message
Author: Olivier Allard-Jacquin
Date:  
To: Guilde Mailing list
Subject: Re: gpart , recuperation table de partition
    Bonjour Gauthier,

Gauthier DELERCE wrote:
> Bonsoir,
>
> Je tente de recuperer un disque dont la table des partitions a disparue.
>
> gpart est capable de redecouvrir les partitions ssi j'utilise l'option
> "-n s" (lecture secteurs par secteur), par contre gpart plante a cause
> d'une erreur disque avant la fin du scan.
> Il est donc impossible d'utiliser l'option -W pour reecrire la table ,
> et je ne sais comment utiliser les informations suivantes pour reecrir
> la table de partitions :
>
> Begin scan...
> Possible partition(DOS FAT), size(10mb), offset(0mb)
> type: 001(0x01)(Primary DOS with 12 bit FAT)
> size: 10mb #s(20739) s(63-20801)
> chs: (0/1/1)-(1/75/12)d (0/1/1)-(1/75/12)r
> hex: 00 01 01 00 01 4B 0C 01 3F 00 00 00 03 51 00 00
>
> Possible extended partition at offset(30mb)
>
> Possible partition(Windows NT/W2K FS), size(25970mb), offset(26000mb)
>      type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
>      size: 25970mb #s(53188064) s(53249615-106437678)
>      chs:  (1023/254/63)-(1023/254/63)d (3314/161/63)-(6625/111/61)r
>      hex:  00 FE FF FF 07 FE FF FF 4F 86 2C 03 E0 95 2B 03

>
> Possible partition(Windows NT/W2K FS), size(50317mb), offset(76318mb)
>      type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
>      size: 50317mb #s(103050800) s(156300479-259351278)
>      chs:  (1023/254/63)-(1023/254/63)d (9729/64/63)-(16143/221/61)r
>      hex:  00 FE FF FF 07 FE FF FF BF F4 50 09 30 6E 24 06

>
> *** Fatal error: dev(/dev/hdd): seek failure.
>
>
> On voit bien apparaitre les infos sur les partitions , en particulier
> les secteurs . Ces informations sont coherentes et correspondent au
> partitionnement existant.


    Personnellement, lors de mes différentes utilisation de gpart, je n'ai 
pas utilisé le mode de récupération automatique. En effet, certains 
fichiers (de Windows par exemple), peuvent tromper gpart parce qu'il 
contiennent eux-même du code décrivant un secteur d'amorce de partition. 
Par exemple, l'outil "fdisk" (ou son équivalent graphique sous 
NT/2K/XP/), car il en a besoin pour écrire les secteurs d'amorce.


    Comme écrit hier, je préfère utiliser la commande


gpart -v -f -l /tmp/gpart.txt /dev/hda

qui me créera un beau fichier de log en /tmp/gpart.txt. Puis après
j'utilise le "fdisk" Linux, MAIS EN MODE SECTEUR, ET NON PAS EN MODE
C/H/S. En effet, pour des DD de plus de 1024 cylindre (ceux de plus de
8Go par exemple), le mode C/H/S n'est pas utilisable, et peut même
amener a faire de grosses boulettes.

Voici le mode opératoire que j'applique :
- backup de l'actuel MBR : "dd if=/dev/hda of=/tmp/mbr-bad.bin bs=512
count=1"
- analyse du disque : "gpart -v -f -l /tmp/gpart.txt /dev/hda"
- "fdisk /dev/hda", en faisant bien attention d'utiliser le mode
"secteur" (touche "u"). Et écriture au fur et à mesure de la table de
partition. Par exemple, avec ton :

 > Possible partition(Windows NT/W2K FS), size(50317mb), offset(76318mb)
 >      type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
 >      size: 50317mb #s(103050800) s(156300479-259351278)
 >      chs:  (1023/254/63)-(1023/254/63)d (9729/64/63)-(16143/221/61)r
 >      hex:  00 FE FF FF 07 FE FF FF BF F4 50 09 30 6E 24 06


"103050800" est la taille de la partition (50317Mo)
"156300479" est le début de la partition (située vers 76318Mo du début
du disque)
"259351278" est la fin de la partition (76318Mo + 50317Mo = 126635Mo. Un
DD de 120Go, j'imagine que tu dois être assez vert... )

donc avec fdisk, tu recrées la partition en donnant le début à
"103050800", et la taille à "259351278"

    Évidement, il ne faut pas se tromper, et bien faire attention aux 
notions de partitions principales, étendues et virtuelles.


    Attention aussi : En recréant la partition étendue, les information sur 
les partitions virtuelles vont être supprimées. Donc tu doit 
IMPÉRATIVEMENT avoir la liste de TOUTES tes partitions avant de te 
lancer dans l'utilisation de fdisk !


    Tu dois donc continuer le scan de gpart jusqu'à la fin. Mais tu as des 
secteurs défectueux, donc tu es bloqué. Non en fait :
- Soit tu utilises l'option "-e" (jamais testé) :
<man gpart>
        -e     Do not skip disk read errors. If this option is given, 
and short disk  reads  or  general disk read errors (EIO) are 
encountered, gpart will exit. If not given, the program tries to continue.
</man gpart>


- Soit tu recommences le scan, mais après le problème des secteurs 
défectueux :
<man gpart>
        -k sectors
               Skip given number of sectors before the scan. Potentially 
useful if a partition is looked for at the end of a large disk.
</man gpart>


> La questions est donc : comment utiliser ces informations pour reecrire
> une table.
>
> Merci d'avance


    De rien, bon WE et bonne chance,


                Olivier


-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr/
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!