Partition boot remplie sur Debian 13

Ma partition boot s'est remplie. Une mise à jour avec un nouveau noyau n'a pas pu se faire correctement et quand j'essaye de démarrer, je me retrouve dans “grub rescue”…

error: file '/grub/i386-pc/bufio.mod' not found.
grub rescue>

J'ai booté sur une clé usb que j'avais sous la main (fedora workstation live).

À partir de là, je peux avoir un terminal complet, un clavier bien configuré (et pas un qwerty dans un terminal ultra limité de grub rescue…). L'objectif va être de nettoyer la partition grub mais aussi de chroot sur mon installation pour pouvoir relancer une mise à jour et réparer ce qui doit l'être.

$ sudo -i
# blkid
(partitions de la clé usb)
/dev/sda5: ... #partition principale chiffrée
/dev/sda1: ... #partition boot

(Note: On peut aussi utiliser lsblk ou fdisk pour voir les partitions.)

Bon, maintenant, faut les monter ces partitions. Je vais suivre les instructions de ce tutoriel.

# mkdir /rescue
 
# mount /dev/sda5 /rescue/
mount: /rescue: unknown filesystem type 'crypto_LUKS'
 
root@localhost-live:/rescue# cryptsetup luksOpen /dev/sda5 sda5_crypt
Enter passphrase for /dev/sda5: 
 
root@localhost-live:/rescue# ls -l /dev/mapper/
total 0
lrwxrwxrwx. 1 root root       7 Jun  5 08:07 betula--vg-root -> ../dm-1
lrwxrwxrwx. 1 root root       7 Jun  5 08:07 betula--vg-swap_1 -> ../dm-2
crw-------. 1 root root 10, 236 Jun  5 07:41 control
lrwxrwxrwx. 1 root root       7 Jun  5 08:07 data -> ../dm-0
 
root@localhost-live:/rescue# lsblk
NAME                    MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
loop0                     7:0    0   2.3G  1 loop  /run/rootfsbase
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  
  └─data                252:0    0 446.6G  0 crypt 
    ├─betula--vg-root   252:1    0 445.7G  0 lvm   
    └─betula--vg-swap_1 252:2    0   980M  0 lvm   
sdb                       8:16   1  14.6G  0 disk  
├─sdb1                    8:17   1   2.6G  0 part  /run/initramfs/live
└─sdb2                    8:18   1    30M  0 part  
sr0                      11:0    1  1024M  0 rom   
zram0                   251:0    0     8G  0 disk  [SWAP]
 
root@localhost-live:/rescue# mount -t ext4 -o noatime /dev/mapper/betula--vg-root /rescue
 
root@localhost-live:/rescue# ls /rescue/
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
 
root@localhost-live:/rescue# mount /dev/sda1 /rescue/boot/
 
root@localhost-live:/rescue# ls /rescue/boot/
config-6.1.0-27-amd64         config-6.12.90+deb13-amd64      lost+found                        System.map-6.12.86+deb13-amd64  vmlinuz-6.12.74+deb13+1-amd64
config-6.1.0-28-amd64         grub                            System.map-6.1.0-27-amd64         System.map-6.12.90+deb13-amd64  vmlinuz-6.12.86+deb13-amd64
config-6.12.74+deb13+1-amd64  initrd.img-6.12.86+deb13-amd64  System.map-6.1.0-28-amd64         vmlinuz-6.1.0-27-amd64          vmlinuz-6.12.90+deb13-amd64
config-6.12.86+deb13-amd64    initrd.img-6.12.90+deb13-amd64  System.map-6.12.74+deb13+1-amd64  vmlinuz-6.1.0-28-amd64
 
root@localhost-live:/boot# rm System.map-6.1.0-2*
root@localhost-live:/boot# rm System.map-6.12.74+deb13+1-amd64 
root@localhost-live:/boot# rm config-6.1.0-2*
root@localhost-live:/boot# rm config-6.12.74+deb13+1-amd64 
root@localhost-live:/boot# rm vmlinuz-6.1.0-2*
root@localhost-live:/boot# rm vmlinuz-6.12.74+deb13+1-amd64
 
root@localhost-live:/boot# df -h /rescue/boot/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       455M  268M  163M  63% /boot
 
root@localhost-live:/# mount -t proc proc /rescue/proc/
root@localhost-live:/# mount -t sysfs sys /rescue/sys/
root@localhost-live:/# mount -o bind /dev/ /rescue/dev/
root@localhost-live:/# mount -t devpts pts /rescue/dev/pts/
 
root@localhost-live:/# chroot /rescue/

Les commandes à copier/coller :

sudo -i
mkdir /rescue
cryptsetup luksOpen /dev/sda5 sda5_crypt
mount -t ext4 -o noatime /dev/mapper/betula--vg-root /rescue
mount /dev/sda1 /rescue/boot/; mount -t proc proc /rescue/proc/; mount -t sysfs sys /rescue/sys/; mount -o bind /dev/ /rescue/dev/; mount -t devpts pts /rescue/dev/pts/
chroot /rescue/

Maintenant on peut réparer !

# apt update
# apt upgrade
The following packages were automatically installed and are no longer required:
  libsdl-ttf2.0-0  libwoff1  linux-headers-6.12.74+deb13+1-amd64  linux-headers-6.12.74+deb13+1-common  linux-image-6.1.0-27-amd64  linux-image-6.12.74+deb13+1-amd64  linux-kbuild-6.12.74+deb13+1
Use 'apt autoremove' to remove them.
 
Upgrading:
  (...) linux-headers-amd64 (...)
 
Installing dependencies:
  linux-headers-6.12.90+deb13.1-amd64  linux-headers-6.12.90+deb13.1-common  linux-image-6.12.90+deb13.1-amd64  linux-kbuild-6.12.90+deb13.1
 
Suggested packages:
  linux-doc-6.12  debian-kernel-handbook
 
Summary:
  Upgrading: 16, Installing: 4, Removing: 0, Not Upgrading: 0
  1 not fully installed or removed.
  Download size: 492 MB
  Space needed: 187 MB / 63.2 GB available
   - in /boot:  146 MB / 171 MB available
 
root@localhost-live:/boot# apt autoremove
(...)
Summary:
  Upgrading: 0, Installing: 0, Removing: 11, Not Upgrading: 0
  1 not fully installed or removed.
  Freed space: 782 MB
(...)

Il faut réinstaller grub:

root@localhost-live:/# grub-install --target=i386-pc /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
 
root@localhost-live:/# update-grub
Generating grub configuration file ...
Found background image: .background_cache.png
Found linux image: /boot/vmlinuz-6.12.90+deb13.1-amd64
Found initrd image: /boot/initrd.img-6.12.90+deb13.1-amd64
Found linux image: /boot/vmlinuz-6.12.90+deb13-amd64
Found initrd image: /boot/initrd.img-6.12.90+deb13-amd64
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done

Après le redémarrage, je suis tombé sur une autre erreur.

Ça m'a rappelé ceci : utiliser_debian_live_pour_reparer_un_probleme_d_initramfs_kernel_panic

J'ai pu démarrer sur un ancien kernel et lancer :

# export LANG=fr_BE.utf8 
# export LC_ALL=fr_BE.utf8
# export LANGUAGE=fr_BE.utf8
# update-initramfs -u -k all

Problème résolu!

Je croyais que le problème était résolu parce que j'ai pu démarrer l'ordinateur mais le problème revient à intervalles réguliers. Je tente donc d'ajouter la solution de Tuxicoman pour réduire la taille des fichiers initrd dans boot. Je cite :

Créez un fichier /etc/initramfs-tools/conf.d/smallboot et écrivez dedans:

MODULES=dep
COMPRESS=xz

La première option réduit le nombre de modules embarqués dans le initrd

La deuxième compresse plus fort au dépend de la vitesse de boot

Puis relancez la création de l’image du noyau avec cette commande :

# export LANG=fr_BE.utf8 
# export LC_ALL=fr_BE.utf8
# export LANGUAGE=fr_BE.utf8
# update-initramfs -u -k all

Espérons que ça règle un peu le problème. Sinon je vais finir par faire une réinstallation complète et mettre une partition /boot de 2Go.:-\

Problème résolu ?

J'ai également rencontré un autre problème :

root@localhost-live:/# grub-install --target=i386-pc /dev/sda
Installing for i386-pc platform.
grub-install: error: cannot backup `/boot/grub/i386-pc/ehci.mod': Structure needs cleaning.

Si je comprends bien, il y a des erreurs dans les partitions et ça vaut la peine de nettoyer ça (voir askubuntu.com) :

root@localhost-live:/# 
exit
root@localhost-live:~# umount /rescue/boot 
root@localhost-live:~# e2fsck /dev/sda1
e2fsck 1.47.3 (8-Jul-2025)
/dev/sda1 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 108123, i_size is 16384, should be 12288.  Fix<y>? yes
Inode 108123, i_blocks is 34, should be 26.  Fix<y>? yes
Inode 108363, i_blocks is 36, should be 26.  Fix<y>? yes
Inode 108675, i_blocks is 32, should be 26.  Fix<y>? yes
Inode 108125, i_blocks is 116, should be 26.  Fix<y>? yes
Inode 108126, i_blocks is 60, should be 26.  Fix<y>? yes
Inode 108127, i_blocks is 58, should be 26.  Fix<y>? yes
Inode 108161, i_blocks is 236, should be 26.  Fix<y>? yes
Inode 108162, i_blocks is 292, should be 26.  Fix<y>? yes
Inode 108163, i_blocks is 346, should be 26.  Fix ('a' enables 'yes' to all) <y>? yes to all
Inode 108630, i_blocks is 120, should be 26.  Fix? yes
 
(...plein de trucs...)
 
Free blocks count wrong for group #60 (2348, counted=2359).
Fix? yes
 
Free blocks count wrong (166249, counted=167613).
Fix? yes
 
 
/dev/sda1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda1: 523/124440 files (22.2% non-contiguous), 331075/498688 blocks

Après ça, on remonte la partition, on chroot à nouveau et on réinstalle grub :

root@localhost-live:~# mount /dev/sda1 /rescue/boot/
 
root@localhost-live:~# chroot /rescue/
 
root@localhost-live:/# grub-install --target=i386-pc /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
 
root@localhost-live:/# update-grub
Generating grub configuration file ...
Found background image: .background_cache.png
Found linux image: /boot/vmlinuz-6.12.94+deb13-amd64
Found initrd image: /boot/initrd.img-6.12.94+deb13-amd64
Found linux image: /boot/vmlinuz-6.12.90+deb13.1-amd64
Found initrd image: /boot/initrd.img-6.12.90+deb13.1-amd64
Found linux image: /boot/vmlinuz-6.12.90+deb13-amd64
Found initrd image: /boot/initrd.img-6.12.90+deb13-amd64
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done

Ça semble mieux! Est-ce que c'était ça qui causait le problème initial ?8-o

Problème résolu ?

Sources qui m'ont aide