Ubuntu is great at “set it and forget it” maintenance. Patches come down, and generally life is good.
However, the frequency of kernel updates can fill-up a modest /boot partition.
Recently faced with an inability to install an updated kernel due to a limited /boot partition, I had to do some housekeeping. I put together two quick scripts to help with this.
showInactiveKernels
Of the kernels installed on the system, which are not the one currently running?
#!/usr/bin/env bash
echo "Current Kernel: $(uname -r)"
old=$(dpkg -l "linux-image*" | grep '^[i]' | awk '{print $2}' | egrep -v "linux-image-$(uname -r)|linux-image-generic")
if [ "" == "$old" ] ; then
echo "No inactive kernels found"
exit
fi
for o in $old; do
echo " inactive kernel: $o"
done
removeInactiveKernels
Elaborating on the last script, prompting to remove them as you go
#!/usr/bin/env bash
old=$(dpkg -l "linux-image*" | grep '^[i]' | awk '{print $2}' | egrep -v "linux-image-$(uname -r)|linux-image-generic")
if [ "" == "$old" ] ; then
echo "No inactive kernels found"
exit
fi
for o in $old; do
response='no'
echo ""
echo "Current Kernel: $(uname -r)"
read -p "Do you wish to remove $o? ([no]|yes) " response
if [ "$response" == "yes" ] ; then
echo " ... removing $o"
apt-get -y remove "$o"
fi
done
Using these provided a quick way to identify which kernels I could consider for removal/uninstallation, allowing me to clean-up /boot in no time.