Table des matières
Utiliser Debian Live pour réparer un problème de kernel panic
Après une panne de courant, j'ai eu cette erreur :
J'ai trouvé cette solution : https://askubuntu.com/questions/1461061/zstd-compressed-data-is-corrupt-root-filesystem-requires-a-manual-fsck
J'ai téléchargé une Debian Live et je m'apprête à tenter de corriger le problème.
Tout d'abord, mettre le clavier en azerty-be comme expliqué sur le wiki de Debian :
$ sudo dpkg-reconfigure keyboard-configuration $ sudo service keyboard-setup restart #n'a pas suffit à passer le clavier en azerty-be $ sudo udevadm trigger --subsystem-match=input --action=change #ça a marché
Identifier la partition à monter
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 2.5G 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs /run/live/rootfs/filesystem.squashfs sda 8:0 0 447.1G 0 disk ├─sda1 8:1 0 487M 0 part ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 446.7G 0 part sdb 8:16 1 14.6G 0 disk ├─sdb1 8:17 1 3G 0 part /usr/lib/live/mount/medium │ /run/live/medium └─sdb2 8:18 1 4.7M 0 part sr0 11:0 1 1024M 0 rom
C'est bien /dev/sda5 qui est la partition principale.
Monter la partition principale
$ sudo mount /dev/sda5 /mnt mount: /mnt: unknown filesystem type 'crypto_LUKS'. dmesg(1) may have more information after failed mount system call.
Ah ben oui, c'est chiffré.
user@debian:/mnt$ sudo cryptsetup luksOpen /dev/sda5 disque Enter passphrase for /dev/sda5: $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 2.5G 1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs /run/live/rootfs/filesystem.squashfs sda 8:0 0 447.1G 0 disk ├─sda1 8:1 0 487M 0 part ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 446.7G 0 part └─disque 253:0 0 446.6G 0 crypt ├─betula--vg-root 253:1 0 445.7G 0 lvm └─betula--vg-swap_1 253:2 0 980M 0 lvm sdb 8:16 1 14.6G 0 disk ├─sdb1 8:17 1 3G 0 part /usr/lib/live/mount/medium │ /run/live/medium └─sdb2 8:18 1 4.7M 0 part sr0 11:0 1 1024M 0 rom $ ls /dev/mapper/ betula--vg-root betula--vg-swap_1 control disque $ sudo mount /dev/mapper/betula--vg-root /mnt/ user@debian:~$ ls /mnt/ bin boot dev etc home initrd.img initrd.img.old lib lib64 lost+found media mnt opt proc root run sbin snap srv sys tmp usr var vmlinuz vmlinuz.old
À partir de là, j'ai accès à mes données et à mon disque dur. J'ai des backups de toutes mes données importantes mais à partir de là, je peux au minimum récupérer mes configurations. Mais on va s'arranger pour tout réparer.
Chroot
$ sudo mount --bind /dev/ /mnt/dev/ $ sudo mount --bind /proc/ /mnt/proc/ $ sudo mount --bind /sys/ /mnt/sys/ $ sudo chroot /mnt/ root@debian:/#
On est dedans. C'est comme si j'étais sur mon ordinateur sans qu'il ait bloqué au boot.
Update initramfs
root@debian:/# update-initramfs -u perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.UTF-8" perl: warning: Falling back to the standard locale ("C"). are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
On quitte le chroot et on démonte les partitions :
root@debian:/# exit $ sudo umount /mnt/dev $ sudo umount /mnt/proc $ sudo umount /mnt/sys $ sudo umount /mnt/
Ce n'était que des warning, je ne pensais pas que ça puisse poser un problème. Mais après avoir quitté le chroot, démonté les partitions et redémarré j'ai toujours l'erreur de départ.
Donc on recommence… Quand on arrive à nouveau dans le chroot, on set les locales :
root@debian:/# export LANG=fr_BE.utf8 root@debian:/# export LC_ALL=fr_BE.utf8 root@debian:/# export LANGUAGE=fr_BE.utf8 root@debian:/# update-initramfs -u
Et là, on cherche ce qui a manqué… Quand on lance la commande update-initramfs
, ça met à jour un fichier dans /boot/
. On vérifie ce qu'il y a dedans.
root@debian:/# ls -al /boot/ total 8 drwxr-xr-x 2 root root 4096 26 sep 2024 . drwxr-xr-x 19 root root 4096 14 mar 20:38 ..
Il n'y a rien dedans… Et en fait, c'est normal. La partition de boot est /dev/sda1
et je ne l'ai pas montée. On sort du chroot, on vérifie :
$ sudo fdisk -l Disk /dev/sda: 447.13 GiB, 480103981056 bytes, 937703088 sectors Disk model: SanDisk SSD PLUS Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xaaa66d37 Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux /dev/sda2 1001470 937701375 936699906 446.7G 5 Extended /dev/sda5 1001472 937701375 936699904 446.7G 83 Linux
On monte /dev/sda1/
:
$ sudo mount /dev/sda1 /mnt/boot/ $ ls -al /mnt/boot/ total 144478 drwxr-xr-x 4 root root 1024 Mar 29 19:05 . drwxr-xr-x 19 root root 4096 Mar 14 19:38 .. -rw-r--r-- 1 root root 259624 Nov 1 04:23 config-6.1.0-27-amd64 -rw-r--r-- 1 root root 259624 Nov 22 22:27 config-6.1.0-28-amd64 drwxr-xr-x 5 root root 1024 Jan 2 12:02 grub -rw-r--r-- 1 root root 64437178 Nov 20 18:50 initrd.img-6.1.0-27-amd64 -rw-r--r-- 1 root root 66017731 Mar 29 19:05 initrd.img-6.1.0-28-amd64 drwx------ 2 root root 12288 Sep 26 2024 lost+found -rw-r--r-- 1 root root 83 Nov 1 04:23 System.map-6.1.0-27-amd64 -rw-r--r-- 1 root root 83 Nov 22 22:27 System.map-6.1.0-28-amd64 -rw-r--r-- 1 root root 8189888 Nov 1 04:23 vmlinuz-6.1.0-27-amd64 -rw-r--r-- 1 root root 8177600 Nov 22 22:27 vmlinuz-6.1.0-28-amd64
Ah ben voilà, là il y a des trucs. On retourne dans le chroot :
$ sudo chroot /mnt/ root@debian:/# update-initramfs -u update-initramfs: Generating /boot/initrd.img-6.1.0-28-amd64 cryptsetup: WARNING: target 'disque' not found in /etc/crypttab
Cette fois, il génère bien un fichier (initrd.img-6.1.0-28-amd64
) et ça prend un peu de temps (~30 secondes?). On teste un redémarrage.
J'ai eu une autre erreur au redémarrage…
J'ai ensuite démarré sur le kernel précédent (6.1.0-27) et j'ai relancé la commande :
$ sudo update-initramfs -u update-initramfs: Generating /boot/initrd.img-6.1.0-28-amd64