Ubuntu chiffré et /boot qui se remplit

C’est un problème récurrent sur toutes les machines que j’ai installées avec Ubuntu 16.04 et un filesystem chiffré.

Au bout de quelques mois, lors de l’installation de mises à jour, Ubuntu se plaint qu’il n’a plus d’espace disque :

Etat des lieux

Le message d’erreur ci-dessus porte à confusion, puisqu’il invite l’utilisateur à vider la corbeille, faire du ménage etc. Alors que c’est la partition /boot qui est pleine, pas celle qui contient les données utilisateur et anciens paquets.

Ce problème a été remonté il y a déjà bien longtemps à Canonical : https://bugs.launchpad.net/bugs/1357093 . Le bug est marqué comme « Fix released » en 16.04, c’est-à-dire que Canonical considère que c’est corrigé dans cette version d’Ubuntu, dans le paquet « unattended-upgrades » (qui permet d’installer automatiquement les mises à jour de sécurité critiques, en arrière-plan).

Effectivement unattended-upgrades fait maintenant du ménage de temps en temps, mais ça ne marche pas dans plusieurs cas :

  • si unattended-upgrades est désactivé (Il est activé par défaut. Dans les paramètres d’Ubuntu, c’est l’option « Lorsqu’il y a des mises à jour de sécurité » : c’est activé si elle vaut « télécharger et installer automatiquement »)
  • si des mises à jour sont installées manuellement (quand elles sont proposées par Ubuntu). Et c’est ce qui se passe la plupart du temps (puisque je donne la consigne de systématiquement installer les mises à jour proposées)

Donc le problème persiste. Et il se pose dès que /boot est dans une partition séparée : c’est le cas quand on chiffre le filesystem (avec l’option proposée par l’installeur d’Ubuntu, qui utilise LUKS+dm-crypt), mais aussi si on utilise LVM.

Et la conséquence est qu’il n’y a plus de nouvelles mises à jour installées, ce qui est sacrément problématique.

Solutions quand le problème se produit

Dans le bug sur launchpad, on voit diverses solutions de contournement quand le problème se produit :

Lancer un « sudo apt autoremove » règle le problème la plupart du temps.

… mais il arrive que apt soit carrément bloqué, et que cette commande ne fonctionne pas. Dans ce cas, j’utilise : https://git.launchpad.net/linux-purge/plain/usr/bin/linux-purge :

Et il faut souvent lancer :

Contournement pour que le problème ne se produise plus à l’avenir

La solution que j’ai adoptée consiste à lancer un « sudo apt autoremove » régulièrement, et automatiquement. C’est ce que j’ai fait dans le package https://launchpad.net/~mossroy/+archive/ubuntu/apt-autoremove-monthly.

C’est un paquet vraiment minimaliste, puisqu’il se contente de lancer cette commande une fois par mois, via anacron (qui est installé par défaut sur ubuntu desktop. S’il ne l’est pas, la commande est lancée par cron).

Pour l’installer :

Ce paquet se contente d’ajouter un tâche dans /etc/cron.monthly, qui lance la commande en question.

Clairement, ce n’est qu’un contournement « bourrin », qui ne supprime pas l’origine du problème.

D’autre part, cette commande apt autoremove supprime tous les paquets « orphelins ». C’est-à-dire les paquets qui ont été automatiquement installés par d’autres paquets (car il s’agissait de dépendances), et qui ne sont plus utiles maintenant (en général parce que les paquets qui en avaient besoin ont été supprimés depuis).

Bref, j’installe maintenant ça sur toutes les machines qui ont un filesystem chiffré, et le /boot ne semble plus se remplir.

NB : bonne nouvelle quand même : depuis quelques temps, j’ai remarqué que le message d’erreur avait été modifié, pour afficher quelque chose qui porte un peu moins à confusion :

NB 2 : Il semblerait qu’un nouveau correctif ait été mis en place pour ce problème dans la version 18.04, et qu’ils prévoient de le backporter en 16.04 : https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1357093/comments/129 (je suppose qu’il parle de https://bugs.launchpad.net/ubuntu/artful/+source/unattended-upgrades/+bug/1624644). Espérons que celui-ci résolve vraiment le problème, et rende mon contournement inutile.

Laisser un commentaire

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