Como faço para excluir com segurança as versões antigas do kernel no CentOS 7?

15

Talvez eu esteja encontrando sintomas estranhos resultantes de kernels concorrentes no CentOS 7. Então, como excluo com segurança os kernels antigos? E como eu sei qual kernel é o mais novo?

Abaixo está a saída do terminal que recebo no momento em que pesquisava isso no servidor em questão. Observe que eu tentei limpar o pacote, mas ele deixa os mesmos 2 kernels:

As instruções neste tutorial dizem que a saída dos dois comandos a seguir deve corresponder, mas você pode ver que eles não correspondem, mesmo após uma reinicialização:

[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

Os comandos restantes confirmam que existem dois kernels e ilustram as tentativas de excluir o antigo.

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

Também abri /etc/yum.confe configurei installonly_limit=1, mas isso resultou em um erro de um yum updatecomando subseqüente dizendo que 1 está fora do intervalo de valores aceitáveis ​​para installonly_limit.

Presumo que 3.10.0-229.14.1.el7.x86_64seja o mais novo, mas como posso saber disso? Além disso, as opções de inicialização parecem oferecer vários kernels para você escolher. E as oportunidades de confusão pioram quando o sistema é inicializado automaticamente a partir do primeiro kernel na lista de opções.

Alguém pode explicar como isso funciona e, em específico, como excluir com segurança os kernels antigos, para que a versão do kernel possa ser eliminada como uma possível causa de sintomas estranhos? Quero garantir que o kernel mais recente seja o único que pode ser executado, não importa como o sistema seja reiniciado.

CodeMed
fonte
Sair pela porta para que eu não possa escrever uma resposta completa agora. Tentará verificar mais tarde. O yum-utils costumava fazer isso (não tenho certeza se ainda o faz). if-not-true-then-false.com/2012/...
0xSheepdog
@ 0xSheepdog Sim, estou usando esses comandos de um tutorial semelhante, mas o servidor CentOS 7 não permitirá installonly_limit=1. Estou recebendo sintomas engraçados que podem resultar de duas versões do kernel, portanto, gostaria de ter apenas uma versão, se possível, ou pelo menos ter uma explicação definitiva sobre por que não é possível ter menos de duas versões, se estiver em fato não é possível.
CodeMed 02/10/2015
2
Eu sugeriria alterar seu critério "keep" para "kernel inicializado" em vez de simplesmente o mais novo - por várias razões, você pode não estar inicializando no kernel mais recente.
Jeff Schaller

Respostas:

23

package-cleanup --oldkernels --count=1 exclua todos os kernels, exceto os mais recentes.


fonte
1
Obrigado Fractal Turtle pela resposta breve. Eu também quero que você mantenha com segurança pelo menos dois kernel mais recentes. package-cleanup --oldkernels --count=2
rangsiman
1
Eu corro package-cleanup --oldkernels --count=1. Após a reinicialização, ainda recebo dois núcleos: CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)e CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core), você sabe como manter um?
Ron
Alguém pode responder à pergunta de @Ron?
Alireza Mohamadi
1
fyi, limpeza de pacote faz parte de:yum install yum-utils
TiloBunt 5/11
8

O comando package-cleanupremove o kernel mais antigo. Use --count=1para manter apenas as últimas. O programa nunca removerá o kernel atualmente usado ("Não está removendo o kernel 3.10.0-327.el7 porque é o kernel em execução"), portanto, você poderá terminar com dois kernels em / boot ... até reiniciar e re -executar o comando.

Então o comando é

package-cleanup --oldkernels --count=1 

A página de manual documenta três opções:

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

Use em yum upgradevez deyum update

Então ele manterá apenas três núcleos. Se você usar update, ele preencherá seu/boot

gurkan
fonte
-1

de acordo com isso :

execute rpm -q kernelpara mostrar o kernel instalado

então corra yum remove kernel <shown kernel from output above>para remover o kernel

reinicie seu computador

edit: isso realmente funciona para o problema de @ Ron, mas verifique se o kernel do elrepo está funcionando corretamente

Surya Stefanus
fonte
Como você evita remover seu kernel atual?
Jeff Schaller
IDK comando específico para esse @JeffSchaller eu acho, para certificar-se u não está removendo kernel atual, u Süd verificá-lo primeiro usando uname -rem seguida, elimine o kernel não utilizado, mas mostrado a partir desse comando,
Surya Stefanus