Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:server:alte-kernel-loeschen]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

anwenderwiki:server:alte-kernel-loeschen [2016/06/20 20:07] (aktuell)
Zeile 1: Zeile 1:
 +{{tag>​kernel }}
 +
 +====== Alte Kernel löschen ======
 +
 +Bei Updates wird immer wieder mal ein neuer Kernel installiert,​ alte Kernel werden aber nicht automatisch entfernt. Dies ist vor allem dann ärgerlich, wenn ''/​boot''​ auf einer eigenen Partition liegt, die durch die alten Kernel vollläuft.
 +
 +Das Skript ''​purge-old-kernels''​ ist dazu gedacht, hier aufzuräumen. Standardmäßig wird der aktuell verwendete und ein weiterer Kernel behalten, alle anderen Kernel werden samt der zugehörigen Header und etwaiger Extensions gelöscht.
 +
 +Im Skript kann man einstellen, ob man ''​aptitude''​ oder ''​apt-get''​ verwenden möchte.
 +
 +Optionen sind:
 +
 +  purge-old-kernels -s
 +
 +Es wird nur angezeigt, was passieren würde, wenn man das ''​-s''​ weglässt.
 +
 +  purge-old-kernels --keep 4
 +
 +Es werden vier Kernel behalten (der aktuell laufende und weitere drei).
 +
 +Und hier ist das Skript:
 +
 +<file purge-old-kernels>​
 +#!/bin/bash
 +#
 +# 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>​
 +#
 +# Minor modifications by Jörg Richter
 +#
 +#
 +# 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
 +
 +# aptitude or apt-get?
 +APT="​aptitude"​
 +#​APT="​apt-get"​
 +
 +# NOTE: This script will ALWAYS keep the currently running kernel
 +# NOTE: Default is to keep 2 more, user overrides with --keep N
 +KEEP=2
 +SIMULATE="​0"​
 +
 +# NOTE: Any unrecognized option will be passed straight through to apt-get/​aptitude
 +APT_OPTS=
 +while [ ! -z "​$1"​ ]; do
 +    case "​$1"​ in
 +        --keep)
 +            # User specified the number of kernels to keep
 +            KEEP="​$2"​
 +            shift 2
 +        ;;
 +        -s)
 +            # User specified the number of kernels to keep
 +            SIMULATE="​1"​
 +            shift 1
 +        ;;
 +        *)
 +            APT_OPTS="​$APT_OPTS $1"
 +            shift 1
 +        ;;
 +    esac
 +done
 +
 +# Build our list of kernel packages to purge
 +# Original code, keeps non-generic linux-headers
 +#​CANDIDATES=$(ls -tr /​boot/​vmlinuz-* | head -n -${KEEP} | grep -v "​$(uname -r)$" | cut -d- -f2- | awk '​{print "​linux-image-"​ $0 " linux-image-extra-"​ $0 " linux-headers-"​ $0 " linux-headers-"​ ${0}}' )
 +
 +CANDIDATES=""​
 +for v in $(ls -tr /​boot/​vmlinuz-* | head -n -${KEEP} | grep -v "​$(uname -r)$" | cut -d- -f2-); do
 +    CANDIDATES="​$CANDIDATES linux-image-$v linux-image-extra-$v linux-headers-$v linux-headers-${v%-generic}"​
 +done
 +
 +
 +
 +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
 +
 +if [ "​$SIMULATE"​ = "​1"​ ]; then
 +    echo "$APT $APT_OPTS purge $PURGE"​
 +else
 +    $APT $APT_OPTS purge $PURGE
 +fi
 +</​file>​
  
 [[anwenderwiki:server:alte-kernel-loeschen]] anwenderwiki/server/alte-kernel-loeschen.txt · Zuletzt geändert: 2016/06/20 20:07 (Externe Bearbeitung)