Die hoch bewerteten Fragen und Antworten Wie entferne ich alte Kernelversionen, um das Startmenü zu bereinigen? bietet keine einfache Möglichkeit, ältere Kernel selektiv zu löschen, es sei denn, zusätzliche Anwendungen sind installiert, z. B. Ubuntu-Tweak .
Der Bash-Einzeiler zum Löschen nur alter Kernel- Fragen und Antworten bietet eine Lösung zum Löschen aller alten Kernel, aber ich möchte den letzten Kernel in jeder Generation behalten. dh entfernen Sie 4.7.1, 4.7.2 ... aber behalten Sie 4.7.5.
Gibt es eine Möglichkeit, durch eine Liste aller installierten Kernel zu scrollen und bestimmte zum Löschen auszuwählen? Das Löschen des aktuell ausgeführten Kernels sollte nicht zulässig sein.
Antworten:
Der Vorteil dieser Antwort ist, dass natives Ubuntu Bash ohne Installation von Anwendungen von Drittanbietern verwendet wird. Benutzer von benutzerdefinierten Kerneln, die nicht verwendet haben
apt
dpkg
dieses Bash-Skript oder ändern können, um es ihren Anforderungen anzupassen.Zenity-basierte Lösung
Zenity bietet eine GUI-Schnittstelle zum Terminal. Hier wird eine Liste von Kerneln verarbeitet und einzelne ausgewählt:
Der Dialogtitel gibt die Anzahl der Kernel, ihre Gesamtgröße und die aktuell gestartete Kernelversion an. Der aktuelle Kernel wird von den Gesamtsummen des Titels ausgeschlossen und nicht in der Kernelliste angezeigt.
Das Änderungsdatum ist normalerweise das Datum, an dem der Kernel veröffentlicht wurde. Auf meinem System wird dieses Datum jedes Mal "berührt", wenn der Kernel mit einem Cron- Neustart-Skript gestartet wird ( Wie erfahren Sie, wann eine bestimmte Kernel-Version zuletzt gestartet wurde? ).
Für jeden Kernel wird seine Größe innerhalb des
/boot
Verzeichnisses angegeben. Dann wird die Gesamtgröße des Kernels für die drei Verzeichnisse summiert. / boot, / usr / src / kernel_version und / lib / modules / kernel_version .Wenn kein Parameter an
rm-kernels
die Gesamtgröße übergeben wird, wird diese geschätzt und der Titel zeigt "Est. Total". Dies spart Zeit beim Ausführen desdu
Befehls. Dies kann 30 Sekunden bis 90 Minuten dauern, je nachdem, wie viele Kernel Sie haben und ob Sie eine SSD oder eine Festplatte haben. Wenn Sie einen Parameter übergeben,du
wird er verwendet, um die Kernelgrößen zu erhalten, und der Titel zeigt "Real Total", wie der obige Beispielbildschirm zeigt.apt-get purge
gibt Ihnen die Möglichkeit abzubrechenSie können alles anzeigen, was gelöscht wird,
apt purge
und haben die Möglichkeit, fortzufahren oder abzubrechen:apt purge
Berichte 1.784 MB werden freigegeben, aber die tatsächliche Summe 2.379 MB. Ich weiß nicht, warum es anders ist.Anstatt die Kernel einzeln zu löschen und
update-grub
wiederholt in einer zeitaufwändigen Schleife aufgerufen zu werden, werden die Auswahlen auf einmal gelöscht.Der Code
Kopieren Sie diesen Code in eine Datei mit dem Namen
rm-kernels
in/usr/local/bin
:HINWEIS: Sie müssen
sudo
Kräfte verwenden, um die Datei mit Ihrem bevorzugten Editor zu speichern.So machen Sie die Datei ausführbar:
Serverversion
rm-kernels-server
ist die Serverversion zum selektiven Löschen von Kerneln auf einmal. Anstelle eines grafischen GUI-Dialogfelds wird ein textbasiertes Dialogfeld verwendet, um die zu bereinigenden Kernel auszuwählen.Bevor Sie das Skript ausführen, müssen Sie die Dialogfunktion installieren mit:
sudo apt install dialog
Dialog ist in der Standardinstallation von Ubuntu Desktop, jedoch nicht in Ubuntu Server.
Beispielbildschirm
rm-kernels-server
Bash-CodeHINWEIS: Beim Aufruf
dialog
der Direktive--ascii-lines
wird übergeben, um den erweiterten Zeichensatzssh
für das Zeichnen von Zeilen (der nicht gefällt) durch "+ ----- +" für Zeichenfelder zu ersetzen . Wenn Ihnen dieses Erscheinungsbild nicht gefällt, können Sie die--no-lines
Direktive für keine Box verwenden. Wenn Sie nicht verwendenssh
, können Sie das löschen--ascii-lines
und Ihre Anzeige wird mit Strichzeichnungszeichen formatiert:28. Juli 2017 Updates
Die berechnete Größe jedes Kernels wurde entnommen, aus
/boot/*kernel_version*
denen 5 Dateien mit einer Gesamtgröße von ~ 50 MB stammten. Die Formel wurde geändert, um die Dateien in/usr/src/*kernel_version*
und aufzunehmen/lib/modules/*kernel_version*
. Die berechnete Größe für jeden Kernel beträgt jetzt ~ 400 MB.Standardmäßig wird die Größe von Dateien für Linux-Header auf 125 MB und für Linux-Images auf 220 MB geschätzt, da
du
dies schmerzhaft langsam sein kann, wenn sich die Dateien nicht im Speicher zwischengespeichert befinden. Um die tatsächliche Größe mit zu erhaltendu
übergeben Sie einen beliebigen Parameter an das Skript.Die Summe aller Kernelgrößen (mit Ausnahme der aktuell laufenden Version, die nicht entfernt werden kann) wird jetzt in der Titelleiste angezeigt.
Das Dialogfeld, in dem das Datum des letzten Zugriffs jedes Kernels angezeigt wird . Dieses Datum kann bei Sicherungen oder ähnlichen Vorgängen für alle Kernel massenüberschrieben werden. Das Dialogfeld zeigt jetzt stattdessen das Änderungsdatum an .
5. August 2017 Updates
Die Kernelliste ist jetzt nicht mehr alphanumerisch, sondern nach Kernelversion sortiert.
Eine zusätzliche Spalte wurde hinzugefügt für
/boot size
. In der grafischen Zenity-Version wechselt die letzte Spalte zwischen "Real Total" und "Est. Total" (geschätzt), je nachdem, ob Parameter 1 übergeben wird oder nicht.quelle
(zenity:16439): Gtk-WARNING **: cannot open display:
Ich habe derzeit 65 Kernel installiert und denke, ich habe einen guten Testfall.xdialog
mit--checklist
für die Auswahl - Kernel in textbasierten Umgebungen Optionen. Es wird eine Weile dauern, bis ich eine alternative Version erstellt habe, da ich bereits ein viel größeres Projekt (Anpassung der Anzeigehelligkeit basierend auf Sonnenaufgang und Sonnenuntergang) habe, um dieses Wochenende Fragen und Antworten zu dokumentieren und zu veröffentlichen.gksu gedit
dies zu verwenden. Erstens wird Ubuntu nicht mehr mit ausgeliefertgksu
, und dies kann immer noch Probleme verursachen. Verwendensudo nano
Sie einfach einfach alt , bitte.