1

My Ubuntu 16.04 system's boot partition is completely full, and I have had problems trying to get it fixed.

$ df -h
udev                        2,9G       0  2,9G    0% /dev
tmpfs                       597M     63M  535M   11% /run
/dev/mapper/user--vg-root   109G     67G   37G   65% /
tmpfs                       3,0G     13M  3,0G    1% /dev/shm
tmpfs                       5,0M       0  5,0M    0% /run/lock
tmpfs                       3,0G       0  3,0G    0% /sys/fs/cgroup
/dev/sda1                   472M    471M     0  100% /boot
tmpfs                       597M       0  597M    0% /run/user/999
tmpfs                       597M       0  597M    0% /run/user/1000

I tried to do sudo apt-get autoremove but that fails:

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-96-generic : Depends: linux-image-4.4.0-96-generic but it is not installed
 linux-image-generic : Depends: linux-image-4.4.0-96-generic but it is not installed
                       Recommends: thermald but it is not installed
 E: Unmet dependencies. Try using -f.

Using -f runs me into the error that there is no space left...

Maybe this information is needed:

 $ dpkg -l | grep linux
 ii  console-setup-linux                1.108ubuntu15.3                            all          Linux specific part of console-setup
 ii  libselinux1:amd64                  2.4-3build2                                amd64        SELinux runtime shared libraries
 ii  linux-base                         4.0ubuntu1                                 all          Linux image base package
 iF  linux-firmware                     1.157.11                                   all          Firmware for Linux kernel drivers
 iU  linux-generic                      4.4.0.96.101                               amd64        Complete Generic Linux kernel and headers
 ii  linux-headers-4.4.0-64             4.4.0-64.85                                all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-64-generic     4.4.0-64.85                                amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 ii  linux-headers-4.4.0-66             4.4.0-66.87                                all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-66-generic     4.4.0-66.87                                amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 ii  linux-headers-4.4.0-70             4.4.0-70.91                                all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-70-generic     4.4.0-70.91                                amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 ii  linux-headers-4.4.0-71             4.4.0-71.92                                all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-71-generic     4.4.0-71.92                                amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 ii  linux-headers-4.4.0-72             4.4.0-72.93                                all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-72-generic     4.4.0-72.93                                amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 ii  linux-headers-4.4.0-75             4.4.0-75.96                                all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-75-generic     4.4.0-75.96                                amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 ii  linux-headers-4.4.0-78             4.4.0-78.99                                all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-78-generic     4.4.0-78.99                                amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 ii  linux-headers-4.4.0-79             4.4.0-79.100                               all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-79-generic     4.4.0-79.100                               amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 ii  linux-headers-4.4.0-81             4.4.0-81.104                               all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-81-generic     4.4.0-81.104                               amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 ii  linux-headers-4.4.0-83             4.4.0-83.106                               all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-83-generic     4.4.0-83.106                               amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 ii  linux-headers-4.4.0-87             4.4.0-87.110                               all          Header files related to Linux kernel version 4.4.0
 ii  linux-headers-4.4.0-87-generic     4.4.0-87.110                               amd64        Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
 iU  linux-headers-4.4.0-96             4.4.0-96.119                               all          Header files related to Linux kernel version 4.4.0
 iU  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
 iU  linux-headers-generic              4.4.0.96.101                               amd64        Generic Linux kernel headers
 rc  linux-image-4.4.0-21-generic       4.4.0-21.37                                amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-4.4.0-64-generic       4.4.0-64.85                                amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-4.4.0-66-generic       4.4.0-66.87                                amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-4.4.0-70-generic       4.4.0-70.91                                amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-4.4.0-71-generic       4.4.0-71.92                                amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-4.4.0-72-generic       4.4.0-72.93                                amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-4.4.0-75-generic       4.4.0-75.96                                amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-4.4.0-78-generic       4.4.0-78.99                                amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-4.4.0-79-generic       4.4.0-79.100                               amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-4.4.0-81-generic       4.4.0-81.104                               amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 iF  linux-image-4.4.0-83-generic       4.4.0-83.106                               amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 iF  linux-image-4.4.0-87-generic       4.4.0-87.110                               amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
 rc  linux-image-extra-4.4.0-21-generic 4.4.0-21.37                                amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-extra-4.4.0-64-generic 4.4.0-64.85                                amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-extra-4.4.0-66-generic 4.4.0-66.87                                amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-extra-4.4.0-70-generic 4.4.0-70.91                                amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-extra-4.4.0-71-generic 4.4.0-71.92                                amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-extra-4.4.0-72-generic 4.4.0-72.93                                amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-extra-4.4.0-75-generic 4.4.0-75.96                                amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-extra-4.4.0-78-generic 4.4.0-78.99                                amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 ii  linux-image-extra-4.4.0-79-generic 4.4.0-79.100                               amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 iF  linux-image-extra-4.4.0-81-generic 4.4.0-81.104                               amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 iU  linux-image-extra-4.4.0-83-generic 4.4.0-83.106                               amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 iU  linux-image-extra-4.4.0-87-generic 4.4.0-87.110                               amd64        Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
 rc  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
 iU  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
 iU  linux-image-generic                4.4.0.96.101                               amd64        Generic Linux kernel image
 iU  linux-libc-dev:amd64               4.4.0-89.112                               amd64        Linux Kernel Headers for development
 ii  linuxbrew-wrapper                  20150804-3                                 all          Missing Package Manager For Linux
 ii  util-linux                         2.27.1-6ubuntu3.3                          amd64        miscellaneous system utilities
  • 2
    The purge-old-kernels (/usr/bin/purge-old-kernels) script from the byobu package will clean that right up, politely (keeping the package management system happy). If you don't have byobu installed, let me know and I'll post the script. DO NOT Manually delete stuff. – waltinator Sep 24 '17 at 14:32
  • I don't have that installed... – user3142695 Sep 24 '17 at 15:32
2

Here's purge-old-kernels from byobu 5.106-0ubuntu1.

#!/bin/sh
#
#    purge-old-kernels - remove old kernel packages
#    Copyright (C) 2012 Dustin Kirkland <kirkland@ubuntu.com>
#
#    Authors: Dustin Kirkland <kirkland@ubuntu.com>
#             Kees Cook <kees@ubuntu.com>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, version 3 of the License.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Ensure we're running as root
if [ "$(id -u)" != 0 ]; then
    echo "ERROR: This script must run as root.  Hint..." 1>&2
    echo "  sudo $0 $@" 1>&2
    exit 1
fi

# NOTE: This script will ALWAYS keep the currently running kernel
# NOTE: Default is to keep 2 more, user overrides with --keep N
KEEP=2
# NOTE: Any unrecognized option will be passed straight through to apt
APT_OPTS=
while [ ! -z "$1" ]; do
    case "$1" in
        --keep)
            # User specified the number of kernels to keep
            KEEP="$2"
            shift 2
        ;;
        *)
            APT_OPTS="$APT_OPTS $1"
            shift 1
        ;;
    esac
done

# Build our list of kernel packages to purge
CANDIDATES=$(ls -tr /boot/vmlinuz-* | head -n -${KEEP} | grep -v "$(uname -r)$" | cut -d- -f2- | awk '{print "linux-image-" $0 " linux-headers-" $0}' )
for c in $CANDIDATES; do
    dpkg-query -s "$c" >/dev/null 2>&1 && PURGE="$PURGE $c"
done

if [ -z "$PURGE" ]; then
    echo "No kernels are eligible for removal"
    exit 0
fi

apt $APT_OPTS remove --purge $PURGE

Not the answer you're looking for? Browse other questions tagged or ask your own question.