it-swarm.com.de

Wie entferne ich alte Kernel vom Terminal?

Ich habe verschiedene Fragen zur Bereinigung alter Linux-Kernel durchlaufen. Sie scheinen alle unterschiedliche Antworten zu haben und sie sind alt, daher muss jemand sagen, dass die Frage zu alt ist, und einen neuen Beitrag beginnen. Hier ist es also:

Ich möchte folgendes tun:

  1. Entfernen Sie alte Linux-Kernel manuell im Terminal.
  2. Entfernen Sie alle Konfigurationsdateien
  3. Entfernen Sie alle Headerdateien
  4. Unnötige Inodes entfernen?
  5. Erklären Sie, warum dpkg -l | grep linux-image liefert nicht die gleichen Ergebnisse wie das, was ich beim Booten in meiner grub2-Liste sehe
  6. Erkläre rc vs ii in dpkg -l | grep linux-image auflistung
  7. Erklären Sie die Diskrepanz zwischen den Einträgen im Verzeichnis/usr/src (oder wo immer sich diese Dateien in anderen Ubuntu-Versionen befinden) und den beiden oben genannten Methoden zum Ermitteln überschüssiger Kernelversionen.
  8. Was sind die Konsequenzen einer vollständigen Bereinigung älterer Kernel? Muss ich mir über Abhängigkeiten Gedanken machen? Woher weiß ich, ob Apps auf meinem Computer von den Konfigurationsdateien älterer Kernel abhängig sind?.

Was ich nicht will:

  • Links zu anderen Antworten, die Sie nicht persönlich getestet haben oder die nicht ALLE Probleme einer vollständigen Bereinigung behandeln.
  • Jede Antwort, die Sie nicht persönlich getestet haben.
  • Skripte, die versuchen, alles auf einmal automatisch zu bereinigen. Ich möchte dies nur manuell tun, bis ich alles verstanden habe, was vor sich geht.

Lassen Sie uns bitte eine umfassende Lösung für das Kernelaufbauproblem finden. Ich spiele derzeit mit einer älteren Version von Ubuntu (10.04), bevor ich ein Upgrade durchführe, aber ich hatte das gleiche Problem mit Ubuntu 12.04. Wenn die Lösung für verschiedene Versionen unterschiedlich ist, geben Sie bitte die Version an, die Sie zum Testen Ihrer Lösung verwendet haben.

Was funktioniert:

uname -r

Dadurch wird die aktuell verwendete Kernelversion korrekt zurückgegeben.

Dinge die nicht funktionieren:

Sudo apt-get autoremove
Sudo apt-get clean
Sudo apt-get autoremove linux-image-x.x.xx-xx-generic

Was ich dachte sollte funktionieren, aber nicht:

Sudo apt-get purge linux-image-x.x.xx-xx-generic

Dies hat dazu beigetragen, die von dpkg -l | grep linux-image generierte Liste zu verkleinern:

Sudo dpkg --purge linux-image-x.x.xx-xx-generic

Auch hier ist ein Vorsprung auf das Problem rc/ii:

ii bedeutet "Es sollte installiert sein und es ist installiert", während rc "Es wurde entfernt/deinstalliert, aber die Konfigurationsdateien sind noch vorhanden" bedeutet.

Ich denke, dies behebt das Problem zwischen der Diskrepanz zwischen der Terminal-Auflistung und dem grub2-Menü beim Booten. Soweit ich mich erinnere, stimmen die ii -Auflistungen mit der grub2 -Auflistung überein. Die Frage hier ist, wie die ii -Einträge überhaupt dorthin gekommen sind.

7
JamesH

Die Anhäufung alter Kernel bis/boot voll ist, wodurch apt kaputt geht, ist ein Fehler: LP # 135709 , mit einem Fix, der in allen Versionen von Ubuntu 16.04 und neuer implementiert ist.

Die meisten Benutzer, die dieses Problem bemerken , haben die "Ganzplattenverschlüsselung" installiert, wodurch eine winzige unverschlüsselte/Startpartition erstellt wird. Da es winzig ist, füllt sich die Partition schnell und diese Benutzer bemerken das Problem viel früher als andere.

Wenn ein neuer Kernel installiert wird, markiert das Skript /etc/kernel/postinst.d/apt-auto-removal ältere Kernel als für die automatische Entfernung geeignet , wird jedoch nicht ausgeführt automatisch entfernen. Das Fehlen einer automatischen Entfernung sollte es einem Menschen ursprünglich ermöglichen, die Liste der entfernten Pakete zu überprüfen.

Der Bugfix auf LP # 135709 funktioniert für die meisten Benutzer. Wenn er für Sie nicht funktioniert, liegt eine weitere Ursache vor, die verhindert, dass alte Kernelpakete als geeignet für die automatische Entfernung markiert werden. Suchen Sie in den Ubuntu-Support-Kanälen nach persönlicher Hilfe.

