Administration système GNU/Linux
Chroot disque système à partir d'un live CD
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
Identification des périphériques de type bloc
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).