diff options
author | Leif Johansson <leifj@sunet.se> | 2015-08-05 12:01:44 +0200 |
---|---|---|
committer | Leif Johansson <leifj@sunet.se> | 2015-08-05 12:01:44 +0200 |
commit | f1e64a3b0613860b96c1d911cd54cd9e05e96a0e (patch) | |
tree | 28867582cb5c77a4960a1decc45688be51932a41 /global/overlay/usr | |
parent | 231e6e2348dfa11a159017fd9d54ff1063f7ed78 (diff) |
tool to purge kernelssunet-ops-2015-08-05-v01
Diffstat (limited to 'global/overlay/usr')
-rwxr-xr-x | global/overlay/usr/local/sbin/purge-old-kernels | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/global/overlay/usr/local/sbin/purge-old-kernels b/global/overlay/usr/local/sbin/purge-old-kernels new file mode 100755 index 0000000..675f810 --- /dev/null +++ b/global/overlay/usr/local/sbin/purge-old-kernels @@ -0,0 +1,58 @@ +#!/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-get +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-get $APT_OPTS remove --purge $PURGE |