Attention, ce billet se traine depuis plus de 3 mois. Les informations qu'il contient ne sont peut-être plus à jour.
Sortir d'un /boot débordant
Rédigé par 2 commentaires
/ /Vous avez déjà souffert devant un /boot plein ? Oui, je le sais. C'est arrivé à tout le monde. Pas la peine de se cacher.
Fallait passer LVM ou Btfrs, vous me direz. J'entends bien. Des fois, les planètes s'alignent mal et faut faire avec. Je vous propose d'utiliser une solution radicale pour vous en sortir : supprimer la partition /boot pour la remplacer par un répertoire /boot à la racine.
1. Faire une sauvegarde
On va toucher à ce qui permet à votre serveur de démarrer. Faire une sauvegarde semble être une excellente idée.
2. Sauvegarder /boot
On va commencer par mettre de côté le contenu de la partition /boot :
root@ubuntu:/ mkdir /boot_bkp && cp -R /boot/* /boot_bkp/
On s'en servira plus tard.
3. Commenter le fstab
Comme on en n'a plus besoin, on va dégager l'entrée de /boot dans le /etc/fstab. Les lignes de conf ci-dessous sont des exemples, retenez seulement que les lignes contenant /boot doivent avoir un # devant.
root@ubuntu:/home/user# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda3 during installation
UUID=392d55fd-d4e5-4a67-8834-5d29c7toto42 / ext4 noatime,errors=remount-ro 0 1
# /boot was on /dev/sda2 during installation
#UUID=1b7533ec-96c2-4eef-9eac-b117c0toto42 /boot ext4 noatime 0 2
# /home was on /dev/sda5 during installation
UUID=7545673f-5c08-4201-9e30-f56d32toto42 /home ext4 noatime 0 2
# swap was on /dev/sda4 during installation
UUID=9ad39928-283d-43d6-8ee5-98e296toto42 none swap sw 0
De cette façon, la partition ne sera plus montée en cas de redémarrage.
4. Démonter la partition
On va maintenant umount /boot :
root@ubuntu:/home/user# umount /boot
On peut vérifier la disparition de l'ancienne partition avec un simple grep :
root@ubuntu:/home/user# mount | grep boot
Si quelque chose apparaît, c'est que vous n'avez pas démonté la partition. Pensez à sortir de /boot sous peine de vous voir lire un truc du genre « blabla is too busy ! ».
5. Refaire un /boot à la racine
On va maintenant se servir du /boot_bkp créé plus tôt :
root@ubuntu:/home/user# mkdir /boot && cp -R /boot_bkp/* /boot
Ainsi, on se retrouve avec un /boot inutile mais à sa place.
6. Réinstallation de grub
On va lancer la procédure d'installation de grub sur votre disque comme s'il n’était plus là :
root@ubuntu:/home/user# grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
L'installation de grub prend quelques secondes et n'est pas très bavarde. Vous pouvez ajouter l'option -v si vous êtes curieux.
À ce moment précis, tout est en ordre. Vous devriez pouvoir relancer votre machine et mamailler vos kernels comme bon vous semble. J'ajoute tout de même une dernière étape, sait-on jamais ?
7. Mettre à jour grub
On n'est jamais assez prudent, on va donc mettre à jour grub :
root@ubuntu:/home/user# update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.0-47-generic
Found initrd image: /boot/initrd.img-5.4.0-47-generic
Found linux image: /boot/vmlinuz-5.4.0-45-generic
Found initrd image: /boot/initrd.img-5.4.0-45-generic
done
Et voilà ! On se retrouve avec un /boot placé à la racine, avec les répertoire grub/ contenant le grub.cfg qui va bien et tout le reste.
Vous n'avez plus qu'à redémarrer, après avoir fait des backups.