Récupérer un système CentOS qui ne démarre plus

Récupération systèmeAujourd’hui, j’ai installé CentOS 7 en software RAID 5 sur un HP Proliant muni de quatre disques durs, et j’ai réussi à rendre mon système inutilisable en faisant une erreur dans la configuration du chargeur de démarrage. Pour l’anecdote, le fichier /etc/default/grub comporte une série d’options relatives à la grappe RAID, et un petit démon en moi tenait absolument à savoir si ces options étaient réellement indispensables.

GRUB_CMDLINE_LINUX="rd.md.uuid=16cf0747:ff424ef7:2d4a4be5:abeca5bb \
                    rd.md.uuid=23279930:daa818f6:e7002b9b:9255a52c \
                    rd.md.uuid=ba3c8e6b:45d2781e:9c57935f:60098517 \
                    nomodeset \
                    quiet \
                    vga=791"

Réponse brève : oui, elles le sont. Il suffit de les supprimer pour que le système bloque très tôt au démarrage. Cela faisait longtemps que je ne m’étais pas tiré dans le pied de manière aussi magistrale.

Mon installation était fraîche, c’était donc plus simple de tout refaire. Le problème, c’est que la grappe RAID a mis une éternité à faire sa synchronisation initiale, et je ne voulais pas passer un après-midi à tourner les pouces. Il fallait donc récupérer le système.

J’avais une clé USB d’installation de Slackware64 14.1 sous la main, et je me suis dit que ça tombait bien. Slackware 14.1 utilise un kernel de la série 3.10.x tout comme CentOS 7, ce qui me permettait d’effectuer un chroot.

J’ai donc démarré dessus (boot: huge.s vga=791), j’ai choisi ma disposition clavier et je me suis connecté en tant que root pour avoir un shell minimaliste.

La première chose à faire, c’est d’identifier mes grappes de disques. Lorsque j’effectue une installation, j’ai l’habitude de créer une partition /boot, une partition swap et une partition principale. Le hic avec les assemblages multi-disques, c’est que je ne sais plus qu’est-ce qui correspond à quoi. Évidemment, rien n’empêche de les monter l’un après l’autre pour voir ce qu’ils contiennent, mais c’est là où je me rends compte que c’était une bonne idée d’étiqueter mes grappes de disques pendant l’installation.

# cd /dev/disk/by-label/
# ls -l root
lrwxrwxrwx. 1 root root 11  3 mai   10:33 root -> ../../md127
# ls -l boot
lrwxrwxrwx. 1 root root 11  3 mai   10:33 boot -> ../../md125
# ls -l swap
lrwxrwxrwx. 1 root root 11  3 mai   10:33 swap -> ../../md126

Maintenant que les disques sont identifiés, je peux les monter. Mon environnement comporte un point de montage /mnt prédéfini, c’est là où je vais monter le système.

Pour commencer, je monte la partition principale.

# mount /dev/md127 /mnt

Ensuite, je monte la partition /boot.


# mount /dev/md125 /mnt/boot

Je lie les systèmes de fichiers /proc, /dev et /sys du système de restauration et du système installé.

# mount --bind /proc /mnt/proc
# mount --bind /dev /mnt/dev
# mount --bind /sys /mnt/sys

À partir de là, je peux chrooter dans mon système CentOS.

# chroot /mnt /bin/bash

J’effectue les modifications nécessaires, en l’occurrence la reconfiguration de GRUB. Une fois que j’ai terminé, je reviens vers le système de récupération.

# exit

Je démonte un par un les système de fichiers montés.

# umount /mnt/sys
# umount /mnt/proc
# umount /mnt/dev
# umount /mnt/boot
# umount /mnt

Il ne me reste plus qu’à redémarrer.

# reboot

Notez en passant que je peux très bien faire l’économie du démontage manuel des partitions, étant donné que l’arrêt du système de récupération se charge du démontage propre des systèmes de fichiers.

J’aurais très bien pu me servir d’une clé USB d’installation de CentOS. Dans ce cas, j’aurais opté pour Troubleshooting > Rescue a CentOS Linux system, et au démarrage j’aurais choisi l’option 3) Skip to shell. Dans la configuration par défaut, le clavier de la console est en QWERTY américain, ce que l’on peut corriger grâce à la commande loadkeys.

# loadkeys fr (ch-fr)

L’installateur de CentOS comporte déjà deux points de montage /mnt/install et /mnt/sysimage. On va donc devoir créer un point de montage distinct /mnt/hd avant de monter le système.

Ce contenu a été publié dans CentOS, Documentation Microlinux, Slackware, avec comme mot(s)-clé(s) , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *