Perte table des partitions, boot impossible

Hello,

Ce qui devait arriver lorsqu’on tripatouille et qu’on s’installe une distribution pour la tester tard le soir arriva, une erreur de débutant (set disklabel sous gparted), table des partitions écrasée, plus rien…

Je sors donc ‘Testdisk’ pour une récupération à chaud.

Il me retrouve toutes mes partitions.

Je vous explique l’avant/après, en espérant être clair.

L’avant, c’était un enchevètrement de partitions sur mon disque, que je met dans l’ordre physique (tel qu’on le verrait sous Gparted), pour plus de clarté :

[code]hda1, NTFS Windows

  • un espace non attribué -
    hda3, partition étendue
    hda8, Ext3, Suse (root)
    hda9, Ext3, Suse (home)
    hda5, Ext3, Debian (root)
    hda7, Ext3, Debian (home)
    hda6, swap
    hda4, FAT, données[/code]

Je voulais tester SimplyMEPIS, et en profiter au passage pour faire un peu de ménage dans les partitions. J’étend donc la partition étendue pour qu’elle prenne en compte l’espace vide qui la précéde (physiquement sur le disque), et créee quelque chose qui ressemble à ca :

[code]hda1, NTFS Windows
hda3, partition étendue
hda8, Ext3, Nouvelle partition (futur MEPIS root)
hda9, Ext3, Nouvelle partition (futur MEPIS home)

  • un petit espace non attribué, qui aurait du être comblé en agrandissant ma partition root debian
    hda5, Ext3, Debian (root)
    hda7, Ext3, Debian (home)
    hda6, swap
    hda4, FAT, données[/code]

C’est à ce moment la que me vient l’idée stupide de donner un label aux deux nouvelles partitions crées. (mes autres partitions ont des labels, pour m’y retrouver). J’utilise la fonction “set label disk”, sans réfléchir trop (il était tard), vous connaissez la suite…

Lorsque je lance “Testdisk”, il me retrouve toutes mes partitions, et même un peu trop ! entre les précédentes crées, les nouvelles, je ne sais plus quoi est quoi. Pour faire simple, je ne décide de restorer que les partitions importantes, à savoir hda1, hda5 (debian root), hda7 (debian home), le swap et la partition FAT (hda4). Je gicle donc au passage les autres partitions.
Petit problème : ma partition racine debian est reconnue comme partition primaire, et non plus logique. Par ailleurs, ma partition étendue a dégagé au passage. J’outrepasse ces problèmes, et la restore en tant que partition primaire, Testdisk me restore une partition primaire.

Lorsque je reboot, GRUB fait la gueule, je le ré-installe.

Avec un Live-CD, je vais modifier le fichier /etc/fstab, car depuis l’ordre des partitions à changé… Voici ce que j’ai désormais :

[code]Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 1537 12345921 7 HPFS/NTFS = WINDOWS
/dev/sda2 4160 4860 5630782+ 83 Linux = DEBIAN ROOT
/dev/sda3 4861 5891 8281507+ f W95 Ext’d (LBA)
/dev/sda4 5892 9729 30828735 c W95 FAT32 (LBA)
/dev/sda5 4861 5752 7164958+ 83 Linux = DEBIAN HOME
/dev/sda6 5753 5891 1116486 82 Linux swap / Solaris
[/code]

[Je suis sous le Live CD, mes partoch apparaissent en “sd” et non pas “hd”, je ne sais pas pourquoi].

Donc, fstab mis à jour :

proc /proc proc defaults 0 0 /dev/hda2 / ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1 /dev/hda5 /home ext3 nouser,defaults,atime,auto,rw,dev,exec,suid 0 2 /dev/hda4 /media/data vfat umask=002,iocharset=utf8,codepage=850,uid=1000,gid=100,auto,rw,user 0 0 /dev/Disque_Ext3 /media/grosdur vfat umask=002,iocharset=utf8,codepage=850,uid=1000,gid=100,auto,rw,user 0 0 #/dev/hda9 /mnt/osshome ext3 nouser,defaults,atime,auto,rw,dev,exec,suid 0 2 #/dev/hda8 /mnt/ossroot ext3 nouser,defaults,atime,auto,rw,dev,exec,suid 0 2 /dev/hda6 none swap sw 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,atime,noauto,rw,dev,exec,suid 0 0 /dev/fd0 /media/floppy0 auto user,atime,noauto,rw,dev,exec,suid 0 0 /dev/scsi/host0/bus0/target0/lun0/part1 /media/usb0 auto user,atime,noauto,rw,dev,exec,suid 0 0

