6. Init

Je ne parlerai que du style d'initialisation ��System V�� que les syst�mes Linux utilisent le plus souvent. Il existe des alternatives. En fait, vous pouvez mettre n'importe quel programme dans /sbin/init, que le noyau ex�cutera lorsqu'il aura fini de se charger.

Le travail d'init est de faire en sorte que tout se lance correctement. Il v�rifie que les syst�mes de fichier sont en bon �tat et les monte. Il d�marre les d�mons (daemons) qui enregistrent les messages syst�me, g�rent le r�seau, distribuent les pages web, �coutent les signaux de la souris, et c�tera. Init d�marre aussi les processus getty qui vous donnent l'invite de connexion sur vos terminaux virtuels.

Il y a un processus compliqu� concernant le changement de niveau d'ex�cution (��run-levels��), mais je vais sauter tout �a, et ne parler que du d�marrage du syst�me.

Init lit le fichier /etc/inittab, qui lui dit quoi faire. En g�n�ral, la premi�re chose demand�e est l'ex�cution d'un script d'initialisation. Le programme qui ex�cute (ou interpr�te) ce script est bash, le m�me programme qui vous donne la ligne de commande. Sur les syst�mes Debian, le script d'initialisation est /etc/init.d/rcS, sur Red Hat, /etc/rc.d/rc.sysinit. C'est l� que les syst�mes de fichiers sont v�rifi�s puis mont�s, l'horloge mise � l'heure, le fichier ou la partition d'�change (swap) activ�s, les noms de machines d�finis, et c�tera.

Ensuite, un autre script est invoqu� pour nous placer dans le niveau d'ex�cution par d�faut. Cela implique simplement le d�marrage d'un ensemble de sous-syst�mes. Il existe un ensemble de sous-r�pertoires /etc/rc.d/rc0.d, /etc/rc.d/rc1.d,�…�,�/etc/rc.d/rc6.d sous Red Hat, ou /etc/rc0.d, /etc/rc1.d,�…�,�/etc/rc6.d sous Debian, correspondant aux niveaux d'ex�cution (runlevels). Si nous entrons dans le niveau d'ex�cution 3 sur un syst�me Debian, le script ex�cute tous les scripts de /etc/rc3.d commen�ant par ��S�� (pour Start). Ces scripts sont en r�alit� des liens vers un autre r�pertoire appel� g�n�ralement init.d.

Donc, le script de notre niveau d'ex�cution est appel� par init, et recherche dans un r�pertoire les scripts dont le nom d�bute par la lettre ��S��. Il se peut qu'il tombe sur S10syslog en premier. Les chiffres indiquent au script de gestion des niveaux d'ex�cution l'ordre dans lequel il doit les lancer. En l'occurrence, S10syslog est lanc� en premier parce qu'il n'y pas de script commen�ant par S00�…�S09. Mais S10syslog est en fait un lien vers /etc/init.d/syslog qui est un script charg� du d�marrage et de l'arr�t du d�mon de gestion du journal syst�me. Parce que le nom du lien commence par un ��S��, le script de gestion des niveaux d'ex�cution sait qu'il doit ex�cuter le script syslog avec le param�tre start. Il y a aussi des liens dont le nom d�bute par ��K�� (pour Kill), qui sp�cifient ce qui doit �tre arr�ter, et dans quel ordre, lorsque l'on entre dans ce niveau d'ex�cution.

Pour changer ce que le sous-syst�me lance par d�faut, vous devez configurer ces liens dans le r�pertoire rcN.d, o� N est le niveau d'ex�cution par d�faut d�fini dans votre fichier inittab.

La derni�re chose importante qu'effectue init est de d�marrer les getty. Ceux-ci sont ressuscit�s (respawned), ce qui signifie qu'ils sont automatiquement relanc�s par init s'ils viennent � se terminer. La plupart des distributions fournissent six terminaux virtuels. Il se peut que vous souhaitiez en enlever pour �conomiser de la m�moire, ou en ajouter pour pouvoir faire tourner plus de choses � la fois, et passer rapidement de l'une � l'autre. Vous pourriez aussi avoir besoin de lancer un getty vers un terminal texte ou vers un modem. Vous devrez alors �diter inittab.

6.1. Configuration

/etc/inittab est le fichier de configuration principale d'init.

Les r�pertoires rcN.d, o� N = 0, 1,�…�,�6 d�termine les sous-syst�mes � lancer.

Quelque part dans les scripts invoqu�s par init, se trouve la commande mount�-a. Cela signifie�: ��Monte tous les syst�mes de fichiers cens�s �tre mont�s��. Le fichier /etc/fstab d�finit ce qui est cens� �tre mont�. Si vous souhaitez changer ce qui est mont� par d�faut au d�marrage, c'est ce fichier que vous devez modifier. Il existe une page de manuel pour fstab.

6.2. Exercices

Trouvez le r�pertoire rcN.d du niveau d'ex�cution par d�faut de votre syst�me puis faites un ls -l pour voir les fichiers point�s par les liens.

Changez le nombre de getty tournant sur votre syst�me.

Retirez tous les sous-syst�mes dont vous n'avez pas besoin de votre niveau d'ex�cution par d�faut.

Essayez de d�terminer le minimum n�cessaire pour d�marrer.

Fabriquez une disquette avec Lilo, un noyau et un programme statique affichant ��Bonjour tout le monde�!�� nomm� /sbin/init, puis regardez-la d�marrer et dire bonjour.

Regardez attentivement votre syst�me d�marrer, et notez les �v�nements signal�s. Ou imprimez une section de votre journal syst�me /var/log/messages � partir du moment o� votre syst�me a d�marr�. Ensuite, en partant d'inittab, explorez tous les scripts et essayez de voir quel code fait quoi. Vous pouvez �galement ajouter des messages, comme

	echo "Bonjour, moi c'est rc.sysinit"

C'est aussi un bon exercice pour apprendre le langage de script de Bash, certains scripts �tant assez compliqu�s. Ayez un bon document de r�f�rence sur Bash � port�e de la main.

6.3. Aller plus loin

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:22