/dev/sda1 disk full - 100% usage

6,501

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

#!/bin/sh
#
#    purge-old-kernels - remove old kernel packages
#    Copyright (C) 2012 Dustin Kirkland <[email protected]>
#
#    Authors: Dustin Kirkland <[email protected]>
#             Kees Cook <[email protected]>
#
#    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
Share:
6,501

Related videos on Youtube

user3142695
Author by

user3142695

People who say nothing is impossible should try gargling with their mouths closed.

Updated on September 18, 2022

Comments

  • user3142695
    user3142695 over 1 year

    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
    
    • goo
      goo over 6 years
      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.
    • user3142695
      user3142695 over 6 years
      I don't have that installed...