Annuler un changement de table de partition

Salut à tous,

J’ai voulu faire des changement de partitions sur une clef USB, et ai utilisé fdisk. En l’occurrence, voici les commandes utilisées :

repartir a zero : o créer une nouvelle partition : n puis p puis 1 puis accepter les réponses par défaut pour les deux options suivantes rendre amorçable : a puis 1 mettre en fat16 : t puis 6 appliquer les reglages et quitter fdisk: w

Perturbé par des événements extérieurs, j’ai commis une erreur impardonnable, du type exécuter fdsik sur /dev/sda au lieu de /dev/sdb. Du coup, la table de partition de mon disque dur interne est défoncée.

Par chance, et je ne sais comment c’est possible, mon ordinateur continue à tourner, et j’ai encore accès à toutes mes données. Du coup, j’en ai profité pour faire une copie de mon dossier /home, mais l’idéal resterait de pouvoir remettre ma table de partitions en place. Savez-vous s’il y a un moyen d’annuler mes conneries ?

Merci d’avance pour votre aide :slightly_smiling:
Duna

Si tu te souviens de ta table, tu peux la refaire directement. Je pense qu’il y a manière de la récupérer à partir du noyau, n’éteins pas ta machine je regarde…

Tu as dans cat /sys/block/sda/sda1/start et cat /sys/block/sda/sda1/end les débbuts et fin de la partition sda1, idem pour les autres. Tu recrées ta table et ça devrait être bon.

Mount devrait te rappeler le type de la partition

Génial !! Merci François \o/
Je ne sais juste pas comment différencier une partition primaire d’une secondaire. Il y a moyen ?

Il faut que tu fouilles dans /sys/block/sda/sda?, tu as start et size, chez moi le paramètre size est à 2 pour une partition étendue. Prend ton temps pour faire ta table, tu n’as droit qu’à un essai, après c’est testdisk (qui rattrapera ça probablement mais dans le doute…)

ATTENTION: end=start + size - 1

Ne te fais pas avoir avec le coup des poteaux et des intervalles.

Pour une étendue, tu as size qui vaut effectivement 2, mais end est égal au end de la toute dernière partition qui est dedans. Avec ça tu dois pouvoir tout refaire.

J’ai remis en place ce que j’ai pu (les partitions qui sont restées montées ^^). Le reste contenant des données sauvegardées autre part, et les recopier ne me coûtera pas grand chose en effort et/ou temps.

Lorsque j’ouvre GParted, il ne m’affiche plus aucune erreur. Je pense que c’est bon signe :slightly_smiling:

C’est parti, je tente de rebooter et vous tiens au courant.

La chance n’a rien à voir là-dedans. Tu as juste effacé la table de partition (principale, et les tables de partition étendue s’il y a une partition étendue) mais pas les données des partitions. Le noyau lit la table de partition une fois au démarrage ou lorsque le disque est détecté, il n’a plus besoin de le faire jusqu’à ce que le système soit arrêté et redémarré ou le disque déconnecté et reconnecté.

sda1 à sda4 sont des partitions primaires, sda5 et suivantes sont des partitions logiques. S’il y a une ou plusieurs partitions logiques, l’une des partitions primaires est une partition étendue. Pour retrouver laquelle, se baser sur les positions de début et fin des partitions logiques.

Il y a aussi les outils gpart et testdisk qui peuvent retrouver les partitions perdues, ainsi que le contenu de /proc/partitions qui contient la liste des disques, des partitions et leurs tailles.

Note : il ne faut surtout pas se rater en recréant la partition étendue et les partitions logiques, car sinon on risque d’écrire des tables de partition étendues en plein milieu des données d’une partition ! Les outils de gestion des partitions n’écrivent pas que dans le MBR.

Verdict : j’ai récupéré toutes mes partitions (sauf une sans importance). J’ai juste du passer un coup de super grub disk pour réinstaller le MBR (ceci ne venait cependant pas de ma maladresse avec fdisk, mais plutôt avec dd ^^)

Du coup, tout est fini bien qui finit bien \o/

Merci à toi François pour ton aide hyper rapide (et efficace).
Et merci Pascal pour ces éclaircissements. Du coup, je vais tenter de récupérer ma dernière partition avec ce que tu viens de préciser.