In älteren Versionen von Ubuntu müssen Sie alte Unkraut-Kernel reparieren, um manuell Speicherplatz zu sparen. Wie Sie es manuell beheben, hängt davon ab, ob Ihr/boot voll ist oder nicht. Die meisten Benutzer bemerken das Problem erst, wenn/boot voll ist und sie apt und dpkg no-space-left-on-device-Fehler erhalten.

Wenn/boot nicht voll ist und apt richtig funktioniert, ein einfaches

Sudo apt-get autoremove      ## Ubuntu 14.04 and older
Sudo apt autoremove          ## Ubuntu 16.04 and newer

sollten alle Kernelpakete entfernen, die für die automatische Entfernung in Frage kommen.

Wenn/boot voll ist und apt-Aktionen mit dem dpkg-Fehler "no space left on device" fehlschlagen, ist es zu spät, die automatische Entfernung zu verwenden.

Es ist zu spät, weil Aptdaemon Paketaktionen in die Warteschlange stellt. Autoremove befindet sich ganz hinten in der Warteschlange und bricht die gesamte verbleibende Warteschlange ab, wenn eine Aktion fehlschlägt. (Dies ist wohl ein Fehler in Apt/Aptdaemon)

Die beste Vorgehensweise ist, mit 'uname' und 'dpkg' einen oder zwei alte Kernel zu entfernen, um Speicherplatz für die Ausführung der in der Warteschlange befindlichen Aktionen freizugeben. Dann funktioniert die automatische Entfernung.

Beispiel:

$ uname -r
3.16.0-36-generic    ## This is kernel you MUST NOT remove.

$ dpkg -l | grep linux-image
rc  linux-image-3.16.0-23-generic    ## 'rc' means already removed
rc  linux-image-3.16.0-28-generic    ## 'rc' can be safely ignored
rc  linux-image-3.16.0-29-generic
ii  linux-image-3.16.0-30-generic    ## 'ii' means installed. Removable
ii  linux-image-3.16.0-31-generic    ## Removable
ii  linux-image-3.16.0-33-generic    ## Removable
ii  linux-image-3.16.0-34-generic    ## Backup working kernel. Don't remove
ii  linux-image-3.16.0-36-generic    ## Current kernel. DO NOT REMOVE

## Use dpkg to remove one older kernel, freeing enough space for apt to work
$ Sudo dpkg --remove linux-image-3.16.0-30-generic
$ Sudo apt-get autoremove     ## Ubuntu 14.04 and older
$ Sudo apt autoremove         ## Ubuntu 16.04 and newer

Wenn Sie das Problem lange Zeit ignoriert haben , gibt es Effekte zweiter Ordnung, z. B. linux-image-generic, die auf die falsche Kernelversion verweisen und apt Abhängigkeitsfehler. Es gibt keine einzige Möglichkeit, all diese Probleme gleichzeitig zu beheben.

Im Allgemeinen können Sie die meisten dieser Probleme auf einfache Weise beheben, indem Sie die alten Pakete aus Ihrem lokalen Paketcache entfernen, Ihre Paketdatenbank aktualisieren und die fehlerhaften Pakete aus den Ubuntu-Repositorys neu installieren (anstelle Ihres lokalen Caches).

$ Sudo apt-get update       ## Refresh the package database (14.04 and older)
$ Sudo apt update           ##                              (16.04 and newer)

$ Sudo apt-get autoclean    ## Delete the obsolete packages from your local cache (14.04 and older)
$ Sudo apt autoclean        ##                                                    (16.04 and newer)

$ Sudo apt-get install --reinstall <packagename>     ## Reinstall the offending package with the latest version in the Ubuntu repositories (14.04 and older)
$ Sudo apt install --reinstall <packagename>         ##                (16.04 and newer)

Wenn Sie immer noch auf apt- und/oder dpkg-Fehler stoßen, suchen Sie in den Ubuntu-Support-Kanälen nach persönlicher Hilfe.

7
user535733

Sie können diese Befehle verwenden, um alte Konfigurationsdateien und alte Kernel zu entfernen:

exec Sudo -i

CONFOLD=$(dpkg -l | grep '^rc' | awk '{print $2}')

KERNELCUR=$(uname -r | sed 's/-*[a-z]//g' | sed 's/-386//g')

PKGLINUX="linux-(image|headers|ubuntu-modules|restricted-modules)"

METAPKGLINUX="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"

KERNELSOLD=$(dpkg -l | awk '{print $2}' | grep -E "$PKGLINUX" | grep -vE "$METAPKGLINUX" | grep -v "$KERNELCUR")

apt-get purge "$CONFOLD"

apt-get purge "$KERNELSOLD"

update-grub
1
kyodake

Sie können den folgenden Befehl ausführen, um die Liste der installierten Kernel zu finden.

rpm -q Kernel

Nachdem Sie die Liste der Kernel gefunden haben, führen Sie den folgenden Befehl aus, um die Kernel zu entfernen.

Sudo apt-get entferne linux-image-x.x.x.x-generic

0
vembutech