Migrer ou réparer un système GNU/Linux
Introduction
La séquence de démarrage d’un ordinateur est un processus complexe faisant intervenir de nombreux packages logiciels. Ils doivent fonctionner selon une séquence précise. Si un élément échoue, le PC est inutilisable et un autre support de démarrage devient nécessaire pour investiguer et réparer. Similairement, la migration d’un système — par exemple pour remplacer le disque dur — implique la reconstruction de la chaîne de démarrage.
Un bon disque d’amorçage (live CD) est un outil incontournable pour un propriétaire de PC. Dans ce billet, je vais proposer des scénarios justifiant le recours à un disque d’amorçage comme SystemRescueCD, ainsi que partager mes trucs pour être efficace lors d’une intervention.
Scénarios
Les situations nécessitant le démarrage à l’aide d’un disque d’amorçage sont nombreuses et vous prendront souvent par surprise!
- Redimensionner les partitions avec gparted;
- Restaurer une sauvegarde;
- Récupérer un système qui ne démarre plus suite à une mise à jour bâclée;
- Réinitialiser le mot de passe root.
- Balayer une partition avec
fdisk -cc -k
pour recenser les secteurs défectueux (badblocks); - Récupérer un fichier supprimé par erreur.
Recommendation de disque d’amorçage
J’ai toujours une copie de SystemRescueCD à la portée de la main. C’est une distribution GNU/Linux à garder sur une clé USB ou un CD. Elle contient une grande quantité des meilleurs outils pour l’administration de système et accéder à Internet.
Le CD d’installation de votre distribution GNU/Linux peut également servir en second ressort.
La séquence de démarrage
En résumé, lors du démarrage d’un système GNU/Linux, les logiciels suivants sont exécutés en chaîne.
- Le microprogramme de la machine, souvent un BIOS, démarre à partir de la ROM. Il cherche le premier média bootable et exécute le code situé dans le MBR.
- Le MBR (master boot record) ou la partition de démarrage d’un disque partitionné en GPT contient la phase 1 de Grub. Sa tâche consiste trouver la partition /boot du système et à charger la phase 2 de Grub.
- Les 512 octets du MBR ne suffisent plus pour contenir un bootloader moderne. Donc on a une phase 2 de Grub. Celle-ci va charger le noyau Linux et l’initramfs en mémoire.
- Le noyau Linux avec l’initramfs vont charger en mémoire les pilotes requis pour exploiter le matériel.
- Le noyau va exécuter le processus init — systemd, SysVinit ou autre.
- Init va démarrer les services, incluant un gestionnaire de session pour les utilisateurs.
- L’utilisateur s’authentifie, une session s’ouvre et son interface de choix est chargé, que ce soit un interpréteur de commande ou un environnement graphique.
Procédure de migration d’un système
Cette procédure peut être utilisée pour remplacer le disque dur ou bien récupérer une sauvegarde sans réinstaller le système d’exploitation et les programmes. Vous aurez besoin d’un disque d’amorçage tel que SystemRescueCD.
- Booter un disque d’amorçage;
- Partitionner et formater le nouveau disque dur (
cfdisk
etmke2fs
); - Monter l’ancien et le nouvel emplacement;
- Copier les données vers le nouvel emplacement;
rsync -avH --progress src/ dest
- Monter les systèmes de fichiers virtuels en bind. Ce petit one-liner est bon à savoir par cœur :remplacez
for f in sys proc dev; do mount -o bind /$f ${mountpoint}/$f; done
${mountpoint}
par le chemin du point de montage du système de fichier de destination; - Chrooter dans le nouvel emplacement :
chroot ${mountpoint}
- Installer Grub sur le nouveau disque de démarrage avec
grub-install /dev/sd?
; - Regénérer la config :
grub-mkconfig -o /boot/grub/grub.cfg
; - Éditer la table de partition avec les nouveaux LABELs ou UUID des disques.
vim /etc/fstab
- Sortir de l’environnement chroot et redémarrer le système.
Pour en apprendre plus
- How Grub boots de sysresccd.org.
- Arch Linux boot process de archlinux.org.
- Linux startup process de wikipedia.org.