TerminalDans 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.

AstuceUn 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

AstuceCette 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.

 

Catégories : Serveur

4 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.

Laisser un commentaire

Avatar placeholder

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