Next Previous Contents

5. Étapes de démarrage

Nous allons maintenant présenter les étapes de démarrage de Linux à partir de LILO jusqu'au login:

5.1 Du BIOS jusqu'au kernel

5.2 /sbin/init prend la relève

Le travail initial du kernel, c'est de préparer l'accès au système de fichier et de donner la main à /sbin/init. Cet utilitaire est présent sur tout les systèmes Unix.

À partir du fichier /etc/inittab, /sbin/init va démarrer les différents processus nécéssaire à l'opération d'un système multi-usagers.

/etc/inittab

Le fichier /etc/inittab a un format relativement simple. Outre des commentaires (ligne débutant par le caractère #), il contient une commande par ligne. Chaque ligne a le format suivant:

Sélection du "run level" par défaut

/sbin/init localise la ligne "id:X:initdefault:" où X représente le runlevel par défaut.

Sélection manuelle

Lors du démarrage, LILO nous offre une ligne de commande permettant de sélectionner la configuration ou le système d'exploitation à démarrer. Dans le cas de Linux, on peut passer au kernel différents options. Un des options est le runlevel. On passe simplement un numéro et /sbin/init démarrera ce runlevel. Notez que outre les runlevels de 1 à 6, il y a un pseudo mode appelé "maintenance", identifié par la lettre S.

On peut donc faire:

Notez que Linuxconf vous offre un menu au moment du démarrage vous permettant de sélectionner le mode d'opération de façon plus conviviale.

5.3 Script de démarrage sysv

Le fichier /etc/inittab n'est pas toujours pratique. À chaque fois qu'on ajoute un nouveau service (package), on se doit d'aller modifier ce fichier. Les concept des scripts "system V" (popularisé par le Unix SysV de AT&T) introduisent un sous-répertoire par runlevel. Ce sous-répertoire s'appelle généralement /etc/rc.d/rcN.d, où N est le numéro du runlevel.

Ces sous-répertoires contiennent des scripts de démarrage. Comme un service peut être disponible dans plusieurs runlevels, on place généralement les scripts de tous les services dans un répertoire commun, généralement appelé /etc/rc.d/init.d/ et on établie des liens symboliques entre ces fichiers et les différents sous-répertoire rcN.d.

Lors du démarrage, /sbin/init sélectionne le runlevel et exécutera tous les scripts dans le répertoire /etc/rc.d/rcN.d correspondant. Comme l'ordre d'initialisation de ces services peut être important, on insert un préfixe de 3 caractères au nom de chaque service. Ce préfixe est la lettre S suivit de deux chiffre. Ce préfixe assure un ordre de tri significatif. /sbin/init exécutera ces scripts en respectant l'ordre de tri. La lettre S signifie "Start".

Le répertoire /etc/rc.d/rc3.d/ sur un système RedHat 5.2 ressemble à ceci:

        K20rusersd -> ../init.d/rusersd
        K20rwhod -> ../init.d/rwhod
        K45named -> ../init.d/named
        K55routed -> ../init.d/routed
        K87ypbind -> ../init.d/ypbind
        S01kerneld -> ../init.d/kerneld
        S10network -> ../init.d/network
        S11portmap -> ../init.d/portmap
        S15nfsfs -> ../init.d/nfsfs
        S20random -> ../init.d/random
        S30syslog -> ../init.d/syslog
        S40atd -> ../init.d/atd
        S40crond -> ../init.d/crond
        S45pcmcia -> ../init.d/pcmcia
        S50inet -> ../init.d/inet
        S55sshd -> ../init.d/sshd
        S60lpd -> ../init.d/lpd
        S60nfs -> ../init.d/nfs
        S72autofs -> ../init.d/autofs
        S75keytable -> ../init.d/keytable
        S80sendmail -> ../init.d/sendmail
        S85gpm -> ../init.d/gpm
        S85httpd -> ../init.d/httpd
        S85mysql -> ../init.d/mysql
        S85sound -> ../init.d/sound
        S91smb -> ../init.d/smb
        S99linuxconf -> ../init.d/linuxconf
        S99local -> ../rc.local
        

Changement de runlevel

Lorsqu'on passe à un nouveau runlevel, via la commande "/sbin/telinit N" où N est le numéro du runlevel, les distributions ont un comportement légèrement différents. Voici les variations.

Lorsqu'on passe à un nouveau runlevel


Next Previous Contents