Le noyau Linux accepte un certain nombre d'options en ligne de
commande, également appelées paramètres de
démarrage, au moment où il est chargé. En
général, c'est principalement utilisé pour fournir au
noyau des informations sur les paramètres matériels qu'il
serait incapable de déterminer seul, ou pour éviter/remplacer
les valeurs qu'il détecterait normalement.
Quand le noyau est démarré directement par le BIOS,
il n'est pas possible de préciser des paramètres. Aussi, afin
de tirer parti de ces possibilités, vous devez utiliser un chargeur
capable de transmettre les options, comme GRUB.
La ligne de commande du noyau est une liste de chaînes de
caractères (les paramètres) séparées par des
espaces. La plupart des paramètres de démarrage ont la forme
suivante :
nom[=valeur_1][,valeur_2]...[,valeur_10]
où « nom » est un mot
clé unique utilisé pour identifier la partie du noyau à
laquelle les valeurs éventuelles sont associées. La limite de
10 valeurs est effective, le code actuel ne gérant que
10 paramètres par mot clé, séparés par
des virgules. (Néanmoins, vous pouvez réutiliser le
même mot clé avec 10 paramètres
supplémentaires dans certaines situations complexes inhabituelles, en
espérant que la fonction d'initialisation les gérera.)
La plupart du traitement est codé dans le fichier source du
noyau init/main.c. Tout d'abord, le noyau vérifie si le
paramètre est l'un des mots clés
« root »,
« nfsroot »,
« nfsaddrs »,
« ro », « rw » ,
« debug » ou
« init ». La signification de ces options est
décrite ci-dessous.
Ensuite, il parcourt une liste de fonctions d'initialisation pour
vérifier si la chaîne du paramètre
spécifiée (par exemple « toto »)
est associée à une fonction d'initialisation
(« toto_setup() ») pour un
périphérique particulier ou une partie du noyau. Si la ligne
toto=3,4,5,6 est fournie, le noyau cherchera alors dans la table bootsetups
si « toto » est enregistré. S'il l'est,
le noyau appellera la fonction associée à
« toto » (toto_setup()) en lui passant les
paramètres 3, 4, 5 et 6 donnés sur la ligne de
commande.
Tout ce qui est de la forme
« toto=titi » et qui ne concerne pas une des
fonctions d'initialisation décrites ci-dessus est
interprété comme une variable d'environnement à
définir. Un exemple (inutile ?) serait l'utilisation de
« TERM=vt100 » comme paramètre de
démarrage.
Les paramètres restants qui n'ont pas été
interceptés par le noyau et qui ne sont pas interprétés
comme des variables d'environnement, seront passés au processus
numéro un, habituellement le programme init(1). Le
paramètre le plus courant dans ce cas est le mot
« single » qui indique à init de
démarrer en mode mono-utilisateur, sans lancer tous les démons
habituels. Regardez la page de manuel de la version d'init(1)
installé sur votre système pour connaître les
paramètres acceptés.
Paramètres généraux non spécifiques
à un périphérique
- 'init=...'
- Définit la commande initiale à faire exécuter par le
noyau. Si ce paramètre n'est pas fourni ou est introuvable, le
noyau essaiera successivement /sbin/init, /etc/init,
/bin/init, /bin/sh et paniquera si tout cela
échoue.
- 'nfsaddrs=...'
- Définit l'adresse de démarrage par NFS. Cette adresse est
utilisée en cas de démarrage par le réseau.
- 'nfsroot=...'
- Définit le nom de la racine NFS. Si cette chaîne ne commence
ni par « / », ni par
« , », ni par un chiffre, elle est alors
préfixée automatiquement par
« /tftpboot/ ». C'est utilisé en cas de
démarrage par le réseau.
- 'root=...'
- Ce paramètre indique au noyau quel périphérique doit
être utilisé comme système de fichiers racine pendant
le démarrage. La configuration par défaut est
déterminée lors de la compilation du noyau et est
généralement identique à la racine du système
de fichiers utilisé lors de la compilation. Pour remplacer cette
valeur et sélectionner par exemple le second lecteur de disquette,
on utilisera « root=/dev/fd1 ».
- The root device can be specified symbolically or numerically. A symbolic
specification has the form /dev/XXYN, where XX designates the
device type (e.g., 'hd' for ST-506 compatible hard disk, with Y in
'a'–'d'; 'sd' for SCSI compatible disk, with Y in 'a'–'e'),
Y the driver letter or number, and N the number (in decimal) of the
partition on this device.
- Cela n'a rien à voir avec la désignation des
périphériques dans le système de fichiers, le
préfixe « /dev/ » est purement
conventionnel.
- La spécification numérique, plus compliquée et moins
portable, du périphérique racine en utilisant les
numéros majeur et mineur est également acceptée. (Par
exemple, /dev/sda3 a pour nombres majeur et mineur respectivement 8
et 3, et peut donc être mentionné ainsi :
« root=0x803 ».)
- 'rootdelay='
- Ce paramètre définit le délai (en seconde) de pause
avant d’essayer de monter le système de fichiers
racine.
- 'rootflags=...'
- Ce paramètre définit la chaîne d’option de
montage pour le système de fichiers racine (consultez aussi
fstab(5)).
- 'rootfstype=...'
- L'option « rootfstype » demande au noyau de
monter le système de fichiers racine comme s'il était du
type spécifié. Cela peut-être utile, par exemple,
pour monter un système de fichiers ext3 en tant qu'ext2 et pouvoir
alors supprimer le journal dans le système de fichiers racine,
c'est-à-dire de repasser ce système de fichiers d'ext3 en
ext2 sans avoir besoin de redémarrer à partir d'une autre
source.
- 'ro' et 'rw'
- L'option « ro » demande au noyau de monter le
système de fichiers racine en lecture seule, pour que les
programmes de vérification de la cohérence du système
de fichiers puissent travailler sur un système au repos. Aucun
processus ne peut écrire sur le système de fichiers en
question jusqu'à ce qu'il soit remonté en
lecture/écriture, par exemple avec la commande
« mount -w -n -o remount / ». (Consultez
mount(8).)
- L'option « rw » indique au noyau de monter le
système de fichiers racine en lecture/écriture. C'est
l'option par défaut.
- 'resume=...'
- Cela indique au noyau l’emplacement des données
stockées sur disque à utiliser pour revenir
d’hibernation. C’est en général le même
que la partition ou le fichier d’échange.
Exemple :
-
resume=/dev/hda2
- 'reserve=...'
- Ce paramètre permet de protéger une zone de ports
d'entrée-sortie de l'autodétection. La forme de l'option
est :
-
reserve=base_IO,longueur[,base_IO,longueur]...
- Pour certaines machines, il peut être nécessaire
d'empêcher les pilotes de rechercher des
périphériques dans des régions spécifiques. En
effet, certains matériels peuvent mal réagir à
l'autodétection, ou seraient mal reconnus, ou simplement parce que
vous ne souhaitez pas que le noyau initialise ces matériels.
- L'option reserve indique une zone de ports d'entrée-sortie qu'il ne
faut pas examiner. Un pilote de périphérique n'utilisera pas
une région réservée, à moins qu'une autre
option le lui indique explicitement.
- Par exemple, la ligne de commande
-
reserve=0x300,32 blah=0x300
- empêche tous les pilotes, sauf
« blah », d'examiner 0x300-0x31F.
- 'panic=N'
- Par défaut, le noyau ne redémarrera pas automatiquement
après un cas de panique, mais cette option permet de faire
redémarrer le noyau après N secondes (si N est
supérieur à zéro). Ce délai peut
également être configuré avec :
-
echo N > /proc/sys/kernel/panic
- 'reboot=[warm|cold][,[bios|hard]]'
- Depuis le noyau 2.0.22, les redémarrages sont par
défaut faits à froid. Certains ont demandé la
restauration de l'ancienne valeur par défaut
« reboot=warm ». (Un redémarrage
à froid peut être nécessaire pour
réinitialiser certains périphériques, mais risque de
détruire des données présentes dans le cache des
disques. Un redémarrage à chaud peut être plus
rapide.) Par défaut, le redémarrage est effectué
matériellement, en demandant au contrôleur de clavier de
baisser le niveau de la ligne reset. Il existe toutefois des cartes
mères où cela ne fonctionne pas. L'option
« reboot=bios » permet alors de
redémarrer de manière logicielle, en appelant le BIOS.
- 'nosmp' et 'maxcpus=N'
- (Seulement si la constante __SMP__ est définie.) L'option
« nosmp » ou
« maxcpus=0 » en ligne de commande
empêche entièrement l'activation du mode SMP. Une option
« maxcpus=N » limite le nombre maximal de
processeurs activés en mode SMP.
Paramètres de démarrage pour les
développeurs du noyau
- 'debug'
- Les messages du noyau sont manipulés par un démon (par
exemple klogd(8) ou équivalent) pour qu'ils puissent
être stockés sur disque. Les messages disposant d'une
priorité supérieure à la valeur
console_loglevel sont aussi affichés sur la console. (Pour
en savoir plus sur les niveaux de log, consultez syslog(2).) Par
défaut, cette variable est définie pour journaliser tout ce
qui est plus important que les messages de débogage
(KERN_DEBUG). Ce paramètre de démarrage demandera au
noyau d'afficher également les messages de la priorité
KERN_DEBUG. Le niveau de la console peut aussi être
modifié dans un système démarré grâce
au fichier /proc/sys/kernel/printk (décrit dans
syslog(2)), l'opération syslog(2)
SYSLOG_ACTION_CONSOLE_LEVEL ou dmesg(8).
- 'profile=N'
- Il est possible d'activer les fonctions de suivi du noyau si l'on
désire s'assurer de l'emplacement où le noyau consomme ses
cycles CPU. Le suivi est activé en définissant la variable
prof_shift avec une valeur non nulle. Cela peut être
effectué soit en définissant la constante
CONFIG_PROFILE durant la compilation, soit en indiquant l'option
« profile= » au démarrage. La valeur
reçue par la variable prof_shift sera N s'il est fourni, ou
CONFIG_PROFILE_SHIFT si cette variable existe ou 2 par
défaut. La signification de la variable correspond à la
finesse du suivi : à chaque saut d'horloge, si le
système exécute du code du noyau, un compteur est
incrémenté :
-
profile[adresse >> prof_shift]++;
- Les informations brutes concernant le suivi peuvent être lues dans
/proc/profile. Vous préférerez probablement utiliser
un outil comme readprofile.c pour les examiner. L'écriture dans
/proc/profile effacera les compteurs.
Paramètres de démarrage pour disques virtuels
(Only if the kernel was compiled with CONFIG_BLK_DEV_RAM.)
In general it is a bad idea to use a ramdisk under Linux—the system
will use available memory more efficiently itself. But while booting, it is
often useful to load the floppy contents into a ramdisk. One might also have
a system in which first some modules (for filesystem or hardware) must be
loaded before the main disk can be accessed.
- Avec Linux 1.3.48, la gestion des disques virtuels a
été profondément modifiée. Auparavant, la
mémoire était allouée de manière statique,
avec un paramètre « ramdisk=N » qui
indiquait la taille (cela pouvait aussi être configuré
directement dans l'image du noyau à la compilation). Actuellement,
les disques virtuels utilisent les tampons caches et grossissent
dynamiquement. Pour obtenir plus d'informations avec les disques virtuels
actuels, consultez le fichier source du noyau
Documentation/blockdev/ramdisk.txt
(Documentation/ramdisk.txt dans les anciens noyaux).
- Il y a quatre paramètres, deux booléens et deux
entiers.
- 'load_ramdisk=N'
- Si N vaut 1, un disque virtuel est chargé en mémoire.
Si N vaut 0 aucun disque virtuel n'est chargé (comportement
par défaut).
- 'prompt_ramdisk=N'
- Si N vaut 1, l'insertion d'une disquette est demandée
(comportement par défaut). Si N vaut 0, rien n'est
demandé (donc ce paramètre n'est jamais
utilisé).
- 'ramdisk_size=N' ou (obsolète) 'ramdisk=N'
- Définit la taille maximale du disque virtuel à N ko.
Par défaut, la valeur est de 4096 ko (4 Mo).
- 'ramdisk_start=N'
- Indique le numéro de bloc de départ (l'emplacement sur la
disquette où démarre le contenu du disque virtuel). C'est
utile dans le cas où l'image du disque virtuel suit une image de
noyau.
- 'noinitrd'
- (Uniquement si le noyau a été compilé avec les
options CONFIG_BLK_DEV_RAM et CONFIG_BLK_DEV_INITRD.) On
peut actuellement compiler le noyau pour qu'il utilise initrd. Quand cette
possibilité est activée, le processus de démarrage
charge le noyau et un disque virtuel initial. Puis le noyau convertit
initrd en un disque virtuel « normal » qui est
monté en lecture/écriture à la racine. Ensuite
/linuxrc est exécuté. Ensuite, le
« vrai » système de fichiers est
monté à la racine et le système initrd est
déplacé dans /initrd. Enfin, la séquence de
démarrage habituelle (appel de /sbin/init) est
exécutée.
- Pour une description détaillée des possibilités de
initrd, consultez le fichier source du noyau
Documentation/admin-guide/initrd.rst (ou
Documentation/initrd.txt avant Linux 4.10).
- L'option « noinitrd » indique au noyau que
contrairement aux options avec lesquelles il a été
compilé, il ne doit pas effectuer les étapes
sus-mentionnées, mais au contraire laisser les données de
initrd sous /dev/initrd. (Ce périphérique ne peut
être utilisé qu'une seule fois, les données sont
libérées dès que le dernier processus les ayant
utilisées a fermé /dev/initrd.)
Paramètres de démarrage pour
périphériques SCSI
Notations générales pour cette section :
iobase -- le premier port d'entrée-sortie
utilisé par l'hôte SCSI. Il est indiqué en notation
hexadécimale, habituellement dans l'intervalle allant de 0x200
à 0x3ff.
irq -- l'interruption matérielle pour laquelle la
carte est configurée. Les valeurs valables dépendent de la
carte en question, mais sont généralement 5, 7, 9, 10, 11, 12
et 15. Les autres valeurs sont plutôt utilisées par des
périphériques comme les disques IDE, les lecteurs de
disquettes, les ports série, etc.
scsi-id -- l'identifiant utilisé par l'adaptateur
pour se distinguer sur le bus SCSI. Peu d'adaptateurs permettent de modifier
cette valeur, qui est la plupart du temps figée en interne. La valeur
classique est 7 mais les cartes Seagate et Future Domain TMC-950
utilisent 6.
parité -- le fait que l'adaptateur SCSI attende que
le périphérique lui fournisse ou non une valeur de
parité pour tous les échanges d'informations. Un 1
valide le contrôle de parité, un 0 le désactive.
Encore une fois, tous les adaptateurs ne gèrent pas la modification
de ce comportement comme paramètre de démarrage.
- 'max_scsi_luns=...'
- Un périphérique SCSI peut contenir plusieurs
« sous-périphériques » en
lui-même. L'exemple courant est celui des nouveaux lecteurs de
CD-ROM qui gèrent plusieurs disques en même temps. Chaque CD
est adressé par un numéro d'unité logique,
« Logical Unit Number » (LUN). Cependant, la
plupart des périphériques SCSI, comme les disques durs ou
les lecteurs de bande, n'ont qu'un seul sous-périphérique
avec un LUN nul.
- Certains périphériques SCSI mal conçus ne peuvent pas
être détectés sur un LUN différent de
zéro. Ainsi, si la constante de compilation
CONFIG_SCSI_MULTI_LUN n'est pas définie, les noyaux
récents n'examineront que le LUN zéro.
- Pour indiquer le nombre de LUN à examiner au démarrage, on
indiquera « max_scsi_luns=n » comme
paramètre, n étant un nombre entre 1 et 8.
Pour éviter les ennuis décrits ci-dessus, on utilisera n=1
avec des périphériques à problèmes.
- Configuration
des lecteurs de bande SCSI
- Certaines configurations au démarrage des lecteurs de bandes SCSI
peuvent être effectuées ainsi :
-
st=taille_tampon[,seuil_écriture[,tampons_max]]
- Les deux premiers nombres sont indiqués en ko. La valeur par
défaut de taille_tampon est 32 ko, et la taille
maximale exagérément grande est 16384 ko. Le nombre
seuil_écriture représente la valeur à partir
de laquelle le tampon est effectivement écrit sur la bande, par
défaut 30 ko. Le nombre maximal de tampons varie avec le
nombre de lecteurs détectés et vaut 2 par
défaut. Un exemple d'utilisation serait :
-
st=32,30,2
- Des précisions complètes sont disponibles dans le fichier
Documentation/scsi/st.txt (ou drivers/scsi/README.st pour
les noyaux plus anciens) du répertoire scsi des sources du noyau
Linux.
- Paramètres des
disques IDE et des lecteurs de CD-ROM
- The IDE driver accepts a number of parameters, which range from disk
geometry specifications, to support for broken controller chips.
Drive-specific options are specified by using 'hdX=' with X in
'a'–'h'.
- Les options communes à plusieurs disques sont indiquées avec
le préfixe « hd= ». L'utilisation d'un
préfixe spécifique à un disque avec une option non
spécifique marchera également comme prévu.
- Notez encore que « hd= » peut être
utilisé pour faire référence au disque suivant, non
spécifié, dans la séquence (a, ..., h). Les options
« hd= » sont présentées
brièvement ci-dessous, consultez le fichier
Documentation/ide/ide.txt (ou Documentation/ide.txt pour les
noyaux anciens et drivers/block/README.ide pour les noyaux encore
plus anciens) dans les sources du noyau Linux pour plus de
précisions.
- Options
« hd=cylindres,têtes,secteurs[,wpcom[,irq]] »
- Ces options sont utilisées pour indiquer la géométrie
physique du disque. Seules les trois premières valeurs sont
nécessaires. Les nombres de cylindres/têtes/secteurs seront
ceux utilisés par fdisk. La valeur de compensation en
écriture est ignorée pour les disques IDE. L'IRQ
indiquée sera utilisée avec le contrôleur du disque
dur et n'est donc pas réellement spécifique au disque.
- Option
« hd=serialize »
- L'interface double IDE CMD-640 est mal conçue, car lorsqu'un disque
sur la seconde interface est utilisé simultanément au disque
sur la première interface, les données seront corrompues.
Utiliser cette option indique au pilote de s'assurer que les deux disques
ne sont jamais utilisés en même temps.
- Option
« hd=noprobe »
- Ne pas examiner ce disque. Par exemple,
-
hdb=noprobe hdb=1166,7,17
- va désactiver la recherche, mais indique quand même les
paramètres géométriques du disque, pour qu'il soit
reconnu comme périphérique bloc valide et puisse donc
être utilisé.
- Option
« hd=nowerr »
- Certains disques ont apparemment le bit WRERR_STAT
positionné en permanence. Cela active un contournement pour ces
périphériques défectueux.
- Option
« hd=cdrom »
- Cela indique au pilote IDE qu'un lecteur de CD-ROM compatible ATAPI est
attaché à la place d'un disque dur normal. Dans la plupart
des cas, le CD-ROM est identifié automatiquement, mais à
défaut cette option peut aider.
- Options du pilote
Standard ST-506 (« hd= »)
- Le pilote standard peut accepter des paramètres concernant la
géométrie des disques similaires à ceux du pilote
IDE. Notez cependant qu'il n'attendra que trois valeurs
(cylindres/têtes/secteurs) et tout ce qui suivra sera ignoré
silencieusement. De plus, il n'accepte que l'option
« hd= » en paramètre,
« hda= » et autres ne seront pas valables. Le
format est le suivant :
-
hd=cylindres,têtes,secteurs
- Si deux disques sont installés, ce paramètre est
répété avec les paramètres de
géométrie du deuxième disque.
Chaque périphérique utilise des paramètres
spécifiques, mais ils partagent tous au moins une valeur d'IRQ, une
base d'entrée-sortie et un nom. Dans sa forme la plus
générique, les paramètres ressemblent
à :
ether=irq,iobase[,param_1[,...param_8]],nom
Le premier paramètre non numérique est
considéré comme le nom. La valeur de param_n (si elle existe)
a une signification différente pour chacun des pilotes.
Habituellement les valeurs param_n sont utilisées pour
indiquer des options comme l'adresse d'une mémoire partagée,
la sélection d'interface, le canal DMA, etc.
L'utilisation la plus courante de ce paramètre est de
forcer la détection d'une seconde carte Ethernet, car l'attitude par
défaut consiste a n'en détecter qu'une seule. Cela peut
être effectué simplement avec :
ether=0,0,eth1
Les valeurs nulles pour irq et iobase dans l'exemple
précédent indiquent au pilote d'effectuer
l'autodétection.
L'Ethernet-HowTo contient une documentation très
complète sur l'utilisation de plusieurs cartes et sur les valeurs des
param_n spécifiques aux cartes ou pilotes. Les lecteurs
intéressés se référeront à la section
traitant de leur carte dans ce document.
Il existe de nombreuses options pour le pilote de lecteurs de
disquettes, et elles sont listées dans le fichier
Documentation/blockdev/floppy.txt (ou Documentation/floppy.txt
pour les anciens noyaux et drivers/block/README.fd pour les noyaux
encore plus anciens) dans les sources du noyau Linux. Veuillez consulter ce
fichier pour plus d'informations.
Le pilote audio ne peut accepter que des paramètres pour
surcharger les valeurs définies à la compilation. Ce n'est pas
recommandé car assez complexe. Les options sont décrites dans
le fichier Documentation/sound/oss/README.OSS (ou
drivers/sound/Readme.linux pour les noyaux plus anciens) dans les
sources du noyau Linux. Les paramètres de démarrage de la
forme suivante sont acceptés :
sound=device1[,device2[,device3...[,device10]]]
où chaque valeur de deviceN utilise le format 0xTaaaId, et
les octets sont généralement utilisés de la
manière suivante :
T - type de périphérique : 1=FM, 2=SB, 3=PAS,
4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401
aaa - adresse d'entrée-sortie en hexadécimal
I - ligne d'interruption en hexadécimal (10=A, 11=B,
...)
d - canal DMA
Cela est assez compliqué et il vaut mieux compiler un noyau
avec ses propres valeurs. L'utilisation du paramètre de
démarrage « sound=0 » désactivera
totalement le pilote audio.
- 'lp='
-
Syntaxe :
-
lp=0
lp=auto
lp=reset
lp=port[,port...]
- On peut indiquer au pilote d'imprimante les ports à utiliser et
ceux à ne pas utiliser. Cela permet d'éviter que le pilote
n'examine tous les ports parallèles afin que d'autres pilotes
(PLIP, PPA) puissent les utiliser.
- Le format du paramètre est une suite de noms de port. Par exemple,
« lp=none,parport0 » utilisera le premier port
parallèle pour lp1 et désactivera lp0. Pour
désactiver complètement le pilote d'imprimante, utilisez
lp=0.
La traduction française de cette page de manuel a
été créée par Christophe Blaess
<https://www.blaess.fr/christophe/>, Stéphan Rafin
<stephan.rafin@laposte.net>, Thierry Vignaud
<tvignaud@mandriva.com>, François Micaux, Alain Portal
<aportal@univ-montp2.fr>, Jean-Philippe Guérard
<fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh)
<jean-luc.coulon@wanadoo.fr>, Julien Cristau
<jcristau@debian.org>, Thomas Huriaux
<thomas.huriaux@gmail.com>, Nicolas François
<nicolas.francois@centraliens.net>, Florentin Duneau
<fduneau@gmail.com>, Simon Paillard
<simon.paillard@resel.enst-bretagne.fr>, Denis Barbier
<barbier@debian.org>, David Prévot <david@tilapin.org>,
Thomas Vincent <tvincent@debian.org> et Jean-Pierre Giraud
<jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez
vous reporter à la
GNU General
Public License version 3 concernant les conditions de copie et de
distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page
de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.