Dans nos deux précédents articles, nous avons vu en détail le lancement d’une console de secours sur une machine locale ou un serveur dédié. Dans le cas d’une panne bénigne comme par exemple une coquille dans un fichier de configuration, je pourrais tout simplement monter la partition correspondante, éditer le fichier qui pose problème, démonter la partition et redémarrer. Or, dans certains cas, les choses se compliquent un peu, et la réparation cohérente du système endommagé nécessite que je l’utilise. C’est le fameux problème de la poule et de l’œuf.
Voici quelques cas de figure courants :
- Effectuer un downgrade d’un paquet problématique
- Réinitialiser un mot de passe oublié
- Réinstaller le chargeur de démarrage
- Reconstruire le disque mémoire initial (
initrd
)
La commande chroot
(change root) permet de changer le répertoire racine vers un nouvel emplacement.
Démarrez la console de secours :
La première chose à faire, c’est d’identifier les différentes partitions. Dans l’exemple ci-dessous, le système à dépanner est constitué d’une partition principale et d’une partition /boot
:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sda 8:0 0 931,5G 0 disk
├─sda1 8:1 0 500M 0 part
├─sda2 8:2 0 927G 0 part
└─sda3 8:3 0 4G 0 part [SWAP]
Je vais utiliser le point de montage /mnt
pour rendre mon système accessible :
# mount -v /dev/sda2 /mnt/ mount: /dev/sda2 mounted on /mnt. # mount -v /dev/sda1 /mnt/boot/ mount: /dev/sda1 mounted on /mnt/boot.
Avant d’effectuer le grand saut, je vais lier les systèmes de fichiers virtuels /proc
, /dev
et /sys
de mon environnement de secours à mon système installé :
# mount -v -t proc proc /mnt/proc/ mount: proc mounted on /mnt/proc. # mount -v -t sysfs sys /mnt/sys/ mount: sys mounted on /mnt/sys. # mount -v -o bind /dev /mnt/dev/ mount: /dev bound on /mnt/dev. # mount -v -t devpts pts /mnt/dev/pts/ mount: pts mounted on /mnt/dev/pts.
Un système de fichiers virtuel est créé « à la volée » par le système lors du démarrage. Une fois que le système de fichiers est éteint, il n’en reste pas la moindre trace sur le disque dur.
À présent, nous pouvons basculer vers le système installé. Notez au passage que nous spécifions l’interpréteur de commandes en argument :
# chroot /mnt /bin/bash
À partir de là, je peux procéder aux opérations de maintenance de mon système défaillant. Une fois que mon intervention est terminée, je quitte le système installé pour revenir dans le système de secours :
# exit
Je démonte une à une les partitions du système installé, dans l’ordre inverse du montage :
# umount -v /mnt/dev/pts/ umount: /mnt/dev/pts/ unmounted # umount -v /mnt/dev/ umount: /mnt/dev/ unmounted # umount -v /mnt/sys/ umount: /mnt/sys/ unmounted # umount -v /mnt/proc/ umount: /mnt/proc/ unmounted # umount -v /mnt/boot/ umount: /mnt/boot/ unmounted # umount -v /mnt/ umount: /mnt/ unmounted
Cette dernière opération peut s’effectuer de manière beaucoup plus simple grâce à l’option -R
de la commande umount
. Un grand merci à l’utilisateur Marmotte pour la combine :
# umount -Rv /mnt umount: /mnt/boot unmounted umount: /mnt/proc unmounted umount: /mnt/sys unmounted umount: /mnt/dev/pts unmounted umount: /mnt/dev unmounted umount: /mnt unmounted
À partir de là, je peux arrêter la console de secours.
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
5 commentaires
Marmotte · 19 octobre 2022 à 16 h 19 min
Petite astuce pour le umount : -R (recursif) 😉
kikinovak · 19 octobre 2022 à 17 h 00 min
Je ne connaissais pas l’option. Un exemple concret à quoi cela ressemble si on l’applique au cas de figure ci-dessus ?
Marmotte · 20 octobre 2022 à 9 h 06 min
Ça ne révolutionne rien, mais c’est plus rapide et surtout ça évite les erreurs en cas d’oubli d’un point de montage quelque part dans l’arborescence.
Voilà un exemple de ce que ça donne :
# umount -v -R /mnt
umount: /mnt/boot unmounted
umount: /mnt/proc unmounted
umount: /mnt/sys unmounted
umount: /mnt/dev/pts unmounted
umount: /mnt/dev unmounted
umount: /mnt unmounted
kikinovak · 20 octobre 2022 à 15 h 45 min
Merci beaucoup ! J’ai ajouté l’astuce dans le texte.
sirchamallow · 5 janvier 2023 à 17 h 22 min
De tout les tutos que j’ai chercher pour faire la manipulation, c’est celui-ci qui est le plus clair.
Dans mon cas, il manquait juste la partition chiffré (mon disque était chiffré) et ensuite j’ai pu faire tout le reste.