Without any kind of monitoring or alerting enabled, you may run into your /boot drive becoming full, and resulting in errors such as:
root@trex:/boot# apt-get install -f
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-image-extra-4.4.0-92-generic linux-image-extra-4.4.0-93-generic
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
linux-image-4.4.0-98-generic
Suggested packages:
fdutils linux-doc-4.4.0 | linux-source-4.4.0 linux-tools
The following NEW packages will be installed:
linux-image-4.4.0-98-generic
0 upgraded, 1 newly installed, 0 to remove and 301 not upgraded.
7 not fully installed or removed.
Need to get 0 B/21.9 MB of archives.
After this operation, 67.0 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
(Reading database ... 691458 files and directories currently installed.)
Preparing to unpack .../linux-image-4.4.0-98-generic_4.4.0-98.121_amd64.deb ...
Done.
Unpacking linux-image-4.4.0-98-generic (4.4.0-98.121) ...
dpkg: error processing archive /var/cache/apt/archives/linux-image-4.4.0-98-generic_4.4.0-98.121_amd64.deb (--unpack):
cannot copy extracted data for './boot/abi-4.4.0-98-generic' to '/boot/abi-4.4.0-98-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-98-generic /boot/vmlinuz-4.4.0-98-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 4.4.0-98-generic /boot/vmlinuz-4.4.0-98-generic
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-4.4.0-98-generic_4.4.0-98.121_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@trex:/boot# df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.8G 0 7.8G 0% /dev
tmpfs 1.6G 9.2M 1.6G 1% /run
/dev/mapper/trex--vg-root 453G 32G 399G 8% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/nvme0n1p2 473M 473M 0 100% /boot
/dev/nvme0n1p1 511M 3.4M 508M 1% /boot/efi
When your disk is at 100% full, it’s difficult to take the safe route and remove old kernels with apt-get. So the blunt way of fixing this is with rm -f.
The following 1 liner can help achieve this.
for x in $(sudo dpkg --list 'linux-image*'|awk '{ if ($1=="ii") print $2}'|grep -v `uname -r` | grep -o -P '\d.\d.\d-\d\d' ); do sudo rm -f *$x* ; done; sudo apt-get autoremove
This command was derived from this gist: https://gist.github.com/ipbastola/2760cfc28be62a5ee10036851c654600 that does a great job reviewing the different checks that should be done, and how to achieve the same manually.
