Le démarrage sytème de Linux

Gazette Linux n°98 — janvier 2004 -->

par Rick Mann (Copyright © 2004) exemple email CHEZ exemple POINT com

traduction par Jordy Provost (tous droits réservés) jordy POINT provost CHEZ free POINT fr


Aujourd'hui vous pouvez acquérir une distribution Linux, l'installer et l'utiliser sans
vraiment comprendre comment fonctionne ce système d'exploitation.
Cet article décrit la séquence de démarrage de Linux.

Le mot geek pour le démarrage d'un ordinateur est bootstrapping. La version courte
est booterboot. La première partie de ce processus est effectuée par du
code situé dans la ROM. Ce code est par nature généraliste et non spécifique à Linux.
Sa tâche est de lancer le chargeur d'amorçage Linux (bootloader) puis de lui donner le
contrôle.

Chargeur d'amorçage

Le chargeur d'amorçage est le programme lançé par la ROM (comme le BIOS sur la carte mère
où le code spécifique aux périphériques sur un contrôleur disque SCSI
).
Il y a deux chargeurs d'amorçage populaires pour les PCs. LILO est le chargeur traditionnel
et GRUB est le plus récent. Chacun de ces programmes a la tâche de récupèrer les informations
de configuration, charger le noyau Linux (ou autre) et lui passer le contrôle.

La différence la plus significative entre LILO et GRUB est la façon dont ils récupèrent les
informations de configuration. La configuration pour LILO est sauvegardée de façon statique en
exécutant la commande lilo. Ces informations sont écrites dans la zone d'amorce
(Master Boot Record où MBR) du disque ou dans la zone d'amorce de la partition racine de
Linux. Les informations de configuration utilisées par lilo sont généralement stockées dans
/etc/lilo.conf. Voici un exemple de fichier de configuration :

boot=/dev/hda   # chargeur d'amorçage sur la MBR
root=/dev/hda1 # partition racine
install=/boot/boot.b
map=/boot/map
delay=50 # 5 secondes de délai avant le démarrage automatique
image=/vmlinuz # noyau
label=linux # nom pour se référer à l'entrée
read-only
image=/vmlinuz.old # entrée de secours
label=old
read-only

Dans cet exemple, il y a deux noyaux possibles pour booter: /vmlinuz et /vmlinuz.old.
A l'invite de LILO vous pouvez choisir le noyau courant où le noyau de secours. L'appui sur
la touche TAB lors de l'invite LILO va lister ces options.
Si vous recompilez votre noyau où si vous voulez faire n'importe quelle autre modification
vous devrez exécuter une nouvelle fois la commande lilo pour relire le fichier de configuration
et réinstaller LILO avec ces nouvelles informations de configuration.

GRUB lit le fichier de configuration lors du démarrage.

La zone d'amorçage fait 512 octets. La partie de GRUB qui est installée dans le MBR fait une
initialisation basique du système, permettant l'accès au disque de démarrage puis charge le reste
de GRUB situé sur ce dernier.

GRUB est installé par le programme grub-install. Il devrait y avoir un man où une page d'info
disponible avec les détails. La page d'info de grub est aussi d'une grande aide. Le fichier de
configuration est généralement situé dans le répertoire /boot/grub. SuSE le mets dans
menu.lst et Red Hat dans grub.conf. Voici un exemple de fichier de configuration :

default 0
timeout 8
gfxmenu (hd0,1)/boot/message

title Linux
kernel (hd0,1)/boot/vmlinuz root=/dev/hda2 desktop showopts
initrd (hd0,1)/boot/initrd

title ModeSansEchec
kernel (hd0,1)/boot/vmlinuz root=/dev/hda2 showopts ide=nodma apm=off acpi=o
ff vga=normal nosmp noapic maxcpus=0 3
initrd (hd0,1)/boot/initrd

title Test Mémoire
kernel (hd0,1)/boot/memtest.bin

Si vous partagez la machine avec un OS propriétaire originaire de Redmond, prenez note que
ces personnes ne réalisent pas que d'autres systèmes d'exploitation sont disponibles.
Cela signifie que lorsque vous installez leur système celui ci écrase simplement la zone
d'amorçage. Si vous l'installez avant Linux, tout devrait fonctionner parfaitement
et vous serez en mesure de démarrer l'OS de votre choix.

Niveaux d'exécution

Les niveaux d'exécution (où runlevels) vous offrent toute une palette de configurations
système. A moins que vous ne spécifiez le contraire, le système démarrera au niveau d'exécution
par défaut qui est généralement le niveau 3 où 5. Vous pouvez changer ce comportement en modifiant
le champ label dans LILO où en entrant le mot boot dans GRUB suivi par le mot single à
l'invite du chargeur d'amorçage.

Il y a sept niveaux d'execution standards: de 0 à 6. Le niveau 0 signifie l'extinction, le niveaul 1
est le mode mono-utilisateur et le niveau 6 signifie redémarrage. Les autres niveaux sont utilisables
à votre guise pour paramètrer diverses configurations système.
Le plus courant est d'utiliser le niveau 3 comme un système pleinement opérationnel sans interface
graphique et le niveau 5 est comme le niveau 3 mais avec une interface graphique en plus.
Sur la plupart des systèmes, il y a un niveau nommé S qui est similaire au niveau 1 mais nécessitant le
mot de passe root pour y accèder, ceci pour des raisons de sécurité.

Le contenu du fichier /etc/inittab détermine quelle action est à prendre à chaque niveau et spécifie
également le niveau par défaut. Voici un exemple de ce que vous pourriez trouver dans /etc/inittab :

#
# /etc/inittab
#
# Ceci est le fichier de configuration principal de /sbin/init, qui
# est exécuté au démarrage du noyau.
#

# Le niveau d'exécution par défaut
id:5:initdefault:

# /etc/init.d/rc prend soin de gérer les niveaux d'exécution
#
# Le niveau d'exécution 0 est l'arrêt du système (Ne pas utiliser pour initdefaut!)
# Le niveau d'exécution 1 est le mode mono-utilisateur
# Le niveau d'exécution 2 est le mode multi-utilisateur sans fonctionnalités réseau (e.g. NFS)
# Le niveau d'exécution 3 est le mode multi-utilisateur complet avec prise en charge du réseau
# Le niveau d'exécution 4 est non utilisé
# Le niveau d'exécution 5 est le mode multi-utilisateur complet avec prise en charge du réseau et xdm
# Le niveau d'exécution 6 est le redémarrage du système
#
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

# que faire en mode mono-utilisateur
ls:S:wait:/etc/init.d/rc S
~~:S:respawn:/sbin/sulogin

# que faire lors de l"appui sur CTRL-ALT-SUPPR
ca::ctrlaltdel:/sbin/shutdown -r -t 4 now

# programmes terminaux pour les niveaux d'exécution normaux
# :::
# Le champ "id" DOIT être le même que le dernier
# caractère de la ligne (après "tty").
1:2345:respawn:/sbin/mingetty --noclear tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

La ligne id:5:initdefault: met le niveau d'exécution par défaut à 5.
Les lignes de cette forme l1:1:wait:/etc/init.d/rc 1 invoquent le script /etc/init.d/rc
en passant le niveau d'exécution en argument. Le script exécute ensuite le processus associé avec
le niveau d'exécution spécifique (et arrête les autres processus). tous les scripts
contrôlant chaque processus sont situés dans le répertoire /etc/init.d.

Typiquement, les processus qui doivent être démarrés ou arrétés à chaque niveau d'éxécution
sont situés dans des sous répertoires (par exemple, rc5.d pour le niveau d'éxécution 5)
de /etc/init.d. Dans chaque répertoire spécifique à un niveau d'exécution, des liens
symboliques sont utilisés pour identifier les processus. Les liens dont le nom commence par K
réfèrent aux processus qui doivent être arrétés (Killed) et les liens dont le nom commence par S
refèrent à ceux qui doivent être démarrés (Start). Les liens sont lus dans l'ordre alphabétique,
ce qui signifie que les scripts d'arrêt sont exécutés en premier et l'ordre des scripts,
indépendemment de la première lettre est déterminé par deux chiffres suivants immédiatement
le K où le S.

J'ai dit typiquement car c'est la façon standard de manipuler ces informations. Certains vendeurs
utilisent des shémas légèrement différents mais, dans tous les cas les programmes du genre init
sont ce qui contrôle le process entier. Si vous êtes familiers avec la façon dont UNIX gère le
démarrage, c'est très similaire à l'initialisation d'un System V.

Si vous n'avez pas rencontré de problèmes votre système devrait maintenant être au niveau d'éxécution
désiré. une fois le système démarré et opérationnel vous pouvez changer de niveau d'éxécution en vous
connectant en tant que root et en utilisant la commande init. Par exemple, pour passer au
niveau d'exécution 3, vous devez entrer init 3.


Rick Mann

Rick Mann a été programmeur C et travaille sur des systèmes d'exploitation conformes à POSIX depuis 12 ans


Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux

Cet article est publié selon les termes de la Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site http://www.traduc.org/Gazette_Linux

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.