Voila que je me suis fait quelques sueurs sous Arch Linux! Cela faisait trois mois que je n'avais pas fait de mise à jour via pacman -Syyu
, donc je lance tranquillou, déjà aucun problème sur les signatures PGP des clés des mainteneurs de paquets. Souvent quand je laisse trainer les mises à jour, je dois d'abord ré-installer:
sudo pacman -S archlinux-keyring
Ma mise à jour de plus de 3GB ce passe bien, puis mise à jour du kernel-zen, et je vois un warning à la compilation durant le build de l'initramfs sur la compression "zstd" et des erreurs. Je me dis, bon aller Anthony, ça passe, on redémarre le système pour valider la mise à jour du système.
ERREUR, j'avais corrompu mon kernel, panique au rédémarrage, systemd ce lance mais ne trouve pas la partition chiffré, puis bloquage de /sysroot, root user bloqué, pas de terminal de secours rien. Le système était entièrement cassé! Impossible de le récupérer?
SYSTEM RESCUE
Bien sur que non, c'est du Arch Linux. Je connais une procédure:
- Booter sur l'iso USB d'Arch Linux comme SYSTEM RESCUE
- Ouvrir la partition chiffrée du système
- Monter les partitions /, /home et /boot
- Chrooter l'environnement
- Analyser les fichiers du système
- Faire des mises à jours
- Debugger le kernel, systemd (init démarrage), chercher les logs dans
journalctl
- Ré-installer si nécessaire en cas de corruption
systemd mkinitcpio kernel-zen
- Vérifier les parametres kernel et bootloader
En gros comment s'y prendre en règle générale.
Ce qui donne à partir de cette configuration de base d'arch install: Arch-LXqt-LUKS-lvm-btrfs-systemd-boot
Les lignes de commandes à partir de la clé USB iso Arch Linux:
On charge le clavier
loadkeys fr
On se connecte en wifi
iwctl
[iwd]# device list
[iwd]# station device scan
[iwd]# station device get-networks
[iwd]# station device connect SSID
On vérifie la partition du disque qui est chiffré
lsblk
On lance la commande pour ouvrir le container LUKS chiffré et atteindre le système de fichier
cryptsetup luksOpen --allow-discards /dev/nvme0n1p2 root
On monte le nom du volume (ici c'est du lvm chiffré)
mount /dev/mapper/vg-arch /mnt
On monte les subvolumes BTRFS
mount -o noatime,space_cache=v2,compress=zstd,ssd,subvol=@ /dev/mapper/vg-arch /mnt
mount -o noatime,space_cache=v2,compress=zstd,ssd,subvol=@home /dev/mapper/vg-arch /mnt/home
On monte /boot
mount /dev/nvme0n1p1 /mnt/boot
On vérifie que l'on a bien des fichiers système dans /mnt/ et mnt/boot que l'on va modifier
ls /mnt/
ls /mnt/boot
On chroot l'environnement
arch-chroot /mnt
VOILA Maintenant on est de nouveau sur notre système, on peut relancer les mises à jours, explorer les fichiers, chercher les erreurs et debugger
Mise à jours
pacman -Syyu
Ré-installation des paquets essentiels au démarrage
pacman -S systemd mkinitcpio linux-zen
Debugger le kernel, on relance la génération de l'initramfs
mkinitcpio -p linux-zen
ET Là erreur de build, il m'indique un problème avec sd-lvm2
dans le hooks. Le paquet était obsolète. On peut vérifier dans le wiki. =modif hooks lvm2.
Modif de mon hook, j'en profite pour mettre à jour btrfs également:
vim /etc/mkinitcpio.conf
HOOKS=(base systemd autodetect modconf kms keyboard sd-vconsole block sd-encrypt lvm2 btrfs filesystems)
Vérifier l'ordre des paramêtres, en particulier la prise en compte du clavier.
Installer lvm2
pacman -S lvm2
Relancer l'initramfs
mkinitcpio -p Linux-zen
Normalement il indique s'il y a des erreurs, warning et "build succefully" en cas de succès sur le kernel.
Enfin vérifier les paramètres du bootloader si rien n'a bougé, ou si vous devez mettre à jour, par exemple passer du kernel basic à kernel-zen au démarrage. exemple avec systemd-boot:
vim /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux-zen
initrd intel-ucode.img # ou amd-ucode
initrd /initramfs-linux-zen.img
options rd.luks.uuid=<UUID> root=/dev/mapper/vg-arch rootflags=subvol=@ rw
Vous pouvez quitter le SYSTEM RESCUE:
exit
umount -R /mnt
reboot
VOILA, notre kernel fonctionne de nouveau, désolé bien sur pour cette erreur pour ceux qui utilisent ma configuration et lvm qui était obsolète et donc cette modif à la mise à jour du système. C'est très rare de cassé sous Arch Linux le système et corrompre le kernel, en 11 ans, c'est la première fois que cela m'arrive, et c'est un des pires cas pour récupérer le système ou l'on doit booter sur un disk USB SYSTEM RESCUE, en l'occurrence un iso de Arch Linux et connaitre les commandes pour debugguer.