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