Cette partie donne un certain nombre d'exemples de logiciels qui peuvent être utilisés pour transmettre les paramètres de démarrage au noyau. Elle donne aussi une idée de la façon dont les paramètres sont traités, quelles sont les limitations des paramètres de démarrage, et la façon dont ils sont répartis vers chaque périphérique pour lesquels ils ont été conçus.
Il est important de noter que l'on ne peut pas utiliser d'espaces dans un paramètre de démarrage, mais seulement entre des paramètres différents. Une liste de valeurs correspondant à un seul paramètre doit utiliser des virgules comme séparateur entre les différentes valeurs, là aussi, sans aucun espace. Voir les exemples ci-dessous.
ether=9,0x300,0xd0000,0xd4000,eth0 root=/dev/hda1 *BON* ether = 9, 0x300, 0xd0000, 0xd4000, eth0 root = /dev/hda1 *MAUVAIS*
Le programme LILO (LInux LOader) écrit par Werner Almesberger est le plus couramment utilisé. Il a la capacité de démarrer différents noyaux, et stocke les informations de configuration dans un fichier contenant exclusivement du texte. Beaucoup de distributions fournissent LILO comme "boot-loader" (chargeur de noyau) par défaut. LILO peut démarrer DOS, OS/2, Linux, FreeBSD, etc. sans aucun problème, et il est très souple.
Une configuration classique est d'avoir LILO qui arrête le
démarrage et affiche LILO:
peu de temps après que vous ayez
allumé votre ordinateur. Il attendra alors quelques instants en vue
d'une eventuelle saisie de l'utilisateur, faute de quoi il lancera
le système d'exploitation par défaut. Les étiquettes couramment
utilisées dans les fichiers de configuration de LILO sont linux
, backup
et msdos
. Si vous désirez entrer un paramètre de
démarrage, vous le taperez ici, après avoir entré l'étiquette du système
que vous voulez que LILO lance, comme indiqué dans l'exemple ci-dessous.
LILO: linux root=/dev/hda1
LILO est fourni avec une documentation excellente, et pour les
paramètres de démarrage dont nous parlons ici, la commande
append=
de LILO est d'une très grande importance lorsque l'on
veut ajouter un paramètre de démarrage de façon permanente dans le
fichier de configuration de LILO. Vous ajoutez tout simplement quelque
chose comme append = "foo=bar"
dans le fichier
/etc/lilo.conf
. On peut l'ajouter soit en haut du fichier
de configuration, afin qu'il s'applique à toutes les sections, ou
dans une section correspondant à un système particulier en le mettant
dans une section image=
.
Voyez la documentation de LILO pour une description plus complète.
L'autre chargeur de noyau couramment utilisé est `LoadLin' qui est un programme DOS qui est capable de lancer un noyau Linux à partir du prompt du dos (avec des paramètres de démarrage) en supposant que certaines ressources sont disponibles. Ceci est très bien pour les gens qui utilisent le DOS et qui veulent basculer sur Linux à partir du DOS.
C'est aussi très pratique si vous possédez du matériel qui est
dépendant du pilote fourni pour le DOS afin de mettre le matériel
dans un état donné. Un exemple fréquent : les cartes son
`SoundBlaster Compatible' qui requièrent un pilote DOS pour positioner
un ensemble de registres propriètaires pour mettre la carte dans un mode
compatible SoundBlaster. Démarrez le DOS avec le pilote requis,
et maintenant chargez Linux à partir du prompt du DOS avec
LOADLIN.EXE
en esquivant la remise à zéro de la carte qui
intervient si on redémarre complètement la machine. De cette façon,
la carte est laissée dans le mode compatible SB et par conséquent est
utilisable sous Linux.
Il y a aussi d'autres programmes qui peuvent être utilisés pour
démarrer Linux. Pour une liste complète, regardez sur votre miroir
ftp Linux local, les programmes disponibles dans le répertoire
system/Linux-boot/
.
Un certain nombre des paramètres de démarrage du noyau ont
leurs valeurs par défaut stockées dans différents octets de l'image
du noyau. Il existe un utilitaire baptisé rdev
qui est installé
sur la plupart des systèmes et qui sait où sont ces valeurs, et
comment les changer. Il peut aussi modifier un certain nombre de
choses qui ne possèdent pas de paramètre de démarrage équivalent,
comme le mode vidéo utilisé par défaut.
L'utilitaire rdev est couramment associé à swapdev, ramsize, vidmode et rootflags. Les cinq paramètres que rdev peut modifier sont : le périphérique de démarrage, le périphérique de swap, les paramètres du disque RAM, le mode vidéo par défaut, et l'autorisation de lecture-seule/lecture-écriture sur le périphérique racine.
Des informations plus complètes sur rdev
peuvent être obtenues
en tapant rdev -h
ou en lisant la page correspondante du manuel
fourni (man rdev
).
La plupart des paramètres de démarrage utilisent la syntaxe suivante :
nom[=valeur_1][,valeur_2]...[,valeur_11]
où `nom' est un mot clé unique qui est utilisé pour reconnaître à quelle partie du noyau sont destinées les valeurs associées (si il y en a). Plusieurs paramètres de démarrage peuvent être transmis sous forme d'une liste d'éléments, comme celle situé ci-dessus, séparés par des espaces. Notez que la limite de 11 paramètres est réelle, c'est pourquoi le code ci-dessus ne comporte que 11 paramètres séparés par des virgules pour un mot clé. Toutefois, vous pouvez réutiliser le même mot clé avec 11 paramètres de plus dans des situations très complexes, en sachant que ceci est accepté par la fonction de configuration. Notez aussi que le noyau partage la liste en un maximum de 10 paramètres entiers, et une chaîne de caractères accompagnatrice, donc vous pouvez réellement fournir 11 entiers, dans la mesure ou vous assurez la conversion du 11ème paramètre, de chaîne en entier, dans le pilote lui même.
La plupart sont pris en charge par linux/init/main.c
.
Tout d'abord, le noyau cherche à voir si le paramètre fait partie
des paramètres spéciaux comme `root=', `ro', `rw', ou `debug'.
La signification de ces paramètres spéciaux est décrite plus loin
dans ce document.
Il parcourt alors une liste de fonctions de configuration (contenues
dans le tableau bootsetups
) pour voir si la chaîne paramètre
spécifiée (comme par exemple `foo') a été associée à une fonction
de configuration (foo_setup()
) pour un périphérique particulier ou
une partie du noyau. Si vous passez au noyau la ligne
foo=3,4,5,6,bar
alors, il cherchera dans le tableau
bootsetups
pour voir si `foo' y figure. S'il y est, alors il pourra
appeler la fonction de configuration associée à `foo' (foo_setup()
)
et prendra en charge les paramètres 3, 4, 5 et 6 tels qu'ils sont donnés
dans la ligne de commande adressée au noyau, et traitera aussi le
paramètre de type chaîne bar
.
Quelque chose du type `foo=bar', qui n'est pas accepté comme une fonction de configuration telle qu'elle est décrite ci-dessus, est interprétée comme une variable d'environnement à positionner. Un exemple (inutile ?) serait d'utiliser `TERM=vt100' comme paramètre de démarrage.
Tous les paramètres restants qui ne sont pas pris par le noyau
et qui ne sont pas considérés comme étant des variables
d'environnement sont transmis au processus initial, qui est
généralement le programme init
. Le paramètre le plus
couramment passé au processus init
est le mot single
qui demande à init
de démarrer l'ordinateur en mode
mono-utilisateur, et de ne pas lancer les "daemons" (démons)
habituels.
Regardez la page du manuel correspondant à la version de
init
installée sur votre système, afin de connaître les
paramètres acceptés.