Betreibt man ein Ubuntu- oder Debian-System über einen längeren Zeitraum, so sammeln sich über Monate und Jahre, die das System im Normalfall ohne Probleme läuft, eine ganze Reihe von Linux-Kernel an. Bei Sicherheitsupdates oder auch Upgrades auf ein neueres Ubuntu oder Debian werden die alten Kernel nicht deinstalliert. So hat man bei Problemen mit dem neuen Kernel, den „Alten“ noch zur Verfügung und kann so das System booten. Allerdings belegen der Linux-Kernel mit seinen Headern eine ganze Menge Platz, so dass man früher oder später etwas aufräumen sollte. Das geht entweder von Hand, oder besser mit einem „simplen“ Befehl, der das alte Zeug in einem Rutsch von der Platte wirft.
Über Synaptic kann man sich die alten Kernel in einer graphischen Umgebung raussuchen und sie dann deinstallieren. Doch dazu müsste man sich nach und nach allen alten Ballast raussuchen und von Hand zur Deinstallation vormerken. Das ist umständlich und dauert durchaus ein kleines Weilchen, erst recht wenn sich im Ubuntu-System nach einer ganzen Weile eine Menge Kernel angesammelt haben. Mit ein bisschen Shell-Magie deinstalliert man jedoch mit nur einem Kommando alle alten Linux-Kernel inklusive ihren Headern. Via…
…löscht ihr alle alten Kernel inklusive den jeweils zusätzlich installierten Kernel-Headern von der Festplatte. Der aktuelle Kernel des Systems bleibt dabei komplett unangetastet. Ihr müsst also keine Angst haben, dass ihr nach dem Ausführen des Befehls gleich ganz ohne Kernel dasteht und euren Computer nicht mehr booten könnt. Trotzdem solltet ihr einen kritischen Blick auf die Liste der zu deinstallierenden Pakete werfen, nicht dass aus irgendeinem Grund eine Abhängigkeit quer schießt und das halbe System von der Platte fliegt.
$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut Lese Status-Informationen ein... Fertig Die folgenden Pakete werden ENTFERNT: linux-headers-2.6.31-13* linux-headers-2.6.31-13-generic* linux-headers-2.6.31-14* linux-headers-2.6.31-14-generic* linux-image-2.6.27-14-generic* linux-image-2.6.31-13-generic* linux-image-2.6.31-14-generic* linux-restricted-modules-2.6.27-14-generic* 0 aktualisiert, 0 neu installiert, 8 zu entfernen und 10 nicht aktualisiert. Nach dieser Operation werden 441MB Plattenplatz freigegeben. Möchten Sie fortfahren [J/n]?
Allerdings würde ich generell ältere Kernel erst dann von der Festplatte löschen, wenn ich weiß dass ich mit dem aktuellen Linux-Kernel definitiv keine Probleme habe. Lasst nach einem Kernelupdate den alten Kernel daher also noch ein paar Tage oder gar ein paar Wochen auf eurem Rechner. Die dadurch verbrauchten MByte lassen sich meist verschmerzen. Das Aufräumen könnt ihr ja immer noch nachholen, mehr als einen Befehl braucht es dazu ja nicht.
„Über Synaptic kann man sich die alten Kernel raussuchen und sie dann ?(DE)?installieren“
Greetz Frettchen
Es gibt doch auch den schönen Rechnerhausmeister, glaube ab Karmic, der kann das auch 😉
Ich schrieb es eben erst, zu einem anderen Thema ins Ubuntuuser-Forum: Nutzt doch einfach Ubuntu-Tweak!
Es ist weiß Gott kein Allerheilmittel, aber wenn doch schon ein GUI-basiertes Programm entwickelt wurde um es den Leuten leichter zu machen, warum dann immer wieder diesen konsolenlastigen Tipps?
Vielleicht kam das gerade ziemlich harsch herüber, da ich deinen Blog wirklich schätze und zum Großteil auch deine Ansichten teile. Aber ab und an hab ich das Gefühl, dass manche mehr neben, als für und mit den Otto-Normal-Nutzer arbeiten.
Danke, den Befehl kann ich sehr gut gebrauchen! Auf 2 System mal eben je 500mb Platz gemacht. Der eine hat auch nur 4GB, da kommt es auf jedes MB an 😉
Grüße Ben
@GH1234: Der blöde Rechnerhausmeister kann das bei mir nicht, weil ich sie nicht selber installiert habe. Meiner listet nur auf wenn ich selber .DEB installiere
@ALL: Ja genau sowas vermisse ich – gleich mal testen und fein THX schreiben
@Jens Kampe:
Dein Einwand zu Ubuntu Tweak ist zwar ganz gut, aber deine Argumentation beisst sich IMHO etwas.
Der von dir zitierte „Otto-Normal-Nutzer“ dürfte sich im Allgemeinen nicht sehr für Kernel und das Entfernen selbiger interessieren, ergo ist der Artikel hier für ihn sowieso uninteressant, ergo ist die Angabe eines kryptischen Konsolenbefehls auch kein Erschwernis für selbigen.
Ich persönlich finde den Ansatz gut etwas in der Konsole zu erledigen, anstatt auf einer GUI rumzuklicken, weil ich verstehen will, was ich da tue. Thematisch passen hierzu auch gut die letzten beiden Artikel von Christoph (Ubun-student und Sicherheitskonzept von Linux verbessern)
Also Leute, schämt euch. Klar kann man mit Ubuntu-Tweak oder Synaptic viel schöner, aber so nen tollen, langen Befehl auszuführen oder ihn erstmal zusammen zu basteln ist ne Kunst ;-). Niemand befielt euch die Konsole. Aber sie wird doch auch unter Ubuntu immer mehr zur Nostalgie. Gerade für den zitierten Benutzer namens Otto. Der Befehl ist gut, habe ihn gerade ausprobiert, er läuft super, also warum nicht? Wenn man nicht will, muss man auch nicht ;-), aber die oben geleistete Arbeit sollte man würdigen…
Bitte den Befehl verifizieren. Damit wird bei mir auch der fglrx-Treiber deinstalliert.
@Jens, wie es schon Kai sagte geht es nicht drum das es auch noch andere Werkzeuge gibt. Aber was machst du mit Ubuntu-Tweak, wenn du einen Server vor dir hast? Keine GUI, kein Ubuntu-Tweak. Ausserdem geht es eben drum zu lernen.
@Ubunux, danke dir. Hab keine ATI-Karten hier mit diesem flgrx Treiber, von daher kann ich das nicht testen. Was gibt denn…
aus?
Super, auf meinem System wurden mit diesem Befehl mehr als 2 GB freigegeben!
In dem Kommando verstehe ich den Sinn von „^[^ ]* [^ ]* “ nicht. Das erste ^[^ ]* schnappt das „ii“ vom Zeilenanfang weg. Weiter wird dann ein Leerzeichen (von Zweien) gegessen. Das folgende [^ ]* verstehe ich nicht: Geht das nicht immer leer aus, da ja zunächst noch das zweite Leerzeichen ansteht?
Sollte nicht ein aptitude autoremove bzw apt-get autoremove auch alle nicht genutzten Kernel entfernen?
Habs bis jetzt auch immer so gemacht…
Praktisch. Jetzt hab ich wieder einigen Platz mehr auf der Festplatte.
Tolle Idee! Sonst kommt man gar nicht darauf, alte Kernel zu entfernen. Könnte man es nicht auch irgendwie einbauen, dass der letzte alte Kernel nicht deinstalliert wird, dann wäre es sicherer (und evtl. auch fürs Wiki geeeignet)?
Gruß
fred
PS: Bei sind es gerade 1344MB
Ich finde das ist eine super Idee fred. Schade dass sich noch niemand gemeldet hat.
Hi Flo, schau dir mal die Kommentare in diesem Blog an, dort werden Varianten beschrieben, die die letzten zwei Kernel übrig lassen.
Grüße
Christoph
Ich entferne regelmäßig alte Kernel, da mein /boot nur 120 mb groß ist werde ich dazu „gezwungen“ Ordnung zu halten. Ich habe meist 2 Kernel installiert und der jeweils ältere fliegt bei einem Kernel-Update dann weg.
Ich weiß auch gar nicht was man mit den ganzen Kernels soll. Bei der Distri ist immer einer dabei, die Probleme die man mit Linux so hat haben selten was mit dem Kernel sondern mit ganz anderen Dingen zu tun, die man alle konfigurieren und installieren muss.
@Rolf 2 GB? Und hat der Neustart geklappt? (das sind ungefähr 70 Kernel, also praktisch alle Ubuntukernel, die es jemals gab)
@Christoph Ne ist klar, erst wird gegen Automatix gehetzt und jetzt fängst du selber damit an. Asche auf dein Haupt. 😉
Mein Vorschlag, der einem erstmal anzeigt was gemacht werden soll (schützt super vor Überraschungen 😛 ):
Hm, da hätte ich wohl lieber das code-Tag benutzt, nochmal mit:
Ich danke Dir für diesen Artikel. 🙂
Gute Idee daran mal zu erinnern 🙂 Danke.
„Nach dieser Operation werden 973MB Plattenplatz freigegeben.“
Schon etwas älter dieser Beitrag!
Aber, kann man diesen Befehl auch so formulieren das alle alten Kernels gelöscht werden, außer dem VORletzten?
Grüße,
savalas
Man kann Kernel vor der folgenden Aktion ausschließen indem man sich im ersten Durchlauf die Paketnamen anschaut und danach die Kernel, die nicht deinstalliert werden sollen ausschließt:
z.B.:
Danach kann man die Pipe mit der deinstallation hinzufügen:
Die Tipps von Yoschi #12 oder adun #17 würde ich auch mal in Betracht ziehen…
Ahem, der Befehl hat auch sauber meinen nvidia-Treiber entfernt…;-(
Hallo Christian, welche Linux-Distribution? Ubuntu? Welche Ubuntu-Version? Wie war der Nvidia-Treiber installiert?
Hallo Christopf, Ubuntu Karmic mit manuell installiertem NVidia Treiber (v180). Zumindest sah ich beim Durchlauf des Befehls, dass er die NVidia-Treiber zu deinstallieren scheint. Habe das gleich mal zum Anlaß genommen, alles was mit NVidia zu tun hat zu entfernen und den Treiber neu zu installieren.
Hier ist der Output [Auszug]:
(Und wie Du siehst scheint er auch etliche Virtualbox-Treiber zu deinstallieren)
Hallo Christian,
auch bei mir hat der Befehl sage und schreibe 1,5 GB freigeräumt! Danke dafür, aber auch Danke für den Verlust meines Nvidia Treibers 🙁
Wie kann ich den nun wieder (ohne GUI) vom Startterminal installieren? Ich bin da nicht soooo sicher in der Befehlskette.
System: Standart PC, Kubuntu 10.04.2 LTS (daher auch der viele Platz) und eine Nvidia GeForce.
Kannst Du mir helfen?
Ciao
DiveComp
Dann war der Treiber jedoch nicht sauber installiert, oder du hast — vermutlich ohne es zu wissen — gar nicht den aktuellen Kernel benutzt, der jetzt als einziger übriggeblieben ist. Wenn das Paket nvidia-current installiert ist, dann sollte dein System auch den Nvidia-Treiber nutzen.
Prüfe dann noch, ob in der /etc/X11/xorg.conf der Treiber angegeben ist. In der Datei müsstest du Zeilen wie etwa…
finden. Editieren kannst du die Datei – falls es denn nötig sein sollte – über
$ sudo nano /etc/X11/xorg.conf
. Danach noch neu booten und hoffen, dass es wieder klappt 🙂Grüße
Christoph
Hallo Christoph,
genau so war es … Wer weiß schon was man nachts übermüdet dann doch noch für komische Gedanken hat, etwa wie: Ich sollte mal den aktuellen Treiber herunterladen oder so ähnlich 🙁
Schlußendlich hat es jedenfalls funktioniert und auch immerhin 1,5 GB freigesetzt, das wollte ich ja auch.
BTW: Den Weg zu Deiner Seite habe ich hier gefunden. Damit Du auch mal weißt wer Dich alles mittlerweile verlinkt :-))
Danke für die schnelle Hilfe
DiveComp
Du hast den Treiber nicht über die Paketverwaltung installiert? Ausserdem ist ein RealTime-Kernel im Einsatz. Beides sind Umstände, die ich schon lange nicht mehr gemacht habe. Generell ist es ja so, dass DKMS die Kernelmodule vorhält. Ich kann mir ganz gut vorstellen, dass du einen Kernelmix installiert hast und eventuell auch notwendige Metapakete fehlen.
Scheint mir auch so. Ich habe jetzt mal alle Kernelpakete die nicht uname -r sind runtergeschmissen. Waren dann mal 1 GB Daten 😉
Q: Wie kann ich eigentlich ein lokales .run Paket „NVIDIA-Linux-x86-195.36.15-pkg1.run“ via Paketverwaltung installieren?
Gar nicht. Gibts nen Grund warum du den Nvidia-Treiber nicht direkt aus den Quellen installierst?
Vielen Dank für den genialen Befehl.
Der Rechnerhausmeister bietest mir nur Blödsinn an (z.B. Mplayer deinstllieren, da er nicht mehr benutzt wird!!!).
Gruß Knollo
Als Hinweis für andere, die Virtual Box verwenden. Nicht weiter tragisch aber wissenswert.
Das ist schon ok so. Das Kernelmodul wird ja für jeden Kernel generiert. Deinstallierst du den Kernel, dann brauchst du auch das Kernelmodul nicht mehr.
Danke für den Einzeiler 🙂 funktioniert bestens, „versuch das mal unter windows – dort fliegt dir das ganze System um die Ohren *LOL* „
Vielen Dank fürs Posten dieses genialen Befehls! Ich google immer nach „ubuntu shell magie“ wenn ich den mal wieder brauche 😉
Vielen Dank für diesen tollen und sehr hilreichen Befehl.
Bisher hats auch immer alles super funktioniert, aber jetzt auf
Kubuntu 12.04 scheint es nicht mehr zu gehn.
Fehler:
Problem ist hier wohl die neue pae-kernel „Erfndung“ der ubuntu-leute,
die den generic ausnehmen.
Lässt sich der Befehl trotzdem noch in anderer Form dazu bewegen,
seinen tollen Dienst zu verrichten ??
Danke nochmals für diesen tollen Befehl…
Müsste mal sehen, auf die schnelle könntest du auf Ubuntu-Tweak zurückgreifen. Die Leute haben die Idee aufgegriffen und sie in etwas aufwändigerer Form im Programm eingebaut.
Grüße
Christoph
Hallo zusammen. Also mein nvidia treiber ist auch futsch und linux-image das metapaket ist weg, sowie der aktuelle kernel, die vorgängerversion ist noch da.
Ehrlich gesagt glaube ich, dass die Zeile buggy ist.
Du hattest den Nvidia-Treiber manuell installiert und nicht über die Paketverwaltung, wie man es eben auch machen sollte. Bei dir wurde kein nvidia-* Paket deinstalliert, sondern „nur“ das Kernel-Modul, dass das System jetzt nicht mehr für nötig erachtete. Wenn du manuell in sowas eingreifst, dann solltest du auch keine Automatismen mehr verwenden.
Grüße
Christoph
Danke, funktioniert prima und das beste daran ganz ohne GUI
Grüße
Jörg
super, danke für den Tipp, gerade angewandt und hat super funktioniert
Wozu GUI ? Der Befehl funktioniert einwandfrei.
Super Sache!
hab’s bei mir sehr erfolgreich getestet.
Aus:
Wurde:
Tiptop auf nem kleinen Server via ssh zu erledigen.
Herzlichen Dank dafür!
Danköö, von hand mit apt-get raussuchen ist mühsam 😉
hat bei mir (Debian Sid, kommt auch mal vor das da zwei mal am Tag ein neuer Kernel rauskommt) knapp 7GB frei geschaufelt :3
DANKE
grade rund 1gb freigeschaufelt
das bei den updates immer neue kernel dazu kommen müssen
da ich meine selber kompiliere müssen die automatisch installierten kernel weichen
danke dafür
MfG
Vielen Dank!
Es wurden mehr als 3GB freigegeben auf einem Lubuntu 12.04.
Vielen Dank!
Der befehl hat bei mir super funktioniert. Nachdem meine Systempartition (20GB, kleine Platte) nur noch knapp ein GB frei hatte sinds jetzt wieder 9GB. Da hatte sich was angesammelt…
Viele Grüße
tola
Vielen Dank,
dieser Befehl zum alte Kernel löschen hat mir sehr viel Arbeit ersparrt.
🙂
Vielen Dank für deinen Befehl – habe länger gesucht, woran es krankt, dass mein System immer weniger Speicherplatz hat. Der autoclean- und autremove- Befehl hat auch nicht geholfen. Jetzt gehts wieder.
Knapp 7 GB wurden freigeschaufelt… 🙂
Hallo Christoph,
Danke für den praktischen Befehl.
Ich hatte erst das selbe Problem wie „Ubunux“ nämlich dass der fglrx Treiber mit deinstalliert werden sollte. Offenbar lag es daran, dass dem Regex ein Paket ins Netz gegangen ist was nicht deinstalliert werden sollte: linux-libc-dev:amd64
Ich hab dann die Liste manuell ohne den Beifang kopiert und hinter apt-get purge eingefügt. So Funktionierte es prima!
Grüße,
Moritz
Hallo Christoph,
ich komme wegen diesem tollen Befehl immer und immer wieder gerne hier vorbei.
Danke dafür!
Simon
ein riesen Ausdruck wird Produziert: //Edit by Christoph, ich habe den ganzen Auszug mal nach http://pastebin.com/12ALwkiG ausgelagert…
Ggf. liegt es daran, dass die Kernel sich nun im LW „Boot“ befinden?
danke!
Unter Linux gibt es keine Laufwerke, alles ist ein Verzeichnisbaum, daran hat sich seit Linux-Urzeiten nichts geändert. Bist du sicher, dass du den Befehl ordentlich übernommen hast? Grüße, Christoph.
Ich habe mir jetzt nicht alle Kommentare durchgelesen. Es blieb beim Versuch, mein Debian aufzuräumen. Vielleicht gibt es -außer Synaptic- eine Alternative zu Deinem Befehl, respektive eine aktuellere Version, denn
Hier gleiches Problem auf Ubuntu headless-server.
Auf anderen Systemen funktioniert der Befehl allerdings.
Scheint also mit der Version zu tun haben.
uname -r sagt: 3.8.0-39-generic
Versucht ab 14.04 mal das hier:
Sollte so wieder laufen …
Unter Debian geht das nicht. 🙁
Hey,
Ich habe den oben angegebenen Befehl der alle alten kernel löschen soll eingegeben und erhalte folgende Ausgabe:
Was habe ich falsch gemacht?
Lg MM
Schmeiß mal ein
apt-get -f install
an 🙂sudo apt-get -f install
[sudo] password for joschmichel:
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen…. Fertig
Abhängigkeiten werden korrigiert … Fertig
Die folgenden zusätzlichen Pakete werden installiert:
linux-image-3.13.0-44-generic
Vorgeschlagene Pakete:
fdutils linux-doc-3.13.0 linux-source-3.13.0 linux-tools
Die folgenden NEUEN Pakete werden installiert:
linux-image-3.13.0-44-generic
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 23 nicht aktualisiert.
5 nicht vollständig installiert oder entfernt.
Es müssen noch 0 B von 14,7 MB an Archiven heruntergeladen werden.
Nach dieser Operation werden 32,6 MB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren? [J/n] j
(Lese Datenbank … 355753 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von …/linux-image-3.13.0-44-generic_3.13.0-44.73_i386.deb …
Done.
Entpacken von linux-image-3.13.0-44-generic (3.13.0-44.73) …
dpkg: Fehler beim Bearbeiten des Archivs /var/cache/apt/archives/linux-image-3.13.0-44-generic_3.13.0-44.73_i386.deb (–unpack):
Extrahierte Daten für »./boot/vmlinuz-3.13.0-44-generic« können nicht nach »/boot/vmlinuz-3.13.0-44-generic.dpkg-new« kopiert werden: Es konnte nicht geschrieben werden (Auf dem Gerät ist kein Speicherplatz mehr verfügbar)
Es wurde kein Apport-Bericht verfasst, da die Fehlermeldung auf einen Fehler wegen voller Festplatte hindeutet.
dpkg-deb: Fehler: Unterprozess einfügen wurde durch Signal (Datenübergabe unterbrochen (broken pipe)) getötet
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.13.0-44-generic /boot/vmlinuz-3.13.0-44-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-44-generic /boot/vmlinuz-3.13.0-44-generic
Fehler traten auf beim Bearbeiten von:
/var/cache/apt/archives/linux-image-3.13.0-44-generic_3.13.0-44.73_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Das kommt dabei raus.
Hallo Christoph u.a.,
vorweg: Sicherlich gut gemeint Dein Ansatz und mithin auch user-friendly, sieht man von Problemen mit NVidia, Openbox, et al. einmal ab … manchmal „hausgemachte“, wie Du ja auch zutreffend herausstellst.
Vollständiger und von daher in zwei Schritten ist jedoch nachstehend verlinkter Ansatz; er bietet nämlich die Möglichkeit, VOR endgültiger Ausführung der Kernel-Deinstallation samt Abhängigkeiten wie *ko(’s) zu erkunden, was passiert.
https://wiki.ubuntuusers.de/kernel
P.S.: Es ist einfach besser, MEHRERE „Eisen im Feuer“ zu haben 🙂
Schöner Artikel und nützlicher Command, danke dafür!
Das
-y
würde ich aus Gründen erstmal weglassen, damit man mal drüberfliegen kann. 😉Inzwischen gibt es für die Aktion jedoch auch andere Wege. Man kann bspw.
sudo purge-old-kernels
aus byobu oder bis Ubuntu 15.10 dem Paket bikeshed nutzen. Grüße, ChristophDas stimmt, unter Debian existiert das aber beispielsweise nicht und ich installiere bestimmt keine Tools auf Servern, die ich nicht dringend brauche, weil sie durch einen Einzeiler ersetzbar sind. 🙂
War ja auch nur ein gut gemeinter Tipp, um ein paar Beginner zu schützen.
das hat ja soweit funktioniert, die überflüssigen Kernels sind weg. Allerdings wurden auch eine ganze Reihe an Libs (pango, libtiff, boost etc.) die ich installiert habe, mit entfernt. Die Abfrage, ob ich fortfahren will hat leider gefehlt, sonst hätte ich abgebrochen.
dpkg -l ‚linux-[ihs]*‘ | sed ……