Wie lösche ich alte Kernelversionen in CentOS 7 sicher?

15

In CentOS 7 kann es zu seltsamen Symptomen kommen, die auf konkurrierende Kernel zurückzuführen sind. Wie lösche ich also die alten Kernel sicher? Und woher weiß ich, welcher Kernel der neueste ist?

Unten ist die Terminal-Ausgabe aufgeführt, die ich zur Zeit erhalte, wenn ich dies auf dem fraglichen Server recherchiere. Beachten Sie, dass ich die Paketbereinigung versucht habe, aber die gleichen 2 Kernel belassen:

Die Anweisungen in diesem Lernprogramm besagen, dass die Ausgabe der folgenden beiden Befehle übereinstimmen sollte, aber Sie können feststellen, dass sie auch nach einem Neustart nicht übereinstimmen:

[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

Die restlichen Befehle bestätigen, dass es zwei Kernel gibt, und veranschaulichen Versuche, den alten zu löschen.

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

Ich habe auch geöffnet /etc/yum.confund eingestellt installonly_limit=1, dies führte jedoch zu einem Fehler bei einem nachfolgenden yum updateBefehl, der besagt, dass 1 außerhalb des Bereichs zulässiger Werte für liegt installonly_limit.

Ich nehme an, das 3.10.0-229.14.1.el7.x86_64ist das Neueste, aber wie kann ich das wissen? Außerdem bieten die Boot-Optionen offenbar mehrere Kernel zur Auswahl. Die Gefahr von Verwirrung wird noch größer, wenn das System vom ersten Kernel in der Liste der Optionen aus automatisch gestartet wird.

Kann jemand bitte erklären, wie dies funktioniert und wie man alte Kernel sicher löscht, damit die Kernelversion als mögliche Ursache für seltsame Symptome beseitigt werden kann? Ich möchte sicherstellen, dass der neueste Kernel der einzige Kernel ist, der jemals ausgeführt werden kann, unabhängig davon, wie das System neu gestartet wird.

CodeMed
quelle
Ich gehe zur Tür hinaus, damit ich keine vollständige Antwort schreiben kann. Ich versuche es später noch einmal. yum-utils hat das gemacht (nicht sicher, ob es das noch tut). if-not-true-then-false.com/2012/…
0xSheepdog
@ 0xSheepdog Ja, ich verwende diese Befehle aus einem ähnlichen Tutorial, aber der CentOS 7-Server lässt dies nicht zu installonly_limit=1. Ich bekomme lustige Symptome, die möglicherweise von zwei Kernelversionen herrühren, daher möchte ich, wenn möglich, nur eine Version oder zumindest eine definitive Erklärung dafür haben, warum es nicht möglich ist, weniger als zwei Versionen zu haben, wenn in Tatsache ist, dass es nicht möglich ist.
CodeMed
2
Ich würde vorschlagen, dass Sie Ihre "keep" -Kriterien in "booted kernel" ändern und nicht nur in "newest" - aus verschiedenen Gründen booten Sie möglicherweise nicht mit dem neuesten Kernel.
Jeff Schaller

Antworten:

23

package-cleanup --oldkernels --count=1 Löschen Sie alle Kernel mit Ausnahme des neuesten.


quelle
1
Danke Fractal Turtle für die kurze Antwort. Ich möchte auch, dass Sie mindestens zwei aktuelle Kernel sicher aufbewahren. package-cleanup --oldkernels --count=2
Rangsiman
1
Ich renne package-cleanup --oldkernels --count=1. Nach dem Neustart bekomme ich immer noch zwei Kernel: CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)Und CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)weißt du, wie man nur einen behält?
Ron
Kann jemand @Rons Frage beantworten?
Alireza Mohamadi
1
yum install yum-utils
Zur Info
8

Der Befehl package-cleanupentferne älteren Kernel. Verwenden Sie --count=1diese Option , um nur die neuesten Informationen zu speichern. Das Programm wird den aktuell verwendeten Kernel niemals entfernen ("Kernel 3.10.0-327.el7 wird nicht entfernt, da es sich um den laufenden Kernel handelt"), sodass Sie möglicherweise zwei Kernel in / boot haben, bis Sie neu starten und neu starten Führen Sie den Befehl aus.

Der Befehl lautet also

package-cleanup --oldkernels --count=1 

Die Manpage dokumentiert drei Möglichkeiten:

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

Verwenden Sie yum upgradeanstelle vonyum update

Dann behält es nur drei Kernel. Wenn Sie updatedann verwenden, wird es Ihre füllen/boot

Gurkan
quelle
-1

nach dieser :

Führen Sie aus rpm -q kernel, um den installierten Kernel anzuzeigen

Führen Sie dann aus yum remove kernel <shown kernel from output above>, um den Kernel zu entfernen

Starten Sie Ihren Computer neu

edit: dies funktioniert tatsächlich für @ Rons Problem, aber stelle sicher, dass der elrepo-Kernel korrekt läuft

Surya Stefanus
quelle
Wie vermeidest du das Entfernen deines aktuellen Kernels?
Jeff Schaller
IDK-spezifischer Befehl für diesen @JeffSchaller Ich denke, um sicherzustellen, dass Sie den aktuellen Kernel nicht entfernen, überprüfen Sie ihn zuerst, indem Sie uname -rdann den nicht verwendeten Kernel löschen, der jedoch von diesem Befehl angezeigt wird.
Surya Stefanus