Come posso eliminare in sicurezza le vecchie versioni del kernel in CentOS 7?


15

Potrei riscontrare strani sintomi derivanti da kernel concorrenti in CentOS 7. Quindi, come posso eliminare in modo sicuro i vecchi kernel? E come faccio a sapere quale kernel è il più recente?

Di seguito è riportato l'output del terminale che ottengo al momento durante la ricerca di questo sul server in questione. Nota che ho provato a pulire il pacchetto ma lascia gli stessi 2 kernel:

Le istruzioni in questo tutorial dicono che l'output dei seguenti due comandi dovrebbe corrispondere, ma puoi vedere che non corrispondono, anche dopo un riavvio:

[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

I restanti comandi confermano che ci sono due kernel e illustrano i tentativi di eliminare quello vecchio.

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

Ho anche aperto /etc/yum.confe impostato installonly_limit=1, ma ciò ha provocato un errore da un yum updatecomando successivo che dice che 1 è al di fuori dell'intervallo di valori accettabili per installonly_limit.

Presumo che 3.10.0-229.14.1.el7.x86_64sia il più recente, ma come posso saperlo? Inoltre, le opzioni di avvio sembrano offrire più kernel tra cui scegliere. E le opportunità di confusione peggiorano quando il sistema si avvia automaticamente dal primo kernel nell'elenco di opzioni.

Qualcuno può spiegare come funziona, e in particolare, come eliminare in sicurezza i vecchi kernel in modo che la versione del kernel possa essere eliminata come possibile causa di strani sintomi? Voglio assicurarmi che il kernel più recente sia l'unico kernel che possa mai funzionare, indipendentemente dal modo in cui il sistema viene riavviato.


Uscendo dalla porta così non posso scrivere una risposta completa in questo momento. Proverò a ricontrollare più tardi. yum-utils era solito farlo (non sono sicuro se lo fa ancora). if-not-true-then-false.com/2012/…
0xSheepdog

@ 0xSheepdog Sì, sto usando quei comandi da un tutorial simile, ma il server CentOS 7 non lo consentirà installonly_limit=1. Ricevo sintomi divertenti che potrebbero derivare da due versioni del kernel, quindi vorrei avere una sola versione, se possibile, o almeno avere una spiegazione definitiva del perché non è possibile avere meno di 2 versioni, se in infatti non è possibile.
CodeMed

2
Suggerirei di cambiare i tuoi criteri di "mantenimento" in "kernel avviato" anziché in quello più recente - per vari motivi, potresti non avviare il kernel più recente.
Jeff Schaller

Risposte:


23

package-cleanup --oldkernels --count=1 elimina tutti i kernel tranne l'ultimo.


1
Grazie Fractal Turtle per la breve risposta. Voglio anche che tu mantenga in sicurezza almeno gli ultimi due kernel. package-cleanup --oldkernels --count=2
Rangsiman,

1
Io corro package-cleanup --oldkernels --count=1. Dopo il riavvio, ottengo ancora due kernel: 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)sai come mantenerne uno solo?
Ron,

Qualcuno può rispondere alla domanda di @Ron?
Alireza Mohamadi,

1
a proposito, la pulizia del pacchetto fa parte di:yum install yum-utils
TiloBunt,

8

Il comando package-cleanuprimuove il kernel più vecchio. Utilizzare --count=1per mantenere solo le ultime novità. Il programma non rimuoverà mai il kernel attualmente utilizzato ("Non rimuovere il kernel 3.10.0-327.el7 perché è il kernel in esecuzione"), quindi potresti finire con due kernel in / boot ... fino al riavvio e al riavvio -esegui il comando.

Quindi il comando è

package-cleanup --oldkernels --count=1 

La manpage documenta tre opzioni:

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

2

Usa yum upgradeinvece diyum update

Quindi manterrà solo tre kernel. Se lo usi update, riempirà il tuo/boot


-1

secondo questo :

correre rpm -q kernelper mostrare il kernel installato

quindi eseguire yum remove kernel <shown kernel from output above>per rimuovere il kernel

riavviare il computer

modifica: questo funziona davvero per il problema di @ Ron, ma assicurati che il kernel elrepo funzioni correttamente


Come evitare di rimuovere il kernel corrente?
Jeff Schaller

Comando specifico IDK per quel @JeffSchaller, immagino, per assicurarsi che non si stia rimuovendo il kernel corrente, si può prima controllarlo usando uname -rquindi cancellare il kernel inutilizzato ma mostrato da quel comando,
Surya Stefanus,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.