Précédent Suivant Chapitre Titre Tables Matières

11.9 Les processus Boot, Init et Shutdown


Cette section contient des informations sur ce qui se passe au démarrage et à l'arrêt du système Red Hat Linux. Commençons par les informations qui se trouvent dans /etc/sysconfig.

11.9.1 Information Sysconfig

Voici une description des différents fichiers qui se trouvent dans /etc/sysconfig, leurs fonctions, et leurs contenus.

Fichiers dans /etc/sysconfig

Les fichiers qui suivent se trouvent normalement dans /etc/sysconfig :

* /etc/sysconfig/clock

* /etc/sysconfig/keyboard

* /etc/sysconfig/mouse

* /etc/sysconfig/network

* /etc/sysconfig/pcmcia

* /etc/sysconfig/amd

* /etc/sysconfig/tape

Jetons un coup d'oeil à chacun de ces fichiers.

/etc/sysconfig/clock - Ce fichier contrôle l'interprétation des valeurs lues à partir de l'horloge système. Les anciennes versions de Red Hat Linux utilisaient les valeurs suivantes :

* CLOCKMODE=mode, les valeurs de mode pouvant être :

GMT - indique que l'horloge est réglée en UTC.

ARC - sur machine Alpha, indique que l'offset "ARC console's 42-year time" est activé.

Actuellement, les valeurs correctes sont :

* UTC=boolean, les valeurs de boolean pouvant être :

true - indique que l'horloge est réglée en UTC. Toute autre valeur indique que l'horloge est réglée en heure locale.

* ARC=boolean, les valeurs de boolean pouvant être :

true - sur machine Alpha seulement, indique que l'offset "ARC console's 42-year time" est activé. Toute autre valeur indique l'utilisation de la norme standard Unix.

/etc/sysconfig/keyboard - Ce fichier contrôle le comportement du clavier. Les valeurs suivantes peuvent être utilisées :

* KEYTABLE=file, où file est le nom de fichier de la table clavier. Exemple : KEYTABLE="/usr/lib/kbd/keytables/us.map"

/etc/sysconfig/mouse - Ce fichier est utilisé pour spécifier les informations disponibles sur la souris. Les valeurs suivantes peuvent être utilisées :

* MOUSETYPE=type, les valeurs de type pouvant être :

microsoft : souris Microsoft

mouseman : souris Mouseman

mousesystems : souris Mouse Systems

ps/2 : souris PS/2

msbm : souris bus Microsoft

logibm : souris bus Logitech

atibm : souris bus ATI

logitech : souris Logitech

mmseries : ancienne souris MouseMan

mmhittab : souris mmhittab

* XEMU3=emulation, les valeurs d'émulation pouvant être :

yes : émulation 3 boutons.

no : la souris possède déjà 3 boutons.

De plus, /dev/mouse est un lien symbolique qui pointe vers le périphérique souris actuel.

/etc/sysconfig/network - Ce fichier est utilisé pour spécifier les informations relatives à la configuration réseau. Les valeurs suivantes peuvent être utilisées :

* NETWORKING=answer, les valeurs de answer pouvant être :

yes : le réseau doit être configuré.

no : le réseau ne doit pas être configuré.

* HOSTNAME=hostname, hostname doit être le FQDN (Fully Qualified Domain Name), mais peut être le nom d'hôte de votre choix.

Note : pour être compatible avec les anciens programmes (trn par exemple), le fichier /etc/HOSTNAME doit contenir les mêmes valeurs.

* FORWARD_IPV4=answer, les valeurs de answer pouvant être :

yes : IP forwarding activé.

no : IP forwarding désactivé.

(L'installation actuelle de Red Hat Linux utilise la valeur no comme valeur par défaut, mais si FORWARD_IPV4 n'est pas défini, le forwarding est activé pour la compatibilité avec les fichiers de configuration utilisé dans les versions 4.2 de Red Hat Linux et antérieures).

* GATEWAY=gw-ip, gw-ip étant l'adresse IP de la passerelle.

* GATEWAYDEV=gw-dev, gw-dev étant le périphérique passerelle (exemple : eth0).

* NISDOMAIN=dom-name, dom-name étant le nom de domaine NIS.

/etc/sysconfig/pcmcia - Ce fichier est utilisé pour spécifier les informations PCMCIA. Les valeurs suivantes peuvent être utilisées :

* PCMCIA=answer, les valeurs de answer pouvant être :

yes : la gestion du port PCMCIA est activé.

no : la gestion du port PCMCIA est désactivé.

