Score:0

How to remove deleted kernels from `dpkg --list 'linux-image*'`

us flag

I followed https://www.jamescoyle.net/how-to/1974-how-to-fix-a-full-boot-partition-on-linux to delete old kernels.

I checked with uname -a that my current kernel version is

Linux DarkPhoenix2004 5.4.0-88-generic #99-Ubuntu SMP Thu Sep 23 17:29:00 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

and ran

$ dpkg --list 'linux-image*'
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
         Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name                                  Version      Architektur  Beschreibung
+++-=====================================-============-============-=================================
un  linux-image                           <keine>      <keine>      (keine Beschreibung vorhanden)
rc  linux-image-5.4.0-42-generic          5.4.0-42.46  amd64        Signed kernel image generic
rc  linux-image-5.4.0-58-generic          5.4.0-58.64  amd64        Signed kernel image generic
ii  linux-image-5.4.0-59-generic          5.4.0-59.65  amd64        Signed kernel image generic
rc  linux-image-5.4.0-60-generic          5.4.0-60.67  amd64        Signed kernel image generic
rc  linux-image-5.4.0-62-generic          5.4.0-62.70  amd64        Signed kernel image generic
rc  linux-image-5.4.0-64-generic          5.4.0-64.72  amd64        Signed kernel image generic
rc  linux-image-5.4.0-65-generic          5.4.0-65.73  amd64        Signed kernel image generic
rc  linux-image-5.4.0-66-generic          5.4.0-66.74  amd64        Signed kernel image generic
rc  linux-image-5.4.0-67-generic          5.4.0-67.75  amd64        Signed kernel image generic
rc  linux-image-5.4.0-70-generic          5.4.0-70.78  amd64        Signed kernel image generic
rc  linux-image-5.4.0-71-generic          5.4.0-71.79  amd64        Signed kernel image generic
rc  linux-image-5.4.0-72-generic          5.4.0-72.80  amd64        Signed kernel image generic
rc  linux-image-5.4.0-73-generic          5.4.0-73.82  amd64        Signed kernel image generic
rc  linux-image-5.4.0-74-generic          5.4.0-74.83  amd64        Signed kernel image generic
rc  linux-image-5.4.0-77-generic          5.4.0-77.86  amd64        Signed kernel image generic
rc  linux-image-5.4.0-80-generic          5.4.0-80.90  amd64        Signed kernel image generic
ii  linux-image-5.4.0-81-generic          5.4.0-81.91  amd64        Signed kernel image generic
rc  linux-image-5.4.0-84-generic          5.4.0-84.94  amd64        Signed kernel image generic
ii  linux-image-5.4.0-86-generic          5.4.0-86.97  amd64        Signed kernel image generic
ii  linux-image-5.4.0-88-generic          5.4.0-88.99  amd64        Signed kernel image generic
ii  linux-image-generic                   5.4.0.88.92  amd64        Generic Linux kernel image
un  linux-image-unsigned-5.4.0-42-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-58-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-59-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-60-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-62-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-64-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-65-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-66-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-67-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-70-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-71-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-72-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-73-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-74-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-77-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-80-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-81-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-84-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-86-generic <keine>      <keine>      (keine Beschreibung vorhanden)
un  linux-image-unsigned-5.4.0-88-generic <keine>      <keine>      (keine Beschreibung vorhanden)

then I removed kernels with

sudo apt-get remove linux-image-5.4.0-42-generic linux-image-5.4.0-58-generic

and rebooted the computer. Now the command dpkg --list 'linux-image*' still returns the same list as above. Why were the kernels 5.4.0-42 and 5.4.0-58 not deleted from the list and how can I get rid of the entries in the list? Place on /boot has been freed though.

David avatar
cn flag
What version of Ubuntu?
Artur Meinild avatar
vn flag
Why does it bother you that they show on this list? The `dpkg --list` shows the history, and the packages are clearly marked as "removed". If you only want to list images that are currently installed, use grep: `dpkg --list 'linux-image*' | grep ii`
Artur Meinild avatar
vn flag
@David why does the Ubuntu version matter that much? It's not like the function of `dpkg --list` has changed drastically over the last years. Aside from that, it's pretty clear from kernel history that the version is 20.04.
Make42 avatar
us flag
@ArturMeinild: Thanks. I found at https://askubuntu.com/a/18807/402358 what the two-letter-markers mean. "rc" means that the "desired package state" is that the package is Removed, and that the "current package state" is that Config files are installed.
Score:0
zw flag

To remove uninstalled kernels you have to parse dpkg -l output as follows

sudo apt-get autopurge $(dpkg -l | grep linux-image | grep -v ^ii | awk '{print $2}')

where dpkg -l | grep linux-image | grep -v ^ii | awk '{print $2}' is self-explanatory - we get list of installed packages, filter the linux-image occurrences, then filter not installed packages and finally get their names from column 2.

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.