1

I set up unattended-upgrades on an Ubuntu 16.04 server I have. I checked it today, and /boot is out of space. apt-get and other answers suggest running apt-get purge <old-kernels>, but that command also fails for me. I am assuming it is due to partially configured packages?

How can I force apt-get to remove old packages on /boot? Also, is there a way to configure unattended-upgrades to periodically remove old, unused kernel packages?

Here is my console output when I try to upgrade and purge packages

user@host:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 linux-image-extra-4.4.0-116-generic : Depends: linux-image-4.4.0-116-generic but it is not installed
 linux-image-extra-4.4.0-130-generic : Depends: linux-image-4.4.0-130-generic but it is not installed
 linux-image-generic : Depends: linux-image-4.4.0-130-generic but it is not installed
                       Recommends: thermald but it is not installed
E: Unmet dependencies. Try using -f.

user@host:~$ sudo apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  linux-headers-4.4.0-101 linux-headers-4.4.0-101-generic linux-headers-4.4.0-103 linux-headers-4.4.0-103-generic linux-headers-4.4.0-116 linux-headers-4.4.0-116-generic linux-headers-4.4.0-89 linux-headers-4.4.0-89-generic linux-headers-4.4.0-92
  linux-headers-4.4.0-92-generic linux-headers-4.4.0-93 linux-headers-4.4.0-93-generic linux-headers-4.4.0-96 linux-headers-4.4.0-96-generic linux-headers-4.4.0-97 linux-headers-4.4.0-97-generic linux-headers-4.4.0-98 linux-headers-4.4.0-98-generic
  linux-image-4.4.0-101-generic linux-image-4.4.0-103-generic linux-image-4.4.0-116-generic linux-image-4.4.0-89-generic linux-image-4.4.0-92-generic linux-image-4.4.0-93-generic linux-image-4.4.0-96-generic linux-image-4.4.0-97-generic linux-image-4.4.0-98-generic
  linux-image-extra-4.4.0-101-generic linux-image-extra-4.4.0-103-generic linux-image-extra-4.4.0-116-generic linux-image-extra-4.4.0-89-generic linux-image-extra-4.4.0-92-generic linux-image-extra-4.4.0-93-generic linux-image-extra-4.4.0-96-generic
  linux-image-extra-4.4.0-97-generic linux-image-extra-4.4.0-98-generic
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  amd64-microcode intel-microcode iucode-tool linux-generic linux-headers-4.4.0-130 linux-headers-4.4.0-130-generic linux-headers-generic linux-image-4.4.0-116-generic linux-image-4.4.0-130-generic linux-image-extra-4.4.0-130-generic linux-image-generic
Suggested packages:
  fdutils linux-doc-4.4.0 | linux-source-4.4.0 linux-tools
Recommended packages:
  thermald
The following NEW packages will be installed:
  amd64-microcode intel-microcode iucode-tool linux-headers-4.4.0-130 linux-headers-4.4.0-130-generic linux-image-4.4.0-116-generic linux-image-4.4.0-130-generic linux-image-extra-4.4.0-130-generic
The following packages will be upgraded:
  linux-generic linux-headers-generic linux-image-generic
3 upgraded, 8 newly installed, 0 to remove and 130 not upgraded.
13 not fully installed or removed.
Need to get 70.7 MB/92.7 MB of archives.
After this operation, 372 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-image-4.4.0-130-generic amd64 4.4.0-130.156 [22.1 MB]
Get:2 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-image-extra-4.4.0-130-generic amd64 4.4.0-130.156 [36.5 MB]
Get:3 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 iucode-tool amd64 1.5.1-1ubuntu0.1 [33.8 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 intel-microcode amd64 3.20180425.1~ubuntu0.16.04.1 [1,145 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 amd64-microcode amd64 3.20180524.1~ubuntu0.16.04.1 [32.9 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-generic amd64 4.4.0.130.136 [1,792 B]
Get:7 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-image-generic amd64 4.4.0.130.136 [2,532 B]
Get:8 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-headers-4.4.0-130 all 4.4.0-130.156 [10.0 MB]
Get:9 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-headers-4.4.0-130-generic amd64 4.4.0-130.156 [815 kB]
Get:10 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 linux-headers-generic amd64 4.4.0.130.136 [2,498 B]
Fetched 70.7 MB in 47s (1,475 kB/s)
Selecting previously unselected package linux-image-4.4.0-130-generic.
(Reading database ... 491770 files and directories currently installed.)
Preparing to unpack .../linux-image-4.4.0-130-generic_4.4.0-130.156_amd64.deb ...
Done.
Unpacking linux-image-4.4.0-130-generic (4.4.0-130.156) ...
dpkg: error processing archive /var/cache/apt/archives/linux-image-4.4.0-130-generic_4.4.0-130.156_amd64.deb (--unpack):
 cannot copy extracted data for './boot/vmlinuz-4.4.0-130-generic' to '/boot/vmlinuz-4.4.0-130-generic.dpkg-new': failed to write (No space left on device)
No apport report written because the error message indicates a disk full error
                                                                              dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 4.4.0-130-generic /boot/vmlinuz-4.4.0-130-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 4.4.0-130-generic /boot/vmlinuz-4.4.0-130-generic
Selecting previously unselected package linux-image-extra-4.4.0-130-generic.
Preparing to unpack .../linux-image-extra-4.4.0-130-generic_4.4.0-130.156_amd64.deb ...
Unpacking linux-image-extra-4.4.0-130-generic (4.4.0-130.156) ...
Selecting previously unselected package iucode-tool.
Preparing to unpack .../iucode-tool_1.5.1-1ubuntu0.1_amd64.deb ...
Unpacking iucode-tool (1.5.1-1ubuntu0.1) ...
Selecting previously unselected package intel-microcode.
Preparing to unpack .../intel-microcode_3.20180425.1~ubuntu0.16.04.1_amd64.deb ...
Unpacking intel-microcode (3.20180425.1~ubuntu0.16.04.1) ...
Selecting previously unselected package amd64-microcode.
Preparing to unpack .../amd64-microcode_3.20180524.1~ubuntu0.16.04.1_amd64.deb ...
Unpacking amd64-microcode (3.20180524.1~ubuntu0.16.04.1) ...
Preparing to unpack .../linux-generic_4.4.0.130.136_amd64.deb ...
Unpacking linux-generic (4.4.0.130.136) over (4.4.0.116.122) ...
Preparing to unpack .../linux-image-generic_4.4.0.130.136_amd64.deb ...
Unpacking linux-image-generic (4.4.0.130.136) over (4.4.0.116.122) ...
Selecting previously unselected package linux-headers-4.4.0-130.
Preparing to unpack .../linux-headers-4.4.0-130_4.4.0-130.156_all.deb ...
Unpacking linux-headers-4.4.0-130 (4.4.0-130.156) ...
Selecting previously unselected package linux-headers-4.4.0-130-generic.
Preparing to unpack .../linux-headers-4.4.0-130-generic_4.4.0-130.156_amd64.deb ...
Unpacking linux-headers-4.4.0-130-generic (4.4.0-130.156) ...
Preparing to unpack .../linux-headers-generic_4.4.0.130.136_amd64.deb ...
Unpacking linux-headers-generic (4.4.0.130.136) over (4.4.0.116.122) ...
Preparing to unpack .../linux-image-4.4.0-116-generic_4.4.0-116.140_amd64.deb ...
Examining /etc/kernel/preinst.d/
Done.
Unpacking linux-image-4.4.0-116-generic (4.4.0-116.140) ...
dpkg: error processing archive /var/cache/apt/archives/linux-image-4.4.0-116-generic_4.4.0-116.140_amd64.deb (--unpack):
 cannot copy extracted data for './boot/vmlinuz-4.4.0-116-generic' to '/boot/vmlinuz-4.4.0-116-generic.dpkg-new': failed to write (No space left on device)
No apport report written because the error message indicates a disk full error
                                                                              dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 4.4.0-116-generic /boot/vmlinuz-4.4.0-116-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 4.4.0-116-generic /boot/vmlinuz-4.4.0-116-generic
Processing triggers for man-db (2.7.5-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/linux-image-4.4.0-130-generic_4.4.0-130.156_amd64.deb
 /var/cache/apt/archives/linux-image-4.4.0-116-generic_4.4.0-116.140_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

When I try to purge a package, I get the following:

user@host:~$ sudo apt-get purge linux-image-4.4.0-89-generic
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
 linux-image-extra-4.4.0-116-generic : Depends: linux-image-4.4.0-116-generic but it is not going to be installed
 linux-image-extra-4.4.0-130-generic : Depends: linux-image-4.4.0-130-generic but it is not going to be installed
 linux-image-extra-4.4.0-89-generic : Depends: linux-image-4.4.0-89-generic but it is not going to be installed
 linux-image-generic : Depends: linux-image-4.4.0-130-generic but it is not going to be installed
                       Recommends: thermald but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Here are all the packages that are installed or partially installed/configured:

user@host:~$ dpkg -l | grep linux-.* | grep '^.[iFH]'
ii  linux-base                          4.0ubuntu1                                 all          Linux image base package
iF  linux-firmware                      1.157.16                                   all          Firmware for Linux kernel drivers
ii  linux-headers-4.4.0-101             4.4.0-101.124                              all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-101-generic     4.4.0-101.124                              amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-103             4.4.0-103.126                              all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-103-generic     4.4.0-103.126                              amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-104             4.4.0-104.127                              all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-104-generic     4.4.0-104.127                              amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-109             4.4.0-109.132                              all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-109-generic     4.4.0-109.132                              amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-112             4.4.0-112.135                              all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-112-generic     4.4.0-112.135                              amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-89              4.4.0-89.112                               all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-89-generic      4.4.0-89.112                               amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-92              4.4.0-92.115                               all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-92-generic      4.4.0-92.115                               amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-93              4.4.0-93.116                               all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-93-generic      4.4.0-93.116                               amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-96              4.4.0-96.119                               all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-96-generic      4.4.0-96.119                               amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-97              4.4.0-97.120                               all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-97-generic      4.4.0-97.120                               amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-headers-4.4.0-98              4.4.0-98.121                               all          Header files related to Linux kernel version 4.4.0
ii  linux-headers-4.4.0-98-generic      4.4.0-98.121                               amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-101-generic       4.4.0-101.124                              amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-103-generic       4.4.0-103.126                              amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-104-generic       4.4.0-104.127                              amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
iF  linux-image-4.4.0-109-generic       4.4.0-109.132                              amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
iF  linux-image-4.4.0-112-generic       4.4.0-112.135                              amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-89-generic        4.4.0-89.112                               amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-92-generic        4.4.0-92.115                               amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-93-generic        4.4.0-93.116                               amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-96-generic        4.4.0-96.119                               amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-97-generic        4.4.0-97.120                               amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-4.4.0-98-generic        4.4.0-98.121                               amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-101-generic 4.4.0-101.124                              amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-103-generic 4.4.0-103.126                              amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
iF  linux-image-extra-4.4.0-104-generic 4.4.0-104.127                              amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-89-generic  4.4.0-89.112                               amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-92-generic  4.4.0-92.115                               amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-93-generic  4.4.0-93.116                               amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-96-generic  4.4.0-96.119                               amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-97-generic  4.4.0-97.120                               amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii  linux-image-extra-4.4.0-98-generic  4.4.0-98.121                               amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP

System & kernel info:

user@host:~$ uname -a
Linux host 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Disk usage:

user@host:~$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
udev                        1.9G     0  1.9G   0% /dev
tmpfs                       376M   11M  366M   3% /run
/dev/mapper/host--vg-root  225G   17G  197G   8% /
tmpfs                       1.9G  4.0K  1.9G   1% /dev/shm
tmpfs                       5.0M     0  5.0M   0% /run/lock
tmpfs                       1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                   472M  467M     0 100% /boot
tmpfs                       376M     0  376M   0% /run/user/1000

Update 1

I tried a dpkg --purge as suggested in the comments and got the following

user@host:~$ sudo dpkg --purge linux-image-extra-4.4.0-89-generic linux-image-4.4.0-89-generic
(Reading database ... 523323 files and directories currently installed.)
Removing linux-image-extra-4.4.0-89-generic (4.4.0-89.112) ...
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.4.0-89-generic /boot/vmlinuz-4.4.0-89-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.4.0-89-generic /boot/vmlinuz-4.4.0-89-generic
update-initramfs: Generating /boot/initrd.img-4.4.0-89-generic
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-4.4.0-89-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-extra-4.4.0-89-generic (--purge):
 subprocess installed post-removal script returned error exit status 1
Removing linux-image-4.4.0-89-generic (4.4.0-89.112) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 4.4.0-89-generic /boot/vmlinuz-4.4.0-89-generic
update-initramfs: Deleting /boot/initrd.img-4.4.0-89-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 4.4.0-89-generic /boot/vmlinuz-4.4.0-89-generic
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.4.0-112-generic
Found linux image: /boot/vmlinuz-4.4.0-109-generic
Found linux image: /boot/vmlinuz-4.4.0-104-generic
Found initrd image: /boot/initrd.img-4.4.0-104-generic
Found linux image: /boot/vmlinuz-4.4.0-103-generic
Found initrd image: /boot/initrd.img-4.4.0-103-generic
Found linux image: /boot/vmlinuz-4.4.0-101-generic
Found initrd image: /boot/initrd.img-4.4.0-101-generic
Found linux image: /boot/vmlinuz-4.4.0-98-generic
Found initrd image: /boot/initrd.img-4.4.0-98-generic
Found linux image: /boot/vmlinuz-4.4.0-97-generic
Found initrd image: /boot/initrd.img-4.4.0-97-generic
Found linux image: /boot/vmlinuz-4.4.0-96-generic
Found initrd image: /boot/initrd.img-4.4.0-96-generic
Found linux image: /boot/vmlinuz-4.4.0-93-generic
Found initrd image: /boot/initrd.img-4.4.0-93-generic
Found linux image: /boot/vmlinuz-4.4.0-92-generic
Found initrd image: /boot/initrd.img-4.4.0-92-generic
done
Purging configuration files for linux-image-4.4.0-89-generic (4.4.0-89.112) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 4.4.0-89-generic /boot/vmlinuz-4.4.0-89-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 4.4.0-89-generic /boot/vmlinuz-4.4.0-89-generic
Errors were encountered while processing:
 linux-image-extra-4.4.0-89-generic

Update 2

Success! Interestingly, dpkg --purge failed specifically on the 4.4.0-89-generic packages. I'm not really sure why. It worked for others and successfully freed up space. After running dpkg --purge on a few of the packages, I had enough space on /boot.

Commands that worked (with output omitted)

sudo dpkg --purge linux-image-4.4.0-92-generic linux-image-extra-4.4.0-92-generic
sudo dpkg --purge linux-image-4.4.0-96-generic linux-image-extra-4.4.0-96-generic
sudo dpkg --purge linux-image-4.4.0-93-generic linux-image-extra-4.4.0-93-generic
sudo dpkg --purge linux-image-4.4.0-97-generic linux-image-extra-4.4.0-97-generic

That cleared space on /root, which is now only 51% full.

user@host:~$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
udev                        1.9G     0  1.9G   0% /dev
tmpfs                       376M   11M  366M   3% /run
/dev/mapper/host--vg-root   225G   17G  198G   8% /
tmpfs                       1.9G  4.0K  1.9G   1% /dev/shm
tmpfs                       5.0M     0  5.0M   0% /run/lock
tmpfs                       1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                   472M  226M  222M  51% /boot
tmpfs                       376M     0  376M   0% /run/user/1000

Now apt-get -f install and subsequent apt-get purge <package> commands succeed.

  • 1
    I wonder what it looks like if you try dpkg --purge linux-image-extra-4.4.0-89-generic linux-image-4.4.0-89-generic. – sourcejedi Jul 12 '18 at 16:01
  • The best way to remove old kernel and old packages is to use the command on terminal sudo apt-get autoremove. Did you already tried this ?? – kannzzmm2 Jul 12 '18 at 16:02
  • @mitkan yes, I tried apt-get autoremove and get essentially identical output to apt-get -f purge <package> – fljkawejfoiuuoiuewaoifjowef Jul 12 '18 at 16:10
  • 1
    @mordoc @user535733 I'm not sure those are duplicates, as they also suggest running apt-get purge <package>, just with some other commands to list all the old packages desired to remove. My issue is that apt-get purge <package> fails – fljkawejfoiuuoiuewaoifjowef Jul 12 '18 at 16:12
  • @sourcejedi That might work. Could running dpkg --purge cause issues for apt, since I would be manually removing packages? – fljkawejfoiuuoiuewaoifjowef Jul 12 '18 at 16:13
  • You never use rm to remove a package or kernel that is in dpkg as it creates issues. But this is the exception as you have to make space. Remove one larger kernel or other file. Then the purges should work. To make sure all the parts which are in many other places, also, of the kernel you rm'ed, add it again and then delete correctly with dpkg. Since a server, you as admin should be doing updates, housecleans & other regular maintenance. – oldfred Jul 12 '18 at 16:15
  • @qwertyazertyqwertz dpkg removals should be pretty safe v.s. apt. Note dpkg has many different --force flags you can pass, so running dpkg normally shouldn't force anything. E.g. if it would break hard dependencies, it will refuse to act. – sourcejedi Jul 12 '18 at 16:54
  • qwertyazertyqwertz that's one of the answers in the duplicate: how to use dpkg if apt purge fails. Please read again... ;-) – Fabby Jul 12 '18 at 19:54

1 Answers1

2

Posting answer to my own question based on a comment

The solution is to use dpkg --purge to remove old kernel packages. Specifically, the linux-image-x.x.xx-xxx-generic and linux-image-extra-x.x.xx-xxx-generic packages must be removed. dpkg still fails for me when I only specify one of them. Also, note that dpkg --purge still fails for some of the packages. I think it's due to some of the half-configured or half-installed packages, though I didn't check.

Here are the successful purge commands I ran:

sudo dpkg --purge linux-image-4.4.0-92-generic linux-image-extra-4.4.0-92-generic
sudo dpkg --purge linux-image-4.4.0-96-generic linux-image-extra-4.4.0-96-generic
sudo dpkg --purge linux-image-4.4.0-93-generic linux-image-extra-4.4.0-93-generic
sudo dpkg --purge linux-image-4.4.0-97-generic linux-image-extra-4.4.0-97-generic

Afterwards /root is only 51% filled, as opposed to the original 100%

# Original
user@host:~$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
~~~ snip ~~~
/dev/sda1                   472M  467M     0 100% /boot

# After dpkg --purge
user@host:~$ df -h
Filesystem                  Size  Used Avail Use% Mounted on
~~~ snip ~~~
/dev/sda1                   472M  226M  222M  51% /boot

Now I can successfully fix the broken installs with

apt-get -f install
  • 1
    For future readers: Since linux-image-* packages do not place any files in /etc, --purge will do exactly the same as --remove. Some folks erroneously believe that --purge is some kind of 'force' removal - it's not. – user535733 Jul 12 '18 at 19:50