Comment supprimer en toute sécurité les anciennes versions du noyau dans CentOS 7?

15

Je pourrais rencontrer des symptômes étranges résultant de noyaux concurrents dans CentOS 7. Alors, comment puis-je supprimer en toute sécurité les anciens noyaux? Et comment savoir quel noyau est le plus récent?

Vous trouverez ci-dessous la sortie du terminal que j'obtiens au moment de la recherche sur le serveur en question. Notez que j'ai essayé le nettoyage de package mais il laisse les mêmes 2 noyaux:

Les instructions de ce didacticiel indiquent que la sortie des deux commandes suivantes doit correspondre, mais vous pouvez voir qu'elles ne correspondent pas, même après un redémarrage:

[root@localhost ~]# rpm -qa kernel |sort -V |tail -n 1
kernel-3.10.0-229.el7.x86_64
[root@localhost ~]# uname -r
3.10.0-229.14.1.el7.x86_64

Les commandes restantes confirment qu'il existe deux noyaux et illustrent les tentatives de suppression de l'ancien.

[root@localhost ~]# cd /usr/src/kernels
[root@localhost kernels]# ls -al
total 16
drwxr-xr-x.  4 root root 4096 Oct  2 12:55 .
drwxr-xr-x.  4 root root 4096 Oct  2 13:15 ..
drwxr-xr-x. 22 root root 4096 Oct  2 12:55 3.10.0-229.14.1.el7.x86_64
drwxr-xr-x. 22 root root 4096 Oct  2 12:35 3.10.0-229.el7.x86_64
[root@localhost kernels]# rpm -q kernel
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
[root@localhost kernels]# package-cleanup --oldkernels=1
Loaded plugins: fastestmirror
Usage: 
    package-cleanup: helps find problems in the rpmdb of system and correct them

    usage: package-cleanup --problems or --leaves or --orphans or --oldkernels
Command line error: --oldkernels option does not take a value
[root@localhost kernels]# package-cleanup --oldkernels
Loaded plugins: fastestmirror
No old kernels to remove
[root@localhost kernels]# rpm -q kernel
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
[root@localhost kernels]# 

J'ai également ouvert /etc/yum.confet défini installonly_limit=1, mais cela a entraîné une erreur d'une yum updatecommande suivante disant que 1 est en dehors de la plage de valeurs acceptables pour installonly_limit.

Je suppose que 3.10.0-229.14.1.el7.x86_64c'est le plus récent, mais comment puis-je le savoir? De plus, les options de démarrage semblent offrir plusieurs noyaux parmi lesquels choisir. Et les possibilités de confusion s'aggravent lorsque le système démarre automatiquement à partir du premier noyau de la liste des options.

Quelqu'un peut-il expliquer comment cela fonctionne, et en particulier, comment supprimer en toute sécurité les anciens noyaux afin que la version du noyau puisse être éliminée en tant que cause possible de symptômes étranges? Je veux m'assurer que le noyau le plus récent est le seul qui puisse jamais fonctionner, quelle que soit la façon dont le système est redémarré.

CodeMed
la source
Sortir par la porte donc je ne peux pas écrire une réponse complète pour le moment. J'essaierai de revenir plus tard. yum-utils le faisait auparavant (je ne sais pas si c'est toujours le cas). if-not-true-then-false.com/2012/…
0xSheepdog
@ 0xSheepdog Oui, j'utilise ces commandes d'un didacticiel similaire, mais le serveur CentOS 7 ne le permettra pas installonly_limit=1. Je reçois des symptômes amusants qui pourraient résulter de deux versions du noyau, donc je voudrais avoir une seule version, si possible, ou au moins avoir une explication définitive des raisons pour lesquelles il n'est pas possible d'avoir moins de 2 versions, si dans ce n'est pas possible.
CodeMed
2
Je suggérerais de changer vos critères de "conservation" en "noyau démarré" par opposition à simplement le plus récent - pour diverses raisons, vous ne pouvez pas démarrer avec le noyau le plus récent.
Jeff Schaller

Réponses:

23

package-cleanup --oldkernels --count=1 supprimer tous les noyaux sauf le dernier.


la source
1
Merci Fractal Turtle pour sa réponse brève. Je veux également que vous gardiez en toute sécurité au moins deux derniers noyaux. package-cleanup --oldkernels --count=2
rangsiman
1
Je cours package-cleanup --oldkernels --count=1. Après le redémarrage, j'obtiens toujours deux noyaux: CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)et CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core), savez-vous comment en garder un seul?
Ron
Quelqu'un peut-il répondre à la question de @Ron?
Alireza Mohamadi
1
fyi, package-cleanup fait partie de:yum install yum-utils
TiloBunt
8

La commande package-cleanupsupprime l'ancien noyau. Utilisez --count=1pour conserver uniquement les dernières informations. Le programme ne supprimera jamais le noyau actuellement utilisé ("Ne pas supprimer le noyau 3.10.0-327.el7 car il s'agit du noyau en cours d'exécution"), vous pouvez donc vous retrouver avec deux noyaux dans / boot ... jusqu'à ce que vous redémarriez et re -exécutez la commande.

La commande est donc

package-cleanup --oldkernels --count=1 

La page de manuel décrit trois options:

--oldkernels
          Remove old kernel and kernel-devel packages.
--count <COUNT>
          Number of duplicate/kernel packages to keep on the system (default 2)
--keepdevel
          Do not remove kernel-devel packages when removing kernels
Franklin Piat
la source
2

Utiliser yum upgradeau lieu deyum update

Ensuite, il ne gardera que trois noyaux. Si vous utilisez updatealors il remplira votre/boot

gurkan
la source
-1

selon ceci :

exécuter rpm -q kernelpour afficher le noyau installé

puis exécutez yum remove kernel <shown kernel from output above>pour supprimer le noyau

redémarrez votre ordinateur

edit: cela fonctionne vraiment pour le problème de @ Ron, mais assurez-vous que le noyau elrepo fonctionne correctement

Surya Stefanus
la source
Comment évitez-vous de supprimer votre noyau actuel?
Jeff Schaller
Commande spécifique IDK pour ce @JeffSchaller, je suppose, pour vous assurer que vous ne supprimez pas le noyau actuel, vérifiez-le d'abord en utilisant uname -rpuis supprimez le noyau inutilisé mais affiché à partir de cette commande,
Surya Stefanus