Pourtant, lorsque je boot, j’ai un message d’erreur, que voici :

[code]Loading, please wait…
ohci1394: fw-host0: self ID received outside of bus reset sequence
kinit: name_to_dev_t(/dev/hda6)=hda6
kinit: trying to resume from /dev/hda6
kinit: no resume image, doing normal boot…
mount: Mounting /root/dev on /dev/static/dev failed: No such file or directory
mount: Mounting /sys on /root/sys failed: No such file or directory
mount: Mounting /proc on /root/proc failed: No such file or directory
Target filesystem doesn’t have /sbin/init

Busybox v1.1.3 Built-in shell (ash)
(initramfs)[/code]

Voila.

Indication : après avoir restoré la partition, Gparted semblait indiquer des problèmes, et lors d’une tentative de copie de partition (pour la sauvegarder sur un disque externe), il m’avait indiqué une erreur sur le “superblock”, et considérait d’ailleurs qu’il s’agissait d’une partition en Ext2 alors que c’est du Ext3.

EDIT : en lisant d’autres post j’ai retrouvé le message d’erreur alors affiché dans gparted :

[code]fsck.ext2: Bad magic number in super-block while trying to open /dev/sda5

The superblock could not be read or does not describe a correct ext2
filesystem. If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 [/code]
Dans le thread concerné, pas de solutions…

Voici ce que j’envisage à présent : relancer Testdisk, restaurer la partition en tant que partition logique, en la créant, et voir si ca va mieux.

Ou alors, créer une “bonne” partition Ext3, et ensuite faire une copie des fichiers de ma racine au sein de cette partition, au moyen d’un outil type “sleuthkit”, histoire de contourner ce problème de partition (il me semble que la partition restaurée est mauvaise, voir ce que j’expliquais au sujet du “superblock”).

Je commence à me faire à l’idée que cette partition est perdue, et qu’avec le home s’il est intact il y a peut être moyen de reconstruire mon installation sans rien perdre. Problème je sais pas trop comment procédé, surtout qu’ayant actuellement 4 partitions primaires (Win, Debian Root, partition étendue recrée par Testdisk pour le /home et le swap, partition FAT données), je ne peux plus créer de partitions.

Si vous avez des idées, merci de me tenir au courant !

PS : Debian Etch inside.

.

.

Tellmewhy, tu me redonnes espoir !

Je vais tenter de m’occuper de ca demain soir, mais c’est pas gagné.

J’ai lu avec intérêt ta documentation, elle explique en effet bien des choses ! Ca reste encore assez confus sur l’organisation en têtes/secteurs/octets, notamment sur les conventions de nommage. Juste pour être sûr que je me gourre pas, dans

