Code: Select all
#!/bin/sh
##############################################################
# MIB - Pianetalinux - http://mib.pianetalinux.org/mib
#
# Script Universale Per Pulire Il Sistema Da Kernel non più utilizzati
#
# Ideato da Odites e Roberto_65
#
# #############################################################
# Controllo utente: Se è root non occorre avere sudo
# $fra = flag variabile controllo utente: 1=root 0=utente
fra=""
uteutente_attivo=`whoami`
if [ uteutente_attivo == "root" ]; then
fra="1"
else
fra="0"
fi
if [ fra == "0" ]; then
# Controllo esistenza di sudo
if [ ! -f "/etc/sudoers" ]; then
zenity --error --text "Bisogna installare e configurare sudo: \n\nDopo aver eseguito il comando: urpmi sudo \neditare la seguente riga in /etc/sudoers: \necho \"$utente_attivo ALL=(ALL) NOPASSWD: ALL\" >> /etc/sudoers"
zenity --info --text "Procedura annullata."
exit 1
fi
fi
#-------------------------- SCRIPT DI GESTIONE: -----------------------
zenity --info --text "Script Universale Per Pulire Il Sistema Da Kernel Inutili \n \n ${0} Ver. 0.3.1 \n\nM.I.B. - 2009 by Odites e Roberto_65."
#immagini dei kernel presenti in /boot
cd /boot
zup=$(ls /boot/config-* | sed "s/\/boot\/config-desktop-server-desktop586//g")
#rpm corrispondenti alle immagini dei kernel
zap=$(rpm -qf ${zup})
#numero dei kernel installati
zog=$(echo ${zup} | wc -w)
#elenco dei kernel e selezione kernel da trattenere
ve="" && ve1="" && ziz="" && vek=""
for cic in $zap
do
ziz=$((++ziz))
ve="${ve1} FALSE ${cic}"
ve1=$ve
done
if [ $ziz == 1 ]; then
vek=${ve:7}
zenity --error --text "In questo sistema vi e' presente un solo kernel: \n\n${vek}"
exit 1
fi
zip=""
zip=$(zenity --width=430 --height=350 --list --text="Selezionare il kernel da tenere:" --radiolist --column "Scegli:" --column "Opzione:" $ve --separator='\n')
if [ ! $zip ]; then
zenity --error --text "Procedura annullata."
exit 1
fi
#kernel buono
#zix=$(echo $zap | awk -v zop=$zip '{print $zop}')
#kernel buono = $zip
zix=$zip
num0=`echo ${zip} | awk -F "-" '{print $2}'`
num1=`echo ${zip} | awk -F "-" '{print $3}'`
num2=`echo ${zip} | awk -F "-" '{print $4}'`
num3=`echo ${zip} | awk -F "-" '{print $5}'`
num4=`echo ${zip} | awk -F "-" '{print $6}'`
knum=$num1"-"$num2
#Controllo se si è selezionato il kernel corrente; se è si annulla l'operazione
un=$num0"-"$num1
u=`uname -r` && un=`echo $u | awk -F "-" '{print $2}'`"-"$num1
if [ ${zip/${un}} == $zip ]; then
zenity --error --text "Fra i Kernels da eliminare vi è quello che stai utilizzando. \n\nPer eliminarlo consiglio di riavviare \nil computer con un'altro kernel. \n\nKernel in uso: \n""${zip/${un}}"
zenity --error --text="Procedura annullata."
exit 1
fi
#kernel da eliminare sia quelli non utilizzati, che tutti i devel, latest, headers e source
zex="" && khe="" && dre="" && lit="" && sor=""
zex=$(echo $zap | sed "s/${zix}//g")
khe=$(rpm -qa kernel-headers-*)
dre=$(rpm -qa kernel-*-devel*)
lit=$(rpm -qa kernel-*-latest*)
sor=$(rpm -qa kernel-source*)
tip=$(echo ${zix%-2*} | sed "s/kernel-//g")
# Azzero le variabili se ha trovato valori di kernel corrente installato
if [ $dre == "kernel-${tip}-devel-${knum}-${num3}-${num4}" ]; then
dre=""
fi
if [ $lit == "kernel-${tip}-latest-${knum}-${num3}-${num4}" ]; then
lit=""
fi
if [ ! -eq $khe == "kernel-header-${knum}-${num3}-${num4}" ]; then
khe=""
fi
if [ $sor == "kernel-source-${knum}-${num3}-${num4}" ]; then
sor=""
fi
#Settaggio del tipo, del numero e dei suffissi, sia quello finale che quello completo
num=$(echo $zix | sed "s/kernel-${tip}-//g" | awk -F "-" '{print $1}')|zenity --progress --auto-close --text="Attendere prego..."
zenity --width=450 --height=50 --question --text "kernel da togliere: \n${zex}\n${dre}\n${lit}\n${sor}\n${khe} \n\nkernel da tenere: \n${zix} "
if [ $? == 1 ]; then
zenity --error --text="Procedura annullata."
exit 1
fi
ksource="linux-"$ksel
#Disinstalla kernel inutili e tutti i devel d installazione Latest del kernel selezionato
if [ $fra == "0" ]; then
#sudo rpm -e --nodeps $zex $dre $lit $sor|zenity --progress --pulsate --auto-close --text="Eliminazione kernels in corso..."
if [ ! $zex == "" ]; then
sudo rpm -e --nodeps $zex |zenity --progress --pulsate --auto-close --text="Eliminazione kernels in corso..."
fi
if [ ! $sor == "" ]; then
sudo rpm -e --nodeps $sor |zenity --progress --pulsate --auto-close --text="Eliminazione kernels-source in corso..."
fi
if [ ! $khe == "" ]; then
sudo rpm -e --nodeps $khe |zenity --progress --pulsate --auto-close --text="Eliminazione kernels-header in corso..."
fi
if [ ! $dre == "" ]; then
sudo rpm -e --nodeps $dre |zenity --progress --pulsate --auto-close --text="Eliminazione kernels-devel in corso..."
fi
if [ ! $lit == "" ]; then
sudo rpm -e --nodeps $lit |zenity --progress --pulsate --auto-close --text="Eliminazione kernels-latest in corso..."
fi
else
#rpm -e --nodeps $zex $dre $lit $sor|zenity --progress --pulsate --auto-close --text="Eliminazione kernels in corso..."
if [ ! $zex == "" ]; then
rpm -e --nodeps $zex |zenity --progress --pulsate --auto-close --text="Eliminazione kernels in corso..."
fi
if [ ! $sor == "" ]; then
rpm -e --nodeps $sor |zenity --progress --pulsate --auto-close --text="Eliminazione kernels-source in corso..."
fi
if [ ! $khe == "" ]; then
rpm -e --nodeps $khe |zenity --progress --pulsate --auto-close --text="Eliminazione kernels-header in corso..."
fi
if [ ! $dre == "" ]; then
rpm -e --nodeps $dre |zenity --progress --pulsate --auto-close --text="Eliminazione kernels-devel in corso..."
fi
if [ ! $lit == "" ]; then
rpm -e --nodeps $lit |zenity --progress --pulsate --auto-close --text="Eliminazione kernels-latest in corso..."
fi
fi
# Ricalcolo variabili con ricerca kernel installati
khe="" && dre="" && lit="" && sor=""
# sor=$(rpm -qa kernel-source*)
#installa latest
lit=$(rpm -qa kernel-*-latest*)
if [ ! -eq $lit == "" ]; then
risp=""
risp=$(zenity --width=300 --height=50 --list --text="Ti interessano i Latest del kernel corrente di \n$zip ?? \n\n (di solito si usano per installare le macchine virtuali come Vmware)" --radiolist --column "Scegli:" --column "Opzione:" FALSE "si" FALSE "no" --separator='\n')
if [ ! $risp ]; then
zenity --error --text="Procedura annullata."
exit 1
fi
if [ $risp == "si" ]; then
if [ $fra == "0" ]; then
sudo /usr/sbin/urpmi --force kernel-${tip}-latest-${knum}|zenity --progress --pulsate --auto-close --text="Installazione Latest in corso..."
else
/usr/sbin/urpmi --force kernel-${tip}-latest-${knum}|zenity --progress --pulsate --auto-close --text="Installazione Latest in corso..."
fi
fi
fi
#Installazione Devel
dre=$(rpm -qa kernel-*-devel*)
if [ ! -eq $dre == "" ]; then
risp=""
risp=$(zenity --width=300 --height=50 --list --text="Ti interessano i Devel del kernel corrente di \n$zip ?? \n\n (di solito si usano per compilare alcuni moduli)" --radiolist --column "Scegli:" --column "Opzione:" FALSE "si" FALSE "no" --separator='\n')
if [ ! $risp ]; then
zenity --error --text="Procedura annullata."
exit 1
fi
if [ $risp == "si" ]; then
if [ $fra == "0" ]; then
sudo urpmi kernel-${tip}-devel-${knum}|zenity --progress --pulsate --auto-close --text="Installazione desktop-devel in corso..."
else
urpmi kernel-${tip}-devel-${knum}|zenity --progress --pulsate --auto-close --text="Installazione desktop-devel in corso..."
fi
fi
fi
#Installazione Headers
khe=$(rpm -qa kernel-headers-*)
if [ ! -eq $khe == "" ]; then
risp=""
risp=$(zenity --width=300 --height=50 --list --text="Ti interessano i Headers del kernel corrente di \n$zip ?? \n\n (headers sono i file di include (.h) che sono normalmente utilizzati nella programmazione in C)" --radiolist --column "Scegli:" --column "Opzione:" FALSE "si" FALSE "no" --separator='\n')
if [ ! $risp ]; then
zenity --error --text="Procedura annullata."
exit 1
fi
if [ $risp == "si" ]; then
if [ $fra == "0" ]; then
sudo urpmi kernel-headers|zenity --progress --pulsate --auto-close --text="Installazione kernel-header in corso..."
else
urpmi kernel-headers|zenity --progress --pulsate --auto-close --text="Installazione kernel-header in corso..."
fi
fi
fi
#Installazione Kernel-source se non è installato
if [ ! -d "/usr/src/"$ksource ]; then
risp=""
risp=$(zenity --width=300 --height=50 --list --text="Ti interessa il kernel-source di \n\n$zip ?" --radiolist --column "Scegli:" --column "Opzione:" FALSE "si" FALSE "no" --separator='\n')
if [ ! $risp ]; then
zenity --error --text "Procedura annullata."
exit 1
fi
if [ $risp == "si" ]; then
if [ $fra == "0" ]; then
sudo urpmi kernel-source-${knum}|zenity --progress --pulsate --auto-close --text="Installazione kernel-source in corso..."
else
urpmi kernel-source-${knum}|zenity --progress --pulsate --auto-close --text="Installazione kernel-source in corso..."
fi
fi
fi
#Rigenera i link simbolici
cd /boot
if [ $fra == "0" ]; then
rm -f /boot/System.map /boot/config /boot/initrd-${num2}.img /boot/vmlinuz-${num2}
ln -s config-${num1}-${num0}-${num2} config
ln -s System.map-${num1}-${num0}-${num2} System.map
ln -s initrd-${num1}-${num0}-${num2}.img initrd-desktop.img
ln -s vmlinuz-${num1}-${num0}-${num2} vmlinuz-desktop
else
sudo rm -f /boot/System.map /boot/config /boot/initrd-${num2}.img /boot/vmlinuz-${num2}
sudo ln -s config-${num1}-${num0}-${num2} config
sudo ln -s System.map-${num1}-${num0}-${num2} System.map
sudo ln -s initrd-${num1}-${num0}-${num2}.img initrd-desktop.img
sudo ln -s vmlinuz-${num1}-${num0}-${num2} vmlinuz-desktop
fi
zenity --question --text "Operazione eseguita con successo: \n\nKernel trattenuto: \n$zip \n\nSi consiglia di riavviare il sistema."
exit
Lo script puo' essere eseguito anche da un utente normale.
Per eseguire lo script da utente bisogna installare e configurare SUDO.
Installazione di SUDO:
Code: Select all
# urpmi sudo
Code: Select all
# echo "nome_utente ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers