Project

General

Profile

Scénario #29205

plantage du reconfigure après mise à jour de noyau

Added by Thierry Bertrand 10 months ago. Updated 9 months ago.

Status:
Nouveau
Priority:
Normal
Assigned To:
-
Category:
-
Target version:
-
Start date:
Due date:
% Done:

0%

Story points:
-
Velocity based estimate:

Related issues

Related to Distribution EOLE - Tâche #29272: Les modules et extra modules des anciens noyaux ne sont pas supprimés Fermé 11/15/2019

History

#1 Updated by Thierry Bertrand 10 months ago

Lors de Maj-Auto, il arrive que la suppression d'ancien noyau provoque ce type d'erreur :

Purge des fichiers de configuration de linux-modules-extra-4.15.0-52-generic (4.15.0-52.56) ...
Purge des fichiers de configuration de linux-image-4.15.0-52-generic (4.15.0-52.56) ...
rmdir: impossible de supprimer '/lib/modules/4.15.0-52-generic': Le dossier n'est pas vide

Le soucis c'est qu'apt génère une erreur qui remonte au reconfigure, qui plante...
Pire, sur un amon, le serveur se retrouve en mode openbar !

#2 Updated by Daniel Dehennin 9 months ago

Vous déployez un module par DKMS ou autre à tout hasard ?

#3 Updated by Daniel Dehennin 9 months ago

Je viens de l’avoir sur un scribe mais cela ne fait pas planter la commande reconfigure qui continue correctement :

-------------------------------------------
          Début de configuration
-------------------------------------------
-------------------------------------------
          Préparation pour reconfigure
-------------------------------------------
Restart Systemd service creoled  [  OK  ]
-------------------------------------------
          Gestion des paquets
-------------------------------------------
Suppression des paquets
Suppression des anciens noyaux et fichiers d'en-tête associés.
Action remove pour root
Lecture des listes de paquets…
Construction de l'arbre des dépendances…
Lecture des informations d'état…
Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires :
  linux-modules-4.15.0-68-generic linux-modules-4.15.0-69-generic
Veuillez utiliser « apt autoremove » pour les supprimer.
Les paquets suivants seront ENLEVÉS :
  linux-headers-4.15.0-69* linux-headers-4.15.0-69-generic* linux-image-4.15.0-69-generic* linux-modules-extra-4.15.0-69-generic*
0 mis à jour, 0 nouvellement installés, 4 à enlever et 0 non mis à jour.
Après cette opération, 267 Mo d'espace disque seront libérés.
(Lecture de la base de données... 214655 fichiers et répertoires déjà installés.)
Suppression de linux-headers-4.15.0-69-generic (4.15.0-69.78) ...
Suppression de linux-headers-4.15.0-69 (4.15.0-69.78) ...
Suppression de linux-modules-extra-4.15.0-69-generic (4.15.0-69.78) ...
Suppression de linux-image-4.15.0-69-generic (4.15.0-69.78) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-69-generic
/etc/kernel/postrm.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/eole.cfg'
Création du fichier de configuration GRUB…
Image Linux trouvée : /boot/vmlinuz-4.15.0-71-generic
Image mémoire initiale trouvée : /boot/initrd.img-4.15.0-71-generic
Image Linux trouvée : /boot/vmlinuz-4.15.0-70-generic
Image mémoire initiale trouvée : /boot/initrd.img-4.15.0-70-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
fait
(Lecture de la base de données... 180407 fichiers et répertoires déjà installés.)
Purge des fichiers de configuration de linux-modules-extra-4.15.0-69-generic (4.15.0-69.78) ...
Purge des fichiers de configuration de linux-image-4.15.0-69-generic (4.15.0-69.78) ...
rmdir: impossible de supprimer '/lib/modules/4.15.0-69-generic': Le dossier n'est pas vide
Installation des paquets
Vérification des paquets pour le conteneur root: eole-antivirus-pkg python-crontab eole-dhcp-pkg eole-fichier-primaire-pkg eole-fichier-common-pkg eole-web-pkg eole-bareoswebui-pkg eole-mysql-pkg eole-spamassassin-pkg eole-adminer-pkg eole-annuaire-pkg eole-courier-pkg eole-cups-pkg eole-proftpd-pkg eole-sympa-pkg eole-controle-vnc-pkg eole-exim-pkg eole-exim-auth-pkg eole-ejabberd-pkg eole-scribe-backend esbl-ocs-pkg eole-eoe-apps eole-eop-apps eole-websockify-pkg glpi glpi-plugin-ocsinventoryng roundcube-apps
Action install pour root
Pas de paquet pour l'action install
[…]

C’est une machine virtuelle qui n’a pas de module additionnelle.

Il est probable que cela soit dû à la non suppression du paquet linux-modules-4.15.0-69-generic.

#4 Updated by Daniel Dehennin 9 months ago

J’ai testé avec le patch suivant :

