¿Cómo elimino de forma segura las versiones antiguas del núcleo en CentOS 7?

15

Podría estar encontrando síntomas extraños como resultado de la competencia de núcleos en CentOS 7. Entonces, ¿cómo elimino los núcleos antiguos de forma segura? ¿Y cómo sé qué kernel es el más nuevo?

A continuación se muestra la salida del terminal que obtengo en este momento cuando investigo esto en el servidor en cuestión. Tenga en cuenta que probé la limpieza del paquete pero deja los mismos 2 núcleos:

Las instrucciones en este tutorial dicen que la salida de los siguientes dos comandos debe coincidir, pero puede ver que no coinciden, incluso después de un reinicio:

[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

Los comandos restantes confirman que hay dos núcleos e ilustran los intentos de eliminar el anterior.

[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]# 

También abrí /etc/yum.confy configuré installonly_limit=1, pero esto resultó en un error de un yum updatecomando posterior que decía que 1 está fuera del rango de valores aceptables para installonly_limit.

Supongo que 3.10.0-229.14.1.el7.x86_64es el más nuevo, pero ¿cómo puedo saber esto? Además, las opciones de arranque parecen ofrecer múltiples núcleos para elegir. Y las oportunidades de confusión empeoran cuando el sistema se inicia automáticamente desde el primer núcleo de la lista de opciones.

¿Alguien puede explicar cómo funciona esto y, en particular, cómo eliminar de forma segura los núcleos antiguos para que la versión del núcleo pueda eliminarse como una posible causa de síntomas extraños? Quiero asegurarme de que el kernel más reciente sea el único que pueda ejecutarse, sin importar cómo se reinicie el sistema.

CodeMed
fuente
Saliendo por la puerta, así que no puedo escribir una respuesta completa en este momento. Intentará volver más tarde. yum-utils solía hacer esto (no estoy seguro si todavía lo hace). if-not-true-then-false.com/2012/…
0xSheepdog
@ 0xSheepdog Sí, estoy usando esos comandos de un tutorial similar, pero el servidor CentOS 7 no lo permitirá installonly_limit=1. Recibo síntomas divertidos que podrían ser el resultado de dos versiones de kernel, por lo que me gustaría tener solo una versión, si es posible, o al menos tener una explicación definitiva de por qué no es posible tener menos de 2 versiones, si está en De hecho, no es posible.
CodeMed
2
Sugeriría cambiar sus criterios de "mantener" a "núcleo arrancado" en lugar de simplemente el más nuevo; por varias razones, es posible que no esté arrancando al núcleo más nuevo.
Jeff Schaller

Respuestas:

23

package-cleanup --oldkernels --count=1 Eliminar todos los núcleos excepto el último.


fuente
1
Gracias tortuga fractal por la breve respuesta. También quiero que guardes con seguridad al menos dos kernel más recientes. package-cleanup --oldkernels --count=2
rangsiman 01 de
1
Corro package-cleanup --oldkernels --count=1. Después de reiniciar, todavía obtengo dos núcleos: CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)y CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core), ¿sabes cómo mantener uno?
Ron
¿Alguien puede responder la pregunta de @Ron?
Alireza Mohamadi
1
para su información, la limpieza del paquete es parte de:yum install yum-utils
TiloBunt
8

El comando package-cleanupeliminar kernel anterior. Úselo --count=1para mantener solo lo último. El programa nunca eliminará el núcleo utilizado actualmente ("No eliminar el núcleo 3.10.0-327.el7 porque es el núcleo en ejecución"), por lo que puede terminar con dos núcleos en / boot ... hasta que reinicie y vuelva a iniciar -ejecuta el comando.

Entonces el comando es

package-cleanup --oldkernels --count=1 

El documento de la página de manual tiene tres opciones:

--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
fuente
2

Usar en yum upgradelugar deyum update

Entonces solo mantendrá tres núcleos. Si usa, updateentonces llenará su/boot

gurkan
fuente
-1

de acuerdo a esto :

ejecutar rpm -q kernelpara mostrar el kernel instalado

luego corre yum remove kernel <shown kernel from output above>para eliminar el núcleo

reinicia tu computadora

editar: esto realmente funciona para el problema de @ Ron, pero asegúrese de que elrepo kernel se esté ejecutando correctamente

Surya Stefanus
fuente
¿Cómo evitas eliminar tu núcleo actual?
Jeff Schaller
Comando específico del IDK para ese @JeffSchaller, supongo, para asegurarse de que no está eliminando el kernel actual, primero verifíquelo usando uname -rluego elimine el kernel no utilizado pero se muestra desde ese comando,
Surya Stefanus