MAJ importante Arch Install: lvm2

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:

  1. Booter sur l'iso USB d'Arch Linux comme SYSTEM RESCUE
  2. Ouvrir la partition chiffrée du système
  3. Monter les partitions /, /home et /boot
  4. Chrooter l'environnement
  5. Analyser les fichiers du système
  6. Faire des mises à jours
  7. Debugger le kernel, systemd (init démarrage), chercher les logs dans journalctl
  8. Ré-installer si nécessaire en cas de corruption systemd mkinitcpio kernel-zen
  9. 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.