8. Annexe B. - fichier rc.0 - rc.6 complet

Contenu de cette section

#! /bin/sh
#
# rc.6          Ce fichier est execute par init quand il passe au
#               runlevel (niveau d'execution) 0 (halt) ou runlevel 6
#               (redemarrage). Il tue tous les processus, demonte les
#               systemes de fichiers et soit stoppe soit redemarre.
#
# Version:      @(#)/etc/rc.d/rc.6      1.50    1994-01-15
#
# Author:       Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
# Modified by:  Patrick J. Volkerding, <volkerdi@ftp.cdrom.com>
# Modified by:  Michael A. Robinton, <michael@bzs.org> for RAID shutdown

  # Positionner le chemin.
  PATH=/sbin:/etc:/bin:/usr/bin

  # Mettre en mode saut de ligne pour eviter l'effet d'escalier.
  stty onlcr

  echo "Lancement du script d'extinction $0:"

  # Trouver comment nous sommes appeles.
  case "$0" in
        *0)
                message="Le systeme est stoppe."
                command="halt"
                ;;
        *6)
                message="Redemarrage."
                command=reboot
                ;;
        *)
                echo "$0: veuillez m'appeler en tant que \"rc.0\" or \"rc.6\" !"
                exit 1
                ;;
  esac

  # Tuer tous les processus.
  # INIT est sense s'occuper entierement de tout ceci, mais il n'a pas
  # toujours fonctionne correctement sans cette seconde passe de
  # tuerie de processus. Puisqu'INIT a deja averti les utilisateurs
  # que les processus etaient tues, nous eviterons d'afficher cette
  # information cette fois-ci.
  if [ "$1" != "fast" ]; then # shutdown n'a pas encore tue tous les processus
    killall5 -15 
    killall5 -9
  fi

  # Essayer d'arreter les quotas et la comptabilite.
  if [ -x /usr/sbin/quotaoff ]
  then
        echo "Arret des quotas."
        /usr/sbin/quotaoff -a
  fi
  if [ -x /sbin/accton ]
  then
        echo "Arret de la comptabilite."
        /sbin/accton
  fi

  # Avant de demonter les systemes de fichiers ecrire un
  # enregistrement reboot ou halt dans wtmp.
  $command -w

  # Sauvegarde de l'heure locale
  [ -e /usr/lib/zoneinfo/localtime ] && cp /usr/lib/zoneinfo/localtime /etc

  # Demontage asynchrone de tout systeme de fichiers distant
  echo "Demontage des systemes de fichiers distants."
  umount -a -tnfs &

  # vous devez avoir lance
  # 'cat /proc/mdstat | grep md0 > {your boot vol}/linux/raidgood.ref'  
  # avant que linuxrc s'execute proprement avec cette information
  RAIDSTATUS=`/bin/cat /proc/mdstat | /usr/bin/grep md0 # capture raid status`

  # Arret de la swap, puis demontage des systemes de fichiers locaux.
  # effacement de mdtab par la meme occasion
  echo "Arret de la swap."
  swapoff -a
  echo "Demontage des systemes de fichiers locaux."
  umount -a -tnonfs

  # Ne pas remonter les volumes UMSDOS racine :
  if [ ! "`mount | head -1 | cut -d ' ' -f 5`" = "umsdos" ]; then
    mount -n -o remount,ro /
  fi

  # le peripherique racine reste monte
  # monter les systemes de fichiers DOS en lecture/ecriture
  echo "Ecriture des drapeaux RAID de demarrage en lecture seule."
  mount -n /dosa
  mount -n /dosc
  # creation du drapeau RAID monte en lecture seule en double
  # contenant l'etat a l'extinction de la matrice RAID
  echo ${RAIDSTATUS} > /dosa/linux/raidstat.ro
  echo ${RAIDSTATUS} > /dosc/linux/raidstat.ro

  umount -n /dosa
  umount -n /dosc

  # Arreter toutes les matrices RAID (sauf la racine)
  echo "Arret du RAID"
  mdstop -a

  # Voir si c'est une situation de coupure de courant.
  if [ -f /etc/power_is_failing ]; then
    echo "Extinction de l'UPS, a+."
    /sbin/powerd -q
    exit 1
  fi

  # Maintenant arret ou redemarrage.
  echo "$message"
  [ ! -f /etc/fastboot ] && echo "Au prochain demarrage fsck sera FORCE."
  $command -f


Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre