Comment conserver 4 noyaux Linux par défaut / boot avant de les supprimer automatiquement

12

J'ai fait quelques recherches et j'ai constaté que le nettoyage automatique des noyaux était en cours /etc/kernel/postinst.d/apt-auto-removalet que le fichier indiquait:

# In the common case this results in two kernels saved (booted into the
# second-latest kernel, we install the latest kernel in an upgrade), but
# can save up to four. Kernel refers here to a distinct release, which can
# potentially be installed in multiple flavours counting as one kernel.

mais ce script est bien au-dessus de ma tête et je ne peux pas facilement trouver comment autocleaner autre chose que les 4 derniers noyaux.

Fabby
la source
Vous devez modifier le script à plusieurs endroits, il n'y a pas d'autre moyen. Si vous le souhaitez, vous pouvez déposer un rapport de bogue "wishlist" sur le aptpaquet pour permettre de personnaliser le nombre de noyaux.
fkraiem
2
Le «quatre» dans la partie que vous avez citée fait référence au cas inhabituel où «la version actuellement amorcée», «la version du noyau pour laquelle nous avons été appelés», «la dernière version du noyau» et «la deuxième version du noyau la plus récente» sont tous distincts, car toutes ces versions sont conservées. Dans des cas typiques, cependant, cela se résume à deux car "la version actuellement amorcée" et "la deuxième version du noyau la plus récente" sont les mêmes, et de même pour les deux autres.
fkraiem

Réponses:

12

Ce que cela signifie quand il dit "jusqu'à quatre", c'est que les versions en cours d'exécution, actuellement installées, les dernières et les précédentes peuvent toutes être différentes, ce qui entraîne la conservation automatique de quatre versions (avec un minimum de deux). Voir cette partie du code:

debkernels="$(echo "$latest_version
$installed_version
$running_version
$previous_version" | sort -u | sed -e '/^$/ d')"

Je pense que le moyen le plus simple de le faire pour sauver les noyaux plus anciens serait d'étendre le $previous_versionà une liste. Au lieu de:

previous_version="$(echo "$debverlist" | sed -n 2p)"

Faire:

previous_version="$(echo "$debverlist" | sed -n 2,4p)"
muru
la source
Oui, cela semble fonctionner. Il convient de noter que puisque le fichier fait partie du aptpackage, il pourrait être rétabli à celui par défaut lors de la aptmise à niveau.
fkraiem
@fkraiem où se trouve le fichier /etc, il s'agit donc probablement d'un fichier de configuration et les modifications devraient être conservées (ou, du moins, l'utilisateur sera interrogé à leur sujet)
muru
1
Oui, tous les fichiers sous /etcsont des fichiers de configuration, mais il semble que les utilisateurs se sentent souvent confus lorsque le message "conserver ou remplacer?" question surgit ...
fkraiem
1
Je ne serai pas confus ... @fkraiem
Fabby
apt se plaint toujours: The following packages were automatically installed and are no longer required: linux-headers-4.10.0-38 linux-headers-4.10.0-38-generic linux-image-4.10.0-38-generic linux-image-extra-4.10.0-38-generic linux-signed-image-4.10.0-38-generic Use 'sudo apt autoremove' to remove them. mais c'est un exécutable et je vais cesser de m'en inquiéter et j'ai adapté la question à la réponse. :-)
Fabby