web-dev-qa-db-fra.com

Pourquoi une erreur update-initramfs se produit-elle lors de la suppression d'un noyau par dpkg?

J'ai obtenu le résultat suivant lors de la suppression d'un noyau par dpkg --purge:

Suppression de linux-headers-3.13.0-112-generic (3.13.0-112.159) ... 
 Suppression de linux-image-extra-3.13.0-112-generic (3.13.0-112.159) .. . 
 run-parts: exécute /etc/kernel/postinst.d/apt-auto-removal 3.13.0-112-generic /boot/vmlinuz-3.13.0-112-generic
run -parts: exécution de /etc/kernel/postinst.d/initramfs-tools 3.13.0-112-generic /boot/vmlinuz-3.13.0-112-generic
update-initramfs: Génération/boot/initrd. img-3.13.0-112-generic 
 W: TMPDIR est monté noexec, ne mettra pas en cache les scripts d'exécution. 
 
 gzip: stdout: Il ne reste plus d'espace sur le périphérique 
 E: échec de mkinitramfs cpio 141 gzip 1 
 Update-initramfs: échec de /boot/initrd.img-3.13.0-112-generic avec 1. 
 Éléments d'exécution:/etc/kernel /postinst.d/initramfs-tools quitté avec le code retour 1 
 dpkg: paquet de traitement des erreurs linux-image-extra-3.13.0-112-generic (--purge): 
 sous-processus installé après -memoval script a renvoyé le statut d'erreur de sortie 1 
 Suppression de linux-image-3.13.0-112-generic (3.13.0-112.159 ) ... 
 Examen de /etc/kernel/postrm.d. 
 Run-parts: exécution de /etc/kernel/postrm.d/initramfs-tools 3.13.0-112-generic/boot /vmlinuz-3.13.0-112-generic[.____.aserupdate-initramfs: Suppression de /boot/initrd.img-3.13.0-112-generic[.____._revrun-parts: exécution de/etc/kernel/postrm .d/zz-update-grub 3.13.0-112-generic /boot/vmlinuz-3.13.0-112-generic[.____.HERGénération du fichier de configuration grub ... 
 Avertissement: définition de GRUB_TIMEOUT en tant que Une valeur différente de zéro lorsque GRUB_HIDDEN_TIMEOUT est définie n'est plus prise en charge. 
 Image linux trouvée: /boot/vmlinuz-4.4.0-71-generic[.____. Faire de cette image une image: /boot/initrd.img- 4.4.0-71-generic 
 Image linux trouvée: /boot/vmlinuz-4.4.0-67-generic[.____. PrinterFound initial image: /boot/initrd.img-4.4.0-67- generic 
 Image linux trouvée: /boot/vmlinuz-4.4.0-66-generic
Found initrd image: /boot/initrd.img-4.4.0-66-generic
. Image de linux trouvée: /boot/vmlinuz-4.4.0-64-generic
Found initrd image: /boot/initrd.img-4.4.0-64-generic
.Found linux i mage: /boot/vmlinuz-3.13.0-115-generic[.____. Page_Infound image initiale: /boot/initrd.img-3.13.0-115-generic[.____. Faire une image linux:/boot/vmlinuz -3.13.0-113-generic 
 Trouvé l'image initrd: /boot/initrd.img-3.13.0-113-generic
.found memtest86 + image: /memtest86+.elf
Found memtest86 + image: /memtest86+.bin
 Aucun groupe de volumes trouvé 
 terminé 
 Purge des fichiers de configuration pour linux-image-3.13.0-112-generic (3.13.0-112.159). .. 
 Examen de /etc/kernel/postrm.d. 
 Run-parts: exécution de /etc/kernel/postrm.d/initramfs-tools 3.13.0-112-generic/boot/vmlinuz -3.13.0-112-generic 
 Run-parts: exécution de /etc/kernel/postrm.d/zz-update-grub 3.13.0-112-generic /boot/vmlinuz-3.13.0-112- generic 
 Des erreurs sont survenues lors du traitement: 
 linux-image-extra-3.13.0-112-generic

Pourquoi manque-t-il d'espace même en cas de purge? Ce n'est pas un problème d'inode dans ce cas.

Remarque: Il y a d'autres questions sur lesquelles une erreur survient lors de dpkg --configure ou lors de l'installation d'un noyau. Il est plus compréhensible que le système manque alors d’espace disque, mais dans ce cas, je purge un noyau - un paquet linux-image-extra pour qu’il soit spécifique - par dpkg. Il n'y a pas de problème de dépendance dans ce cas. Par exemple, dans celui-ci , une solution pourrait consister à purger les packages du noyau directement par dpkg, mais le problème de cette question génère une erreur.

7
jarno

Lors de la purge d'un paquet linux-image-extra, des scripts de post-installation sont exécutés, car le paquet linux-image principal de cette version du noyau reste peut-être dans le système: sa taille diminuera à la suite de ce processus. Toutefois, l'ancien fichier initrd.img n'est pas supprimé dans "/ boot" et le nouveau fichier est créé à côté de celui-ci dans "/ boot" au cours de ce processus. Vous risquez donc de manquer d'espace.

Le correctif pourrait consister à créer le nouveau fichier initrg.img dans une partition différente avant de remplacer l'ancien par celui-ci dans update-initramfs. Donc, le script update-initramfs devrait être corrigé.

Une solution de contournement consisterait à supprimer le fichier /boot/initrd.img versionné respectif avant d'exécuter dpkg --purge pour le paquet linux-image-extra. Cela pourrait également être fait par Sudo update-initramfs -d -k 3.13.0-112-generic dans ce cas, car le noyau que je supprimais était "3.13.0-112-generic".

5
jarno