Numéro Début Fin Type Système de fichiers Drapeaux 1 0,1,0 636,254,62 primaire fat32 amorce
je lis bien : partition 1 commence au cylindre 0, tête 1, secteur 0, et finit au cylindre 636, tête 254, secteur 62 ? Si je me base sur le fait que 1 cylindre est composé de 255 têtes de 63 secteurs, cela me parait logique (le cylindre 973 est donc “rempli”, quoi que pas tout à fait, il manque dans l’absolu une tête et un secteur :slightly_smiling:.

Je vais retenter une restauration (désolé pour l’anglicisme, je ne suis pas sûr qu’elles “mangent” les partitions) de mes partitions, en utilisant parted cette fois. La seule question que je me pose, c’est de savoir si je vais pouvoir trouver les bonnes partitions.

En effet comme tu l’indiques, il te propose parfois certaines partitions qui ne sont que des “ghosts” (tout comme testdisk). Comment savoir laquelle est la bonne ?

Sinon je pense avoir compris la différence entre les partitions physiques et logiques, c’est cette question des 63 secteurs en plus (une tête, quoi !) au début de la partition. Il serait donc possible avec parted, lorsqu’il me propose de récupérer ma partition racine, de refuser sa proposition et de spécifier moi même les secteurs, pour ré-intégrer ces 63 secteurs qui manquent pour en faire une partition logique.

Il reste toutefois un problème, c’est qu’il y a des espaces non attribués entre mes partitions, comme expliqué plus haut. La technique du “je stipule le premier cylindre puis chasse les partitions une à une à la queueleuleu” risque de ne pas marcher, puisqu’a un moment donné, je ne saurais plus quel est le premier cylindre exact de ma partition. Comme je n’ai pas pris le temps de noter les tailles exactes de mes paritions (ce que je ne manquerais pas de faire une fois tout cela finit), je sens qu’il va falloir aller à la pêche.

Mais on verra tout cela en chemin !
Merci pour les infos, je poste les news dès que j’en ai.

.

Petit déterrage de topic !

Bon, après une semaine de vacance et une de boulot monstre, je me suis remis à ce “léger” problème de partition.

Entre deux, j’ai retrouvé un vieux papier sur lequel j’avais noté mes partitions d’avant le crash, mais avec la taille ! (Parfois le bordel ça a du bon)

Ca donne ca :

hda1 11.7 windows rien 7.9 (vide) hda3 25.5 logique hda8 5.4 /racine SUSE hda9 6.8 /home SUSE hda5 5.4 /racine Debian hda7 6.8 /home Debian hda6 1.06 swap hda4 30.00 partition FAT

“Super!” me dis-je ! Je sors ma calculatrice, une belle feuille blanche et mon plus beau crayon, et puisque je sais que 1 cylindre contient 255 têtes de 63 secteurs, j’entreprends de convertir toutes ces valeurs (qui sont en Gibioctets) en secteurs.
Petit calcul foireux trouvé en tatonnant (j’aime pas les math) : MaTailleEnGB10241024*1024/512 (<- shame on me !)
Ex : 11.70 Gib = 24 536 678 secteurs.

En faisant ainsi pour toutes mes partitions, j’espérais pouvoir retrouver au secteur pret mes partitions.
Las ! Lorsque j’additionne tous ces résultats, je dépasse allègrement le nombre de secteurs total de mon disque (qui dispose de 9729 cylindres, soit 972925563 = 156 296 385 secteurs, alors qu’en additionnant j’en trouve 210 889 605 !).

Bon ceci dit je ne me faisais pas trop d’illusion sur le fait que la valeur en Gib que j’avais retrouvé soit juste, j’avais à l’époque récupéré ca simplement de manière graphique avec Gparted. Ca valait le coup de tester quand même !

J’essaye alors de “deviner” le cyclindre (et non plus secteur) de départ de la partition qui m’interesse, à savoir hda5.
En faisant grosso modo : cylindre de fin de hda1 + taille en Gib ramenée en secteurs ramenée en cyclindres des partitions se trouvant entre hda1 et hda5 (partitions que je ne récupère pas) = secteur de démarrage de hda5.
Ce qui me donne : 1536 + [20.1 Gib soit 42 152 755 secteurs (suivant le calcul plus haut) soit 2624 cyclindres (selon la formule du début)] = 4160.

La partition que j’avais tenté de récupérer (mais qui ne marche pas, cf premiers posts) démarre au cylindre… 4159.

Je me dis donc qu’elle n’est pas si mal ! Et j’en arrive dès lors à la conclusion que j’ai bien récupéré la partition, mais que seul le superblock est mauvais.
Par contre je ne m’explique toujours pas pourquoi dans Testdisk il me voit cette partition comme primaire alors qu’elle était logique.

Je vais donc tester avec “parted” selon la méthode expliquée (voir le lien plus haut), pour tenter de récupérer (ou recréer) une partition, logique, commençant au bloc 4159.

Puis je m’attaquerais au superblock.

Puis je jèterais mon PC par la fenètre.

La suite à venir…