* PCIC=pcic-type, les valeurs de pcic-type pouvant être :

i82365 : le système utilise un socket PCMCIA i82365.

tcic : le système un socket PCMCIA tcic

* PCIC_OPTS=option, option étant le paramètre de timing du pilote socket (i82365 ou tic).

* CORE_OPTS=option, option étant la liste des options pcmcia_core.

* CARDMGR_OPTS=option, option étant la liste des options pour le cardmgr PCMCIA.

/etc/sysconfig/amd - Ce fichier est utilisé pour spécifier les paramètres optionnels amd. Les valeurs suivantes peuvent être utilisées :

* ADIR=path, path étant le répertoire amd. Ce répertoire est "/.automount" et ne doit pas être modifié.

* MOUNTPTS=mountpts, mountpts est par exemple "/net /etc/amd.conf".

* AMDOPTS=options, options étant les options supplémentaires pour AMD.

/etc/sysconfig/tape - Ce fichier est utilisé pour spécifier les paramètres relatifs aux lecteurs de bandes. Les valeurs suivantes peuvent être utilisées :

* DEV=devname, devname étant le nom du périphérique (par exemple "/dev/nst0". Utilisez le périphérique non-rembobinable pour ces scripts.

Pour les lecteurs de bandes SCSI, le nom du périphérique est "/dev/nst#". # étant le numéro du lecteur de bande que vous voulez utiliser. Si vous ne disposez que d'un seul lecteur, utilisez "/dev/nst0".

Pour les lecteurs de bandes IDE, le nom du périphérique est "/dev/ht#". # étant le numéro du lecteur de bande que vous voulez utiliser. Si vous ne disposez que d'un seul lecteur, utilisez "/dev/ht0".

Pour les lecteurs de bandes à disquettes, utilisez "/dev/ftape".

* ADMIN=account, account étant le compte utilisateur vers lequel envoyer un courrier électronique (email) si la sauvegarde a échouée. Normalement, il s'agit de "root".

* SLEEP=time, time étant la durée de veille entre les opérations de sauvegarde. La valeur varie suivant les lecteurs, mais la valeur de "5" semble fonctionner pour les lecteurs 8mm, 4mm, et DLT.

* BLOCKSIZE=size, size étant la taille d'un bloc optimale pour le lecteur. La valeur "32768" fonctionne correctement pour les lecteurs 8mm, 4mm, et maintenant DLT. La valeur optimale est sûrement supérieure à ce que votre lecteur peut écrire en une fois.

* SHORTDATE=date, date étant une chaîne de caractère utilisée dans les noms de fichiers log de sauvegarde. La valeur par défaut étant "$(date +l%y:%m:%d:%H:%M)".

* DAY=date, date étant une chaîne de caractère utilisée pour le répertoire de fichiers log. La valeur par défaut étant "$(date +log-%y:%m:%d)".

* DATE=date, date étant une chaîne de caractère utilisée pour les fichiers log. La valeur par défaut étant "$(date)".

* LOGROOT=path, path étant le root du répertoire de connexion.

* LIST=file, file étant le nom de fichier que la sauvegarde incrémentale utilisera pour stocker la liste incrémentale. Il est suivi d'une séquence de nombres.

* DOTCOUNT=count, count étant le nom du fichier à utiliser pour le décompte, afin de connaître la liste incrémentale à utiliser.

* COUNTER=count-file, count-file est utilisé pour rembobiner lorsque tout est terminé (peut ne pas fonctionner).

* BACKUPTAB=file, file étant le nom de fichier dans lequel on stocke la liste des sauvegardes que l'on souhaite faire.

Fichiers dans /etc/sysconfig/network-scripts/

Les fichiers qui suivent se trouvent normalement dans /etc/sysconfig :

* /etc/sysconfig/network-scripts/ifup

* /etc/sysconfig/network-scripts/ifdown

* /etc/sysconfig/network-scripts/network-functions

* /etc/sysconfig/network-scripts/ifcfg-<interface-name>

* /etc/sysconfig/network-scripts/ifcfg-<interface-name>-<clone-name>

* /etc/sysconfig/network-scripts/chat-<interface-name>

* /etc/sysconfig/network-scripts/dip-<interface-name>

* /etc/sysconfig/network-scripts/ifup-post

* /etc/sysconfig/network-scripts/ifdhcpc-done

Jetons un coup d'oeil à chacun de ces fichiers.

/etc/sysconfig/network-scripts/ifup,

/etc/sysconfig/network-scripts/ifdown - Liens symboliques vers /sbin/ifup et /sbin/ifdown. Ce sont les deux seuls scripts de ce répertoire qui sont appelés directement, suivant les besoins ils exécutent les autres scripts. Ces liens symboliques sont amenés à disparaître dans les versions futures, donc seuls /sbin/ifup et /sbin/ifdown seront utilisés.

Ces scripts utilisent comme argument le nom du périphérique (exemple "eth0"). Ils sont exécutés avec un second argument d'amorçage durant la séquence de démarrage, les périphériques qui ne doivent pas être activés au démarrage (ONBOOT=no, voir plus loin) peuvent ainsi être ignorés.

/etc/sysconfig/network-scripts/network-functions - Il ne s'agit pas vraiment d'un fichier public. Il contient des fonctions utilisées par le script pour activer ou désactiver les interfaces (gestion des interfaces alternatives, ...).

/etc/sysconfig/network-scripts/ifcfg-<interface-name>-<clone-name> - Le premier fichier définit une interface, le second contient seulement les définitions qui diffèrent pour une interface clone (ou alternative). Dans le cas d'une interface où seules les adresses réseau diffèrent, vous trouverez dans le second fichier ces nouvelles adresses, alors que les informations sur les périphérique se trouvent dans le fichier de base ifcfg.

Ces informations peuvent être définis dans un fichier ifcfg suivant le type d'interface.

Les valeurs suivantes sont communes à tous les fichiers de base :

* DEVICE=name, name étant le nom physique du périphérique (pour les périphériques PPP alloués dynamiquement, utilisez le nom logique).

* IPADDR=addr, addr étant l'adresse IP.

* NETMASK=mask, mask étant la valeur du masque réseau.

* NETWORK=addr, addr étant l'adresse réseau.

* BROADCAST=addr, addr étant l'adresse broadcast.

* GATEWAY=addr, addr étant l'adresse passerelle.

* ONBOOT=answer, les valeurs de answer pouvant être :

yes : le périphérique doit être activé au démarrage.

no : le périphérique ne doit pas être activé au démarrage.

* USERCTL=answer, les valeurs de answer pouvant être :

yes : les utilisateurs non-root peuvent contrôler ce périphérique.

no : les utilisateurs non-root ne peuvent pas contrôler ce périphérique.

* BOOTPROTO=proto, les valeurs de proto pouvant être :

none : pas de protocole.

bootp : le protocole bootp doit être utilisé.

dhcp : le protocole dhcp doit être utilisé.

Les valeurs suivantes sont communes aux fichiers PPP et SLIP :

* PERSIST=answer, les valeurs de answer pouvant être :

yes : le périphérique reste tout le temps actif, même s'il est désactivé après que le modem ait raccroché.

no : le périphérique ne reste pas tout le temps actif.

* MODEMPORT=port, port étant le nom de périphérique du port modem (exemple : "/dev/modem").

* LINESPEED=baud, baud étant la vitesse de la ligne modem (exemple : "115200").

* DEFABORT=answer, les valeurs de answer pouvant être :

yes : insère la chaîne d'abandon par défaut lors de la création/édition du script pour cette interface.

no : n'insère pas la chaîne d'abandon par défaut lors de la création/édition du script pour cette interface.

Les valeurs suivantes sont communes à tous les fichiers PPP :

* DEFROUTE=answer, les valeurs de answer pouvant être :

yes : définit cette interface en route par défaut.

no : ne définit pas cette interface en route par défaut.

* ESCAPECHARS=answer, les valeurs de answer pouvant être :

yes : utilise l'asyncmap prédéfini.

no : n'utilise pas l'asyncmap prédéfini.

(Ceci représente une interface simplifiée, les utilisateurs ne peuvent pas spécifier les caractères d'échappement. Cependant, il est possible d'utiliser un asyncmap de 00000000 et de définir PPPOPTIONS afin d'utiliser un asyncmap arbitraire.)

* HARDFLOWCTL=answer, les valeurs de answer pouvant être :

yes : utilise le flow contrôle matériel.

no : n'utilise pas le flow contrôle matériel.

* PPPOPTIONS=options, options étant une chaîne de caractère arbitraire. Elle est placée à la fin de la ligne de commande de manière à écraser les autres options (telles que asyncmap) spécifiées.

* PAPNAME=name, name étant utilisé comme une partie de "name $PAPNAME" dans la ligne de commande pppd.

Notez que l'option "remotename" est toujours spécifiée avec le nom logique du périphérique, exemple "ppp0" (qui peut être le périphérique physique ppp1 si un autre périphérique ppp a été activé auparavant...), ce qui facilite la gestion des fichiers pap/chap - les couples nom/mot de passe sont associés avec le nom logique du périphérique ppp afin de les gérer simultanément.

En principe, rien ne vous empêche d'utiliser "worldnet" ou "myISP" comme nom logique de périphérique PPP à la place de "ppp0" - "pppN"

* REMIP=addr, addr étant l'adresse IP distante (qui n'est normalement pas spécifiée).

* MTU=value, value étant la valeur à utiliser pour MTU.

* MRU=value, value étant la valeur à utiliser pour MRU.

* DISCONNECTTIMEOUT=value, value représente le nombre de secondes qui s'écoulent avant de rétablir la connexion d'une session qui vient de se terminer.

* RETRYTIMEOUT=value, value représente le nombre de secondes qui s'écoulent avant de retenter la connexion qui vient d'échouer.

/etc/sysconfig/network-scripts/chat-<interface-name> - Ce fichier est un script chat pour les connexions PPP ou SLIP, et a pour objectif d'établir la connexion. Pour les périphériques PPP, un script DIP est créé à partir du script chat ; pour les périphériques PPP, le script chat est utilisé directement.

/etc/sysconfig/network-scripts/dip-<interface-name> - Ce script en lecture seule est créé à partir du script vhat pat netcfg. Ne modifiez pas ce fichier. A l'avenir ce fichier est ammené à disparaître.

/etc/sysconfig/network-scripts/ifup-post - Ce fichier est exécuté pour chaque périphérique réseau (excepté les périphériques SLIP). Exécute /etc/sysconfig/network-scripts/ifup-routes pour activer les routes statiques qui dépendent de ce périphérique. Crée les alias pour le périphérique. Définit le nom d'hôte si ce n'est pas déjà fait, et un nom d'hôte peut être trouvé pour l'IP de ce périphérique. Envoie SIGIO à tous les programmes qui demandent une notification des évènements réseau.

Peut être étendu pour modifier la configuration du service de nom, appeler des scripts arbitraires, ...

/etc/sysconfig/network-scripts/ifdhcpc-done - Ce fichier est utilisé par dhcpcd une fois la configuration dhcp terminée.

11.9.2 Init System V

Cette section présente brièvement le processus de démarrage. Elle décrit l'utilisation d'Init System V, et les différences par rapport à sa version d'origine (celle utilisée dans les anciennes versions de Linux).

Init est le programme exécuté par le noyau, au démarrage du système. Il est chargé d'exécuter les différents processus nécessaires au démarrage (gettys, démons NFS, démons FTP, ...).

Init System V est en train de devenir un standard dans le monde Linux. Il est en effet beaucoup plus efficace et beaucoup plus facile à utiliser que la version BSD d'Init.

Contrairement aux fichiers de configuration de la version BSD qui se trouvent dans le répertoire /etc, ceux d'Init System V se trouvent dans un sous-répertoire de /etc. Ce répertoire s'appelle rc.d et contient le fichier rc.sysinit et les répertoires :

init.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d

Le répertoire init.d contient un certain nombre de scripts. Vous devez normalement avoir un script par service exécuté au démarrage du système ou lorsque vous changez de niveau d'exécution. Les services incluent le réseau, nfs, sendmail, httpd, ... Ils n'incluent pas par exemple setserial qui est exécuté une seule fois. Utilisez dans ce cas rc.local ou rc.serial.

rc.local doit se trouver dans /etc/rc.d. La plupart des systèmes en possèdent un, même s'il ne fait pas grand chose. Vous pouvez aussi ajouter rc.serial dans /etc/rc.d, si vous avez besoin d'effectuer des modifications sur le port série au démarrage.

Voici le processus de démarrage :

* le noyau recherche init, et exécute le premier qui a été trouvé

* init exécute /etc/rc.d/rc.sysinit

* rc.sysinit effectue un certain nombre de choses et exécute ensuite rc.serial (s'il existe)

* init exécute tous les scripts pour le niveau d'exécution par défaut

* init exécute rc.local

Le niveau d'exécution par défaut est défini dans /etc/inittab. Vous y trouverez sûrement la ligne suivante :

id:3:initdefault:

Le niveau d'exécution se trouve dans la seconde colonne, sur la plupart des systèmes la valeur sera initialisée à 3. Vous pouvez éditer manuellement le fichier /etc/inittab pour modifier le niveau d'exécution (soyez très prudent). Si vous rencontrez un problème redémarrer le système et exécutez la commande suivante :

LILO boot : linux single

Cela vous permettra de redémarrer le système (en mode simple utilisateur) et de corriger le problème.

Comment sont exécutés les différents scripts ? Si vous exécutez la commande ls -l dans le répertoire rc3.d, vous obtiendrez :

lrwxrwxrwx 1 root root 17 13:11 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 13:11 S30syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 14 13:32 S40cron -> ../init.d/cron
lrwxrwxrwx 1 root root 14 13:11 S50inet -> ../init.d/inet
lrwxrwxrwx 1 root root 13 13:11 S60nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 15 13:11 S70nfsfs -> ../init.d/nfsfs
lrwxrwxrwx 1 root root 18 13:11 S90lpf -> ../init.d/lpd.init
lrwxrwxrwx 1 root root 11 13:11 S99local -> ../rc.local

Les fichiers de ce répertoire sont en fait des liens sur des scripts du répertoire init.d. Vous pouvez remarquer que le lien commence par la lettre S, suivie d'un nombre. La lettre S précise que le script doit être démarré, la lettre K précise que le script doit être arrêté. Le nombre est utilisé pour préciser un ordre d'exécution. Init exécute les services dans l'ordre dans lesquels ils apparaissent. Vous pouvez dupliquer les nombres, mais cela risque d'être confus. Vous avez simplement besoin d'utiliser deux digits, ainsi que le caractère S ou K pour démarrer ou arrêter un service.

Comment sont démarrés et arrêtés les différents services ? Chacun des scripts peut recevoir un argument : start ou stop. Vous pouvez exécuter ces scripts de façon manuelle, pour arrêter ici le serveur httpd :

/etc/rc.d/init.d/httpd.init stop

Lorsque la lettre S apparaît, le script est exécuté avec l'argument start. Lorsque la lettre K apparaît, le script est exécuté avec l'argument stop.

Pourquoi tous ces niveaux d'exécution ? Certaines personnes souhaitent utiliser le système pour plusieurs applications. Le niveau d'exécution serveur pour httpd, sendmail, ... et utilisateur pour xdm, ...

11.9.3 Les niveaux d'exécution

Dans la plupart des cas, Red hat Linux fonctionne en mode multi-utilisateurs (3). Voici la liste des niveaux d'exécution :

0 Halt (Arrêté)

1 Single user mode (Mode utilisateur unique)

2 Multiuser mode, without NFS (Mode multi-utilisateurs, sans NFS)

3 Multiuser mode (Mode multi-utilisateurs)

6 Reboot

Si votre machine ne redémarre pas correctement (problème lié au fichier /etc/inittab) ou si vous n'arrivez pas à vous connecter (problème lié au fichier /etc/passwd ou si vous avez oublié votre mot de passe), redémarrez le système en mode utilisateur unique (tapez à l'invite d'amorçage LILO : linux 1) et corrigez le problème.

11.9.4 Utilitaires Initscript

L'utilitaire chkconfig permet de gérer facilement à l'aide d'une simple ligne de commande la hiérarchie du répertoire /etc/rd.d. Il évite à l'administrateur système de manipuler directement les nombreux liens symboliques de /etc/rd.d.

De plus, l'utilitaire ntsysv propose une interface orientée écran, à l'opposé de la ligne de commande de chkconfig.

Pour plus d'informations sur chkconfig et ntsysv, consultez les pages du man.

11.9.5 Exécuter des programmes au démarrage

Le fichier /etc/rc.d/rc.local est exécuté au démarrage après toutes les autres initialisations, et à chaque fois que vous changez de niveau d'exécution. Vous pouvez y ajouter d'autres commandes d'initialisation. Vous pouvez par exemple démarrer d'autres demons ou bien initialiser une imprimante. De plus, si vous devez initialiser le port série, éditez le fichier /etc/rc.d/rc.serial, il sera automatiquement exécuté au démarrage.

Le fichier /etc/rc.d/rc.local par défaut crée un simple login contenant la version du noyau et le type de la machine.

11.9.6 Shutdown

Pour arrêter le système, utilisez la commande shutdown. Pour plus de détails consultez les pages du man consacrées à cette commande.

Pour arrêter le système, utilisez : shutdown -h now.

Pour arrêter le système puis redémarrer, utilisez : shutdown -r now.

Même si les commandes reboot et halt sont maintenant suffisamment évoluées pour invoquer shutdown lorsque le système est en niveaux d'éxécution 1-5, nous vous conseillons de ne pas les utiliser puisque tous les systèmes Linux ne proposent pas cette fonctionnalité.


Précédent Suivant Chapitre Titre Tables Matières