Restaurer une partition /boot sur Ubuntu avec filesystem chiffré

La partition /boot a été formatée accidentellement par l’utilisateur, le PC ne démarre plus.
Symptôme : grub se lance, mais ne trouve plus le nécessaire pour démarrer.

Message d’erreur :

error: file ‘/grub/i386-pc/normal.mod’ not found.

Et pour compliquer un peu les choses, le disque dur est chiffré (LUKS / dm-crypt).

Voici comment je m’en suis finalement sorti (tout ça à distance, pour ne pas simplifier non plus).

Démarrer sur une clé live-USB, avec la même version d’Ubuntu. En l’occurrence, il s’agissait d’Ubuntu 18.04 (en 64 bits). A noter qu’on peut accéder à distance à un Ubuntu démarré en live-USB : il suffit de l’activer dans les paramètres (item « Partages »), puis d’y accéder avec un client VNC.

Vérifier (avec l’application Disques) que c’est bien uniquement cette partition qui a été formatée. La reformater en ext4, et noter son UUID.

Ouvrir les partitions chiffrées, et faire le chroot, comme expliqué dans un article précédent. Attention au piège sur le fait d’utiliser le bon nom de device LUKS, en l’ouvrant en ligne de commande (c’est écrit dans l’article, mais je me suis fait avoir … une deuxième fois). Il m’a également fallu écrire un fichier /mnt/etc/resolv.conf pour avoir accès à Internet :

sudo mv /mnt/etc/resolv.conf /mnt/etc/resolv.conf.bak
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf

Puis se placer dans le chroot, et modifier /etc/fstab pour y mettre le nouvel UUID sur la ligne correspondant à /boot.

Lancer ls -al /lib/modules pour connaître la dernière version du kernel (dans mon cas, il s’agissait de 4.15.0-38-generic), puis :

apt install --reinstall linux-image-4.15.0-38-generic
update-initramfs -c -k all
mkdir /boot/grub
mkdir /boot/grub/fonts
update-grub
exit
sudo cp -ar /rofs/usr/lib/grub/i386-pc /mnt/boot/grub/
sudo cp /rofs/boot/grub/unicode.pf2 /mnt/boot/grub/
sudo cp /rofs/boot/grub/unicode.pf2 /mnt/boot/grub/fonts/
sudo umount /mnt/sys
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/run
sudo umount /mnt/boot

NB : le PC en question avait un BIOS classique, pas d’UEFI. Il est possible qu’il faille adapter un peu avec de l’UEFI.

Avec ces manipulations, le PC a pu redémarrer comme avant. Je n’ai mis que le minimum : pour faire plus propre, il aurait fallu également ajouter le binaire de memtest, le répertoire « locales » de grub etc.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *