Show 019.html syntax highlighted
<HTML><HEAD><TITLE>Linux-Mandrake: Guide de l'utilisateur et Manuel de référence</TITLE>
<LINK REV=MADE HREF="mailto:info@mandrakesoft.com"></HEAD>
<BODY BGCOLOR="#ffffff"><center><font size="+5"><STRONG><table border="0"><tr><td><STRONG>Linux-Mandrake</STRONG>:</td></tr><tr><td>Guide de l'utilisateur</td></tr><tr><td>et Manuel de référence</td></tr></table></STRONG></font>
<p><font size="+2"><STRONG><table border="0"><tr><td><STRONG>MandrakeSoft</STRONG></td></tr></table></STRONG></font>
<p><STRONG><table border="0"><tr><td> </td></tr><tr><td> </td></tr><tr><td>Janvier 2000</td></tr><tr><td><CODE>http://www.linux-mandrake.com</CODE></td></tr><tr><td></td></tr></table></STRONG></center>
<hr><a href="020.html">Suivant : Systèmes de fichiers et points de montage</a><br><a href="018.html">Précédent : <STRONG>Auto Install</STRONG></a><br><a href="../">Retour</a><br><hr><a href="000.html#toc"><font size="-1">(Retour à la table des matières)</font></a>
<H1><font size="+1"><a name="224">Chapitre 9 : Les fichiers de démarrage: init « <STRONG>System V</STRONG> »</a></font></H1><hr><p>Dans la tradition <STRONG>Unix</STRONG>, il existe deux schémas de démarrage du
système: le schéma <EM>BSD</EM> et le schéma « <STRONG>System V</STRONG> », tous les
deux nommés d'après le système <STRONG>Unix</STRONG> qui les a implémentés pour
la première fois (resp. <EM>Berkeley Software
Distribution</EM> (« distribution de logiciels de Berkeley » et
<STRONG>AT&T Unix System V</STRONG>). Le schéma <EM>BSD</EM> est le plus
simple, mais le schéma <STRONG>System V</STRONG>, s'il est moins facile à comprendre
(c'est le rôle de ce chapitre que de vous le faire comprendre), est
nettement plus souple d'utilisation.
<H1><a name="225">Au début fut <CODE>init</CODE></a></H1>
<p>Quand le système démarre, après que le noyau ait tout configuré et monté
la racine du système de fichiers, il exécute le programme
<CODE>/sbin/init</CODE><a name="bodynote22" href="026.html#note22">[22]</a>. <CODE>init</CODE> est le père de
tous les processus du système, et il est chargé d'amener le système au
<STRONG>niveau d'exécution</STRONG> (<STRONG><EM>runlevel</EM></STRONG>) voulu. Nous
reviendrons sur les niveaux d'exécution dans la section suivante.
<p>Le fichier de configuration d'<CODE>init</CODE> est <CODE>/etc/inittab</CODE>. Ce
fichier possède sa propre page de manuel (<CODE>man inittab</CODE>), mais
nous ne décrirons ici que quelques-unes des directives.
<p>La première ligne qui doit attirer l'attention est celle-ci:
<p><CODE>si::sysinit:/etc/rc.d/rc.sysinit</CODE>
<p>Cette directive dit à <CODE>init</CODE> que
<CODE>/etc/rc.d/rc.sysinit</CODE> doit être exécuté à l'initialisation du
système avant toute autre chose. Pour déterminer le niveau d'exécution
par défaut, <CODE>init</CODE> recherche ensuite la ligne contenant l'action
<CODE>initdefault</CODE>:
<p><CODE>id:5:initdefault:</CODE>
<p>En l'occurrence, donc, <CODE>init</CODE> sait que le niveau d'exécution par
défaut est 5. Il sait également que pour entrer dans le niveau 5, il lui
faudra exécuter la commande suivante:
<p><CODE>l5:5:wait:/etc/rc.d/rc 5</CODE>
<p>Vous constatez que la syntaxe pour chacun des niveaux d'exécution est
similaire.
<p><CODE>init</CODE> est également chargé de relancer (<CODE>respawn</CODE>)
certains programmes que lui seul est en mesure de relancer. C'est le
cas, par exemple, de tous les programmes de connexion qui tournent sur
chacun des 6 terminaux virtuels<a name="bodynote23" href="026.html#note23">[23]</a>. Pour la deuxième console virtuelle, cela donne:
<p><CODE>2:2345:respawn:/sbin/mingetty tty2</CODE>
<H1><a name="226">Les niveaux d'exécution</a></H1>
<p>Tous les fichiers concernant le démarrage du système se trouvent dans le
répertoire <CODE>/etc/rc.d</CODE>. Voici la liste des fichiers:
<p><font size="-1"><PRE>
$ ls /etc/rc.d
init.d/ rc.local* rc0.d/ rc2.d/ rc4.d/ rc6.d/
rc* rc.sysinit* rc1.d/ rc3.d/ rc5.d/
</PRE></font>
<p>En premier lieu, comme nous l'avons vu, le fichier <CODE>rc.sysinit</CODE>
est exécuté. C'est ce fichier qui est chargé de mettre en place la
configuration de base de la machine: type du clavier, configuration de
certains périphériques, vérification des systèmes de fichiers, etc.
<p>Puis le script <CODE>rc</CODE> est exécuté, avec en argument le niveau
d'exécution. Nous avons vu que le niveau d'exécution est un simple
entier, et pour chaque niveau d'exécution <CODE><x></CODE> défini, il doit
exister un répertoire correspondant <CODE>rc<x>.d</CODE>. Dans une
installation typique de <STRONG>Linux-Mandrake</STRONG>, vous pouvez donc voir que 6
niveaux d'exécution sont ainsi définis:
<ul><li><STRONG>0</STRONG>: Arrêt complet de la machine;
<li><STRONG>1</STRONG>: Mode <STRONG>monoutilisateur</STRONG>; à utiliser en cas de gros pépin!
<li><STRONG>2</STRONG>: Mode <STRONG>multi-utilisateur</STRONG>, sans réseau;
<li><STRONG>3</STRONG>: Mode multiutilisateur, avec réseau;
<li><STRONG>4</STRONG>: Inutilisé;
<li><STRONG>5</STRONG>: Comme 3, mais avec le lancement de l'interface de login
graphique;
<li><STRONG>6</STRONG>: Redémarrage.</ul>
<p>Intéressons-nous par exemple au contenu du répertoire <CODE>rc5.d</CODE>:
<p><font size="-4"><PRE>
$ ls rc5.d
K15postgresql@ K60atd@ S15netfs@ S60lpd@ S90xfs@
K20nfs@ K96pcmcia@ S20random@ S60nfs@ S99linuxconf@
K20rstatd@ S05apmd@ S30syslog@ S66yppasswdd@ S99local@
K20rusersd@ S10network@ S40crond@ S75keytable@
K20rwhod@ S11portmap@ S50inet@ S85gpm@
K30sendmail@ S12ypserv@ S55named@ S85httpd@
K35smb@ S13ypbind@ S55routed@ S85sound@
</PRE></font>
<p>Comme vous pouvez le voir, tous les fichiers de ce répertoire sont des
liens symboliques et ils ont tous une forme bien particulière. Leur
forme générale est
<p><CODE><S|K><ordre><nom_du_service></CODE>
<p>Le <CODE>S</CODE>
signifie <EM>Start</EM>, « démarrer » le
service, et <CODE>K</CODE> signifie <EM>Kill</EM>,
« arrêter » le service. Les scripts sont exécutés dans
l'ordre des numéros croissants, et si deux scripts ont le même numéro,
l'ordre alphabétique prévaut. On peut voir également que chacun de ces
liens symboliques pointe vers des scripts situés dans
<CODE>/etc/rc.d/init.d</CODE> (à l'exception de <CODE>local</CODE>), scripts qui
sont chargés de contrôler un service bien particulier.
<p>Quand le système entre dans un niveau d'exécution donné, il exécute
d'abord les liens <CODE>K</CODE> dans l'ordre: <CODE>rc</CODE> regarde où
pointe le lien, puis appelle le script correspondant avec le seul
argument <CODE>stop</CODE>. Puis il exécute les scripts <CODE>S</CODE>,
toujours selon la même méthode, mis à part que le script est appelé avec
l'argument <CODE>start</CODE>.
<p>Ainsi, sans citer tous les scripts, on peut voir que quand le système
entre dans le niveau d'exécution 5, il exécute d'abord
<CODE>K15postgresql</CODE>, c'est-à-dire
<CODE>/etc/rc.d/init.d/postgresql stop</CODE>. Puis <CODE>K20nfs</CODE>, puis
<CODE>K20rstatd</CODE>, jusqu'au dernier; ensuite, il exécute tous les
scripts <CODE>S</CODE>: <CODE>S05ampd</CODE> en premier lieu, qui invoque donc
<CODE>/etc/rc.d/init.d/apmd start</CODE>, et ainsi de suite.
<p>Armé de tout ceci, vous pouvez à votre guise créer un niveau d'exécution
entier en quelques minutes, ou empêcher le démarrage ou l'arrêt d'un
service en effaçant le lien symbolique correspondant (il existe
cependant des programmes d'interfaçage pour ce faire, en particulier
<CODE>tksysv</CODE> et <CODE>chkconfig</CODE>. Le premier est un programme
graphique).
<hr><a href="020.html">Suivant : Systèmes de fichiers et points de montage</a><br><a href="018.html">Précédent : <STRONG>Auto Install</STRONG></a><br><a href="../">Retour</a><br><hr>Copyright © 2000 <a href="http://www.mandrakesoft.com/">MandrakeSoft</a></BODY></HTML>
See more files for this project here