Réparation
du système
de fichiers (ext2 et ext3)
(Écrit en orthographe recommandée. Voir note en bas de page)
Lors du démarrage, après un arrêt brutal du système, un message vous informe que une (ou plusieurs) partitions n'ont pas été démontées proprement et qu'un check forcé est effectué (pour les utilisateurs de Windows, ça peut faire penser à un scandisk en mode texte).
Normalement, tout se passe
bien et les conséquences sont juste une perte de temps.
N.B.
Pour éviter ces inconvénients, l'utilisation de
systèmes de fichiers journalisés (ext3, reiserfs,...)
est une bonne idée.
Mais parfois, le système de fichiers d'une (ou plusieurs) partition est trop endommagé pour pouvoir être monté (vous aurez un message d'erreur du style "Too many filesystems mounted " --> Trop de systèmes de fichiers montés" ou "Can't read superblock" --> "Impossible de lire le superbloc"
Les conséquences sont évidentes : vous ne pouvez plus monter la (ou les ) partition endommagée et vous ne pouvez donc plus lire, écrire, sauvegarder les données et programmes qui y sont.
Parfois même, c'est la partition racine (ou une partition indispensable au démarrage) qui est endommagée et dans ce cas-là c'est pire puisque le système ne peut même plus démarrer, même pas en mode failsafe...
Bref, vous êtes pas mal embêté :-( Je suis bien placé pour le savoir, je suis passé par là moi aussi.
Je vais donc vous indiquer les manoeuvres que j'ai utilisées : avec un peu de chance, elles fonctionneront chez vous et il y aura plus de peur que de mal (je vous rappelle que c'est sur un système de fichiers ext2fs ou ext3fs). N'oubliez tout de même pas qu'il est prudent de faire des sauvegardes régulières de vos données (vous en faites, n'est-ce pas?) et que je ne vous garantis rien du tout, à part que sur mon PC, ça a toujours fonctionné et que je n'ai jamais perdu ni données, ni programmes.
Avec quel système allez-vous intervenir ?
Votre système habituel démarre. C'est le cas si le système de fichiers de la partition racine (et des partitions non indispensables au démarrage) n'est pas abimé. Vous interviendrez en mode texte, dans une console ou un émulateur de terminal.
Votre système habituel ne démarre pas. Vous devez alors démarrer sur un système de secours, c'est-à-dire un autre Linux que celui qui est sur la partition abimée : ce peut être sur une disquette comme Tomsrtbt, un CD style Demolinux, Knoppix, le CD d'installation de votre distribution (souvent il suffit de taper "rescue" au démarrage) ou une autre distribution qui serait installée sur votre ordinateur.
Comment procéder ?
Très bonne question ! Je
connais deux moyens, qui arriveront au même point, à savoir le montage
et la réparation de la partition en question :
(peu importe si c'est du ext2fs ou du extfs, vu que c'est pratiquement la même chose). Le programme vous demandera surement de confirmer chaque action (le choix par défaut étant "yes" (Y/n), il suffit d'appuyer sur la touche "Entrée". Comme ça peut être fastidieux et très long, vous pouvez rajouter l'option -y qui répond "Yes" à toutes les questions :
e2fsck -y /dev/hdb6
Petit rappel : pour interrompre le check, il faut faire CTRL + C
Souvent, ça se passe bien ;-)
Mais parfois, ça se passe mal :'-(
Le programme vous informe qu'il ne peut pas réparer, car il ne peut pas lire ce qu'on appelle le superbloc qui contient des informations vitales sur le système de fichiers. Le superbloc est abimé et donc e2fsck ne peut plus rien faire pour votre système de fichiers. Heureusement, des copies du superbloc sont réparties sur le système de fichiers (vous avez eu peur, hein ?). Il vous faudra les indiquer à e2fsck car il ne peut pas les trouver automatiquement. Étant organisés par groupes de blocs de 8192 blocs (par défaut), il vous faudra lancer la commande e2fsck en lui spécifiant de ne pas utiliser le premier superbloc qui se trouve au bloc 1 puisque celui-ci est abimé, mais d'utiliser le suivant qui se trouve au bloc 1+8192=8193.
On lancera donc la commande suivante :
e2fsck -f -b 8193
/dev/hdb6
(mais à tous les coups, ça ne
marchera pas avec la valeur qui est donnée par défaut dans le
man [8192+1] et il faudra utiliser 32768+1; voir les explications au n°
2)
et il y a deux possibilités :
Un message d'erreur... Dans ce cas, il faut essayer le superbloc suivant 1+8192=8193 et ainsi de suite, la formule étant 1+n.8192 (ou alors changer la taille du groupe de blocs : voir plus bas)
Ça marche ! Des messages "Pass1... Pass2..." s'affichent. Là aussi, si vous voulez répondre "Yes" à toutes les questions, rajoutez l'option -y :
e2fsck -f -y -b 8193 /dev/hdb6
"Qu'est-ce que c'est que ce truc ?" pensez-vous.
En fait, il y a de
fortes chances (si on peut dire) que ça ne marche pas avec les blocs
8193, 16385,... mais avec le bloc 32769. En effet, 8192 est la valeur
par défaut, mais ce n'est pas obligatoirement celle de VOTRE système de
fichiers. Il me semble qu'habituellement, c'est plutôt le quadruple,
c'est-à-dire 32768. Vous pouvez le vérifier avec le programme dumpe2fs
/dev/hdb6 qui vous affichera des informations sur le système de
fichiers. Cherchez une ligne qui commence par "Blocks per group": vous
y
trouverez la valeur qu'il vous faut... sauf que ça ne fonctionnera pas
si le premier superbloc est abimé (décidément, ce n'est pas votre jour
de chance !).
Sinon, on peut aussi essayer avec mk2fs -n /dev/hdb6 (NE SOURTOUT PAS
OUBLIER le * -n * sinon vous formateriez votre partition :-((
Vous devriez avoir une réponse qui ressemble à ça :
Archive du superbloc stockée sur les blocs :
32768, 98304, 163840,
229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
soit vous l'aviez déjà fait avant la panne et vous avez noté cette valeur en sécurité avec votre table des partitions (vous l'avez fait ?), vos disquettes de démarrage (vous en avez ?),...
soit vous allez faire cette recherche sur une autre partition en ext2fs ou ext3fsde votre ordinateur, en espérant qu'il en reste une intacte et que les valeurs sont identiques.
En supposant que la valeur est bien 32768, vous essayerez avec 32769
e2fsck -f -y -b 32769 /dev/hdb6
Si ça ne marche pas, vous
essayerez avec 1+n.32768
Avec un peu de chance,
vous vous en sortirez avec une belle frayeur et une histoire
fantastique à raconter à vos petits enfants... Dernièrement, il m'a
fallu essayer le quatrième superbloc avant de réussir : les trois
premiers étaient abimés. Une solution serait d'écrire un script qui
teste les superblocs les uns après les autres jusqu'à trouver le bon,
mais je ne suis pas assez calé dans ce domaine: si le coeur vous en
dit...
Bon courage.
Parfois, il y a des problèmes avec ext3fs lorsque le journal est abimé. Quel est le rôle de ce journal ? Il sert notamment à éviter le check au démarrage après un arrêt brutal et donc un démarrage plus rapide. J'ai eu une fois un problème au démarrage, car bien qu'ayant suivi la procédure décrite au-dessus, mon système se bloquait pendant le démarrage. J'avais un "kernel panic" à cause d'un "Ext3-fs: invalide journal inode. Mount: error 22 mounting ext3 flags kernel panic: No init found. Try passing init=option to kernel"
(A FINIR)
désolé;-)
N.B. L'Académie
française a approuvé
à l'unanimité un certain nombre de rectifications.
Ces rectifications sont désormais inscrites dans les programmes du
ministère français de l'éducation nationale (BO n°5 du 12 avril 2007).
Pour en savoir plus http://www.orthographe-recommandee.info/
Attention ! Ces rectifications ne sont PAS de simples tolérances, mais
fixent la NOUVELLE orthographe de certains mots.