[Linux-bruxelles] adsl lors du boot

Ledentm Marc.Ledent at nbb.be
Mer 7 Jan 17:23:52 CET 2004


> que dois-je faire pour que cela se fasse automatiquement lors 
> du boot ?

J'ai retrouvé ma prose, bonne lecture:

Petite description du mécanisme de boot version SVR4 (System 5 release 4) sur une mandrake (ou une redhat, c'est équivalent):

Sur Unix en général, on distingue différents niveaux d'exécution (runlevel) allant de 0 à 6:

0: shutdown
1: Single user mode
2: implementation specific
3: implementation specific
4: implementation specific
5: implementation specific
6: reboot

Passer de l'un à l'autre se fait via la commande 'init'. Lorsqu'on boot un système, c'est d'abord le kernel qui s'initialise est configure le matériel. Ensuite, il démarre le process 0 (scheduler) puis enfin  le process 1 (init). init est un programme qui se charge de démarrer des processes en fonction de la configuration contenue dans le fichier /etc/inittab. Dans ce fichier précisément se trouve une ligne qui nous intéresse:

id:5:initdefault:

Cette ligne nous indique quel 'runlevel' démarrer par défaut, ici 5. Dans notre cas donc, init va lancer le script /etc/rc avec comme paramètre '5'. 

Avant de continuer, allons voir ce q'il y a dans le répertoire /etc/rc5.d:

$ cd /etc/rc5.d; ls -l
...
lrwxrwxrwx    1 root     root           15 Jul  2 13:21 S18sound -> ../init.d/sound*
lrwxrwxrwx    1 root     root           16 Jul  2 13:21 S20random -> ../init.d/random*
lrwxrwxrwx    1 root     root           13 Apr 28  2003 S20xfs -> ../init.d/xfs*
lrwxrwxrwx    1 root     root           15 Jul  2 13:21 S25netfs -> ../init.d/netfs*
lrwxrwxrwx    1 root     root           14 Apr 28  2003 S26apmd -> ../init.d/apmd*
lrwxrwxrwx    1 root     root           12 Apr 28  2003 S30dm -> ../init.d/dm*
lrwxrwxrwx    1 root     root           16 Apr 28  2003 S31upsmon -> ../init.d/upsmon*
lrwxrwxrwx    1 root     root           13 Apr 28  2003 S40atd -> ../init.d/atd*
lrwxrwxrwx    1 root     root           19 Apr 28  2003 S40saslauthd -> ../init.d/saslauthd*
...

On constate une série de fichiers dont le nom commence par S suivi de deux chiffres suivis d'un nom correspondant à un lien vers un fichier du même nom dans le répertoire ../init.d. Il peut se trouver aussi des fichier du même type mais commencant par 'K'. 

Que se passe-t-il donc avec notre script 'rc'? Celui-ci va scruter la directory /etc/rc5.d pour tous les fichiers commencant par K, et exécute tout ce qu'il trouve avec comme paramètre 'stop', donc:

for i in /etc/rc$runlevel.d/K*; do
  $i stop
done

Ensuite il scrute tous les fichiers commencant par 'S' et les exécute avec le paramètre 'start' donc:

for i in /etc/rc$runlevel.d/S*; do
  $i start
done

Ceci à pour conséquence que tous ces scripts seront exécutés dans un ordres défini pour l'arrêt et le démarrage.

Si je veux donc installer une procédure qui démarre juste après xfs par exemple, j'écris un script qui accepte les paramètres 'start' et 'stop' que je place dans le répertoire /etc/init.d. Ensuite je crée un lien dans rcN.d (N étant le runlevel qui m'intéresse, ici 5) qui commence par S26 (plusieurs mêmes numéros peuvent être utilisés, l'ordre choisi pour l'exécution sera alors alphabétique) et qui pointe sur mon script dans init.d:

$ cd /etc/rc5.d
$ ln -s ../init.d/monscript S26monscript

On peut aussi si nécessaire mettre des scripts d'arrêt dans les répertoires rc1.d rc6.d et rc0.d. Et c'est tout.

Il est à noter que pour que le 'K' fonctionne, une entrée pour ce script doit être créée au démarrage (start) du script dans /var/lock/subsys, mais ceci ne vaut bien sûr que pour la Mandrake (et peut être pour la redhat, mais je n'ai pas vérifié).

Ceux qui aiment la lecture peuvent aller voir - toujours sur une mandrake - le fichier /etc/rc.
-------------- section suivante --------------
Un texte encapsulé et encodé dans un jeu de caractères inconnu a été nettoyé...
Nom : NBB_Disclaimer.txt
URL : </pipermail/linux-bruxelles/attachments/20040107/3278fd1c/attachment-0002.txt>


Plus d'informations sur la liste de diffusion Linux-bruxelles