diff --git a/creole/fonctionseole.py b/creole/fonctionseole.py
index ec4e21c5..ca122389 100644
--- a/creole/fonctionseole.py
+++ b/creole/fonctionseole.py
@@ -145,6 +145,10 @@ def get_kernel_to_remove():
     to_keep = installed_kernels[-2:]
     # tous les headers installés
     installed_kernels.extend(get_version_filtered_pkgs(prefix='linux-headers'))
+    # tous les modules installés
+    installed_kernels.extend(get_version_filtered_pkgs(prefix='linux-modules'))
+    # tous les extra modules installés
+    installed_kernels.extend(get_version_filtered_pkgs(prefix='linux-modules-extra'))
     # le noyau courant
     to_keep.append('linux-image-{0}'.format(get_current_kernel()))
     # l'éventuel noyau personnalisé
@@ -154,7 +158,13 @@ def get_kernel_to_remove():
     # les headers correspondants aux noyaux à conserver
     headers_to_keep = [k.replace('image', 'headers') for k in to_keep]
     headers_to_keep.extend([h.replace('-generic', '') for h in headers_to_keep])
+    # les modules correspondants aux noyaux à conserver
+    modules_to_keep = [k.replace('image', 'modules') for k in to_keep]
+    # les extra modules correspondants aux noyaux à conserver
+    extra_modules_to_keep = [k.replace('image', 'modules-extra') for k in to_keep]
     to_keep.extend(headers_to_keep)
+    to_keep.extend(modules_to_keep)
+    to_keep.extend(extra_modules_to_keep)
     # on fait la différence
     to_remove = list(set(installed_kernels) - set(to_keep))
     return to_remove

J’ai réinstallé des vieux noyaux et modules et cela supprime bien tout, seulement cela n’empêche pas le message

[…]
Suppression de linux-modules-4.15.0-66-generic (4.15.0-66.75) ...
Suppression de linux-modules-4.15.0-68-generic (4.15.0-68.77) ...
Suppression de linux-modules-4.15.0-69-generic (4.15.0-69.78) ...
(Lecture de la base de données... 178630 fichiers et répertoires déjà installés.)
Purge des fichiers de configuration de linux-modules-4.15.0-66-generic (4.15.0-66.75) ...
dpkg: avertissement: lors de la suppression de linux-modules-4.15.0-66-generic, le répertoire « /lib/modules/4.15.0-66-generic » n'était pas vide, donc il n'a pas été supprimé
Purge des fichiers de configuration de linux-modules-extra-4.15.0-66-generic (4.15.0-66.75) ...
Purge des fichiers de configuration de linux-modules-extra-4.15.0-69-generic (4.15.0-69.78) ...
Purge des fichiers de configuration de linux-image-4.15.0-66-generic (4.15.0-66.75) ...
Purge des fichiers de configuration de linux-modules-4.15.0-68-generic (4.15.0-68.77) ...
Purge des fichiers de configuration de linux-modules-4.15.0-69-generic (4.15.0-69.78) ...
dpkg: avertissement: lors de la suppression de linux-modules-4.15.0-69-generic, le répertoire « /lib/modules/4.15.0-69-generic » n'était pas vide, donc il n'a pas été supprimé
Purge des fichiers de configuration de linux-image-4.15.0-69-generic (4.15.0-69.78) ...
Installation des paquets
[…]

Cela ne semble vraiment pas être la cause de plantage, APT considère que le répertoire devrait être vide et fait un rmdir dessus mais comme le paquet -modules-extra correspondant à la version n’est pas encore supprimé il ne peut pas. Le répertoire sera effectivement supprimé lors de la purge du paquet *-modules-extra*.

Je ne pense pas ce que cela soit la raison du plantage de votre reconfigure.

#5 Updated by Daniel Dehennin 9 months ago

Je confirme que cela ne doit pas être la raison du plantage, les scripts postrm utilisent bien un || true afin de ne pas faire planter le script si le rmdir ne fonctionne pas :

root@scribe:~# rgrep rmdir /var/lib/dpkg/info/linux-*.postrm
/var/lib/dpkg/info/linux-image-4.15.0-70-generic.postrm:    rmdir --ignore-fail-on-non-empty /usr/lib/linux/triggers
/var/lib/dpkg/info/linux-image-4.15.0-70-generic.postrm:    rmdir /lib/modules/$version || true
/var/lib/dpkg/info/linux-image-4.15.0-71-generic.postrm:    rmdir --ignore-fail-on-non-empty /usr/lib/linux/triggers
/var/lib/dpkg/info/linux-image-4.15.0-71-generic.postrm:    rmdir /lib/modules/$version || true

#6 Updated by Daniel Dehennin 9 months ago

  • Related to Tâche #29272: Les modules et extra modules des anciens noyaux ne sont pas supprimés added

#7 Updated by Daniel Dehennin 9 months ago

J’ai fait une tâche rapide pour la suppression des paquets non pris en compte #29272.

Also available in: Atom PDF