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.
dpkg --purge linux-image-extra-4.4.0-89-generic linux-image-4.4.0-89-generic
.apt-get autoremove
and get essentially identical output toapt-get -f purge <package>
apt-get purge <package>
, just with some other commands to list all the old packages desired to remove. My issue is thatapt-get purge <package>
failsdpkg --purge
cause issues forapt
, since I would be manually removing packages?