In un momento di follia e applicando un po’ di quello che ho imparato in un corso base di amministratore Linux ho deciso di provare a fare uno script per automatizzare l’eliminazione dei vecchi kernel su Ubuntu, ma potrebbe funzionare anche su altre distribuzioni basate su Debian.
Lo script richiede per essere usato di essere root o usare sudo , comunque questo viene controllato. Inoltre è necessario avere installato aptitude ed anche questa condizione è controllata.
Lo script prevede un parametro search oppure remove , il primo mostrerà solo gli eventuali kernel da eliminare il secondo lancerà la rimozione dei pacchetti chiedendo comunque conferma.
Lo script in pratica si limita ad eliminare i pacchetti relativi al kernel di versione diversa da quello in uso , quindi dopo che è stato aggiornato il kernel fare un reboot prima di lanciare lo script, altrimenti verrà cancellato anche il pacchetto relativo all’ultima release del kernel.
ATTENZIONE: usatelo a vostro rischio e pericolo
Per chi abbia voglia di postare suggerimenti per lo script , che è sicuramente migliorabile, può usare questo post.
Lo script è presente qui sotto:
#!/bin/bash ###Info # About: Script for cleaning old kernel # version : 0.01 # Use at you own risk! # by Lost Bob (lostbob.wordpress.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, either version 3 of the License, or # any later version. # # 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/>. ### apt=/usr/bin/aptitude pkgKernel='linux-image' type='-generic' version=$(uname -r) virtualpkg=$pkgKernel$type # Kernel actually installed kernelInst=$pkgKernel"-"$version # Testing root or sudo if [ $(id -u) -ne 0 ]; then echo "must be root" exit 1 fi # Testing aptitude if [ ! -x $apt ]; then echo "you must install aptitude" exit 1 fi echo "Kernel installed " $kernelInst case "$1" in -z) echo "usage $0 search or remove" exit 1;; 'search') operation=$1;; 'remove') operation=" -P "$1;; *) echo "usage $0 search or remove" exit 1;; esac # all kernel package installed without virtual package and actual version $apt $operation "?name($pkgKernel) ?installed ?not(?name($virtualpkg)) ?not(?name($kernelInst))"
Per utilizzarlo copiare il test in un file .sh (io l’ho chiamato _cleanOldKernl.sh ) rendetelo eseguibile e lanciatelo.
Consiglio di spostarlo in /sbin così per lanciarlo basterà usare solo il nome dello script più il suo parametro.