Savoir si un reboot est requis après une mise jour
Suite à certaines mises à jour, il est nécessaire de redémarrer le système pour qu’elles soient prises en compte, en particulier pour les mises à jour du noyau.
Si l’on est connecté directement sur le PC, on voit l’icone de notification dans la barre de menu de Gnome. Si l’on accède à distance à cette station, on ne voit généralement pas cette icone !
Un moyen simple pour détecter cette situation est de comparer le noyau courant et celui qui est inscrit dans le fichier grub.conf ou menu.lst.
Exemple de contenu :
# more /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/vg_syst/rootvol
# initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.1.10.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-128.1.10.el5 ro root=/dev/vg_syst/rootvol pci=nommconf all-generic-ide rhgb quiet
initrd /initrd-2.6.18-128.1.10.el5.img
title CentOS (2.6.18-92.1.22.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.1.22.el5 ro root=/dev/vg_syst/rootvol pci=nommconf all-generic-ide rhgb quiet
initrd /initrd-2.6.18-92.1.22.el5.img
title CentOS (2.6.18-92.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/vg_syst/rootvol pci=nommconf all-generic-ide rhgb quiet
initrd /initrd-2.6.18-92.el5.img
Dans cette exemple, au prochain démarrage de la station, elle va démarrer sur le noyau 2.6.18-128.1.10.el5 (CentOS 5.3). Pour n’avoir que le N° de version du noyau, il faut utiliser la commande :
# grep title /boot/grub/grub.conf | head -1 | awk '{print $3}' | sed 's/(//' | sed 's/)//'
2.6.18-128.1.10.el5
Pour connaitre la version du noyau actif :
# uname -r
2.6.18-128.1.10.el5
Donc, il suffit de comparer si les 2 chaines sont identiques. Pour cela on peut utiliser le script suivant :
#!/bin/sh
#
# Controle si un reboot est nécessaire
#
NewKernel=`grep title /boot/grub/grub.conf | head -1 | awk '{print $3}' | sed 's/(//' | sed 's/)//'`
CurrentKernel=`uname -r'`
#echo -e "\n\nNoyau en cours d'utilisation : $CurrentKernel"
#echo -e "Noyau du prochain reboot : $NewKernel\n\n"
if [ "$CurrentKernel" != "$NewKernel" ]
then
echo -e "\nUn reboot est necessaire pour prendre en compte le nouveau noyau ($NewKernel)
."
else
echo -e "\nPas de nouveau noyau."
fi