Administration système GNU/Linux

Il arrive qu'au détour d'une erreur de manipulation, le système soit mis hors service ; il ne démarre plus ou il n'est plus possible de s'y connecter. Avant d'envisager des solutions radicales (réinstallation du système), on peut essayer de le récupérer à partir d'un live-CD. Voici la marche à suivre pour se retrouver dans l'environnement du système après avoir booté sur le live-CD.

Dans ce qui suit, on suppose que le disque système est /dev/sda et que la partition racine du système GNU/Linux est /dev/sda2 (partition qui contient /boot ; si ce n'est pas le cas, il faut aussi monter cette dernière).

1. On monte la partition racine du système :

mkdir /media/system
mount -t auto /dev/sda2 /media/system

2. Avant de « chrooter » cette partition, nous faisons en sorte de peupler comme il se doit les répertoires /dev, /proc et /sys de la future racine en y attachant le contenu des répertoires correspondants du système live :

cd /media/system/
mount --bind /dev dev
mount --bind /dev/pts dev/pts
mount -t proc none proc
mount -t sysfs none sys

3. Nous copions aussi dans la future racine les fichiers créés dynamiquement au boot dans /etc et qui vont notamment permettre d'accéder au réseau :

cd /media/system/etc
mv resolv.conf resolv.conf.orig
mv hosts hosts.orig
cp /etc/resolv.conf /etc/hosts .

4. On change la racine apparente du système :

chroot /media/system

5. On définit les variables d'environnement peu ou prou incontournables:

export LC_ALL=C
export HOME=/root

Dès lors, la racine apparente dans le shell est en réalité « /media/system » et si on met par exemple à jour les paquets via les commandes « aptitude update && aptitude safe-upgrade », le système mis à jour sera bien celui installé sur le disque et non celui présent sur le live CD. Idem, si l'on reconfigure grub ou le noyau GNU/Linux :

dpkg-reconfigure grub-pc
dpkg-reconfigure linux-image-4.5.0-2-amd64

Entre volumes LVM, partitions chiffrées et autres projections de périphériques, il est parfois difficile de comprendre sur quel disque ou partition se trouve un système de fichiers. La commande « lsblk » est alors d'un grand secours :

root@yoda:~# lsblk -p
NAME                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
/dev/sda                        8:0    0 698,7G  0 disk
├─/dev/sda1                     8:1    0   243M  0 part  /boot
├─/dev/sda2                     8:2    0     1K  0 part
└─/dev/sda5                     8:5    0 698,4G  0 part
  └─/dev/mapper/sda5_crypt    252:0    0 698,4G  0 crypt
    ├─/dev/mapper/yoda-root   252:1    0 690,4G  0 lvm   /
    └─/dev/mapper/yoda-swap_1 252:2    0     8G  0 lvm   [SWAP]
/dev/sr0                       11:0    1  1024M  0 rom

Sa seule faiblesse est de ne pas faire apparaitre les partitions logées dans la mémoire vive (les partitions de type tmpfs par exemple).