Aller au contenu

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

Terminal

Ce matin j'ai voulu migrer un vieux poste de travail Rocky Linux 8 vers AlmaLinux en utilisant le script de migration fourni par cette distribution. Une migration « à chaud » me semblait plus simple et plus rapide qu'une sauvegarde complète avec une réinstallation et une restauration.

Les messages affichés au fur et à mesure par le script indiquaient que tout se passait bien. J'ai redémarré la machine, et je me suis retrouvé face à l'invite du chargeur de démarrage :

grub>

Pas la peine de s'affoler. GRUB est plutôt bien fichu et permet de rectifier le tir « à chaud ». Il suffit de connaître une poignée de commandes pour l'utiliser en mode interactif. Et vu que cette opération semble faire peur à beaucoup de gens, je me suis dit qu'un petit article de blog pour démystifier la chose ne serait peut-être pas une mauvaise idée.

Dans un premier temps, nous allons afficher nos partitions :

grub> ls
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

GRUB et le clavier QWERTY

L'invite de commande de GRUB utilise un clavier américain QWERTY par défaut. Si vous n'avez pas l'habitude d'utiliser ce clavier, il va falloir avancer à tâtons en mode tentative et échec.

En langage tam-tam, le résultat de la commande ls ci-dessus signifie que j'ai un disque dur hd0 avec trois partitions msdos1 à msdos3. Pour l'instant je ne sais pas encore à quoi correspondent ces trois partitions. Mais je peux très bien jeter un œil à leur contenu :

grub> ls (hd0,msdos1)/
lost+found/ efi/ grub2/ loader/ vmlinuz-4.18.0-553.el8_10.x86_64 ...
grub> ls (hd0,msdos2)/
lost+found/ boot/ dev/ proc/ run/ sys/ etc/ root/ var/ usr/ ...

Ces infos un peu brutes de décoffrage me permettent déjà d'identifier ma partition /boot (hd0,msdos1) et ma partition principale (hd0,msdos2). Je vais donc indiquer à GRUB que j'ai pu identifier la partition sur laquelle se trouve le noyau :

grub> set root=(hd0,msdos1)

Partant de là, je vais indiquer à GRUB le noyau à charger. Ma partition /boot en contient plusieurs, et je choisis tout simplement le plus récent dans le lot. J'en profite également pour indiquer l'emplacement de la partition principale :

grub> linux /vmlinuz-4.18.0-553.54.1.el8_10.x86_64 root=/dev/sda2

Utilisez la complétion automatique

Pour un peu plus de confort, n'hésitez pas à utiliser la complétion automatique de GRUB. Elle vous permettra également d'afficher la liste des noyaux que vous pouvez charger.

La prochaine étape consiste à charger un disque mémoire initial. Veillez à sélectionner celui qui correspond à la version de votre noyau :

grub> initrd /initramfs-4.18-0-553.54.1.el8_10.x86_64.img

Il ne reste plus qu'à croiser les doigts et à lancer le démarrage :

grub> boot

Pour aller plus loin

N'hésitez pas à jeter un œil sur la documentation du Linux Professional Institute. C'est moi qui l'ai traduite. 🙂