Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:server:alte-kernel-loeschen]] 
no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


anwenderwiki:server:alte-kernel-loeschen [2016/06/20 22:07] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
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 22:07 von 127.0.0.1