Script Per Pulire Il Sistema Da Kernel non più utilizzati

Guides, tutorials & docs
Locked
User avatar
Roberto_65
Collaboratore
Collaboratore
Posts: 516
Joined: 6 December 2007, 23:56
OpenMandriva: 2009.1
Kernel: i686 x86_64
Desktop: Gnome Xfce4
Location: Triangolo delle Bermude
Contact:

Script Per Pulire Il Sistema Da Kernel non più utilizzati

Post by Roberto_65 »

Questo script era stato fatto da Odites qualche tempo fa, io l'ho completato mettendo altri controlli e fornendo una interfaccia grafica semplice da usare.

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
Per usarlo basta ricopiare lo script di sopra in un file, dargli i permessi di esecuzione e salvare dentro /usr/bin
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
Configurazione:

Code: Select all

# echo "nome_utente ALL=(ALL)  NOPASSWD:  ALL" >> /etc/sudoers
Roberto_65
Packager delle MIB-Live
Il creatore delle MIB-Live
L'inventore di MIB-LiveToFlash
Triangolo delle Bermude http://www.sitohd.com/siti/3209

Locked