bootparam(7) Miscellaneous Information Manual bootparam(7) NOM bootparam - Introduction aux parametres de demarrage du noyau Linux DESCRIPTION Le noyau Linux accepte un certain nombre d'options en ligne de commande, egalement appelees parametres de demarrage, au moment ou il est charge. En general, c'est principalement utilise pour fournir au noyau des informations sur les parametres materiels qu'il serait incapable de determiner seul, ou pour eviter/remplacer les valeurs qu'il detecterait normalement. Quand le noyau est demarre directement par le BIOS, il n'est pas possible de preciser des parametres. Aussi, afin de tirer parti de ces possibilites, vous devez utiliser un chargeur capable de transmettre les options, comme GRUB. Liste des parametres La ligne de commande du noyau est une liste de chaines de caracteres (les parametres) separees par des espaces. La plupart des parametres de demarrage ont la forme suivante : nom[=valeur_1][,valeur_2]...[,valeur_10] ou << nom >> est un mot cle unique utilise pour identifier la partie du noyau a laquelle les valeurs eventuelles sont associees. La limite de 10 valeurs est effective, le code actuel ne gerant que 10 parametres par mot cle, separes par des virgules. (Neanmoins, vous pouvez reutiliser le meme mot cle avec 10 parametres supplementaires dans certaines situations complexes inhabituelles, en esperant que la fonction d'initialisation les gerera.) La plupart du traitement est code dans le fichier source du noyau init/main.c. Tout d'abord, le noyau verifie si le parametre est l'un des mots cles << root >>, << nfsroot >>, << nfsaddrs >>, << ro >>, << rw >> , << debug >> ou << init >>. La signification de ces options est decrite ci-dessous. Ensuite, il parcourt une liste de fonctions d'initialisation pour verifier si la chaine du parametre specifiee (par exemple << toto >>) est associee a une fonction d'initialisation (<< toto_setup() >>) pour un peripherique 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 enregistre. S'il l'est, le noyau appellera la fonction associee a << toto >> (toto_setup()) en lui passant les parametres 3, 4, 5 et 6 donnes sur la ligne de commande. Tout ce qui est de la forme << toto=titi >> et qui ne concerne pas une des fonctions d'initialisation decrites ci-dessus est interprete comme une variable d'environnement a definir. Un exemple (inutile ?) serait l'utilisation de << TERM=vt100 >> comme parametre de demarrage. Les parametres restants qui n'ont pas ete interceptes par le noyau et qui ne sont pas interpretes comme des variables d'environnement, seront passes au processus numero un, habituellement le programme init(1). Le parametre le plus courant dans ce cas est le mot << single >> qui indique a init de demarrer en mode mono-utilisateur, sans lancer tous les demons habituels. Regardez la page de manuel de la version d'init(1) installe sur votre systeme pour connaitre les parametres acceptes. Parametres generaux non specifiques a un peripherique 'init=...' Definit la commande initiale a faire executer par le noyau. Si ce parametre n'est pas fourni ou est introuvable, le noyau essaiera successivement /sbin/init, /etc/init, /bin/init, /bin/sh et paniquera si tout cela echoue. 'nfsaddrs=...' Definit l'adresse de demarrage par NFS. Cette adresse est utilisee en cas de demarrage par le reseau. 'nfsroot=...' Definit le nom de la racine NFS. Si cette chaine ne commence ni par << / >>, ni par << , >>, ni par un chiffre, elle est alors prefixee automatiquement par << /tftpboot/ >>. C'est utilise en cas de demarrage par le reseau. 'root=...' Ce parametre indique au noyau quel peripherique doit etre utilise comme systeme de fichiers racine pendant le demarrage. La configuration par defaut est determinee lors de la compilation du noyau et est generalement identique a la racine du systeme de fichiers utilise lors de la compilation. Pour remplacer cette valeur et selectionner par exemple le second lecteur de disquette, on utilisera << root=/dev/fd1 >>. Le peripherique racine peut etre specifie de maniere symbolique ou numerique. Une specification symbolique est de la forme /dev/XXYN, ou XX designe un type de peripherique (par exemple, << hd >> designe un disque dur compatible ST-506, avec Y dans << a-d >> ; << sd >> designe un disque compatible SCSI, avec Y dans << a-d >>, Y la lettre ou le numero du lecteur et N le numero (en decimal) de la partition sur ce peripherique. Cela n'a rien a voir avec la designation des peripheriques dans le systeme de fichiers, le prefixe << /dev/ >> est purement conventionnel. La specification numerique, plus compliquee et moins portable, du peripherique racine en utilisant les numeros majeur et mineur est egalement acceptee. (Par exemple, /dev/sda3 a pour nombres majeur et mineur respectivement 8 et 3, et peut donc etre mentionne ainsi : << root=0x803 >>.) 'rootdelay=' Ce parametre definit le delai (en seconde) de pause avant d'essayer de monter le systeme de fichiers racine. 'rootflags=...' Ce parametre definit la chaine d'option de montage pour le systeme de fichiers racine (consultez aussi fstab(5)). 'rootfstype=...' L'option << rootfstype >> demande au noyau de monter le systeme de fichiers racine comme s'il etait du type specifie. Cela peut-etre utile, par exemple, pour monter un systeme de fichiers ext3 en tant qu'ext2 et pouvoir alors supprimer le journal dans le systeme de fichiers racine, c'est-a-dire de repasser ce systeme de fichiers d'ext3 en ext2 sans avoir besoin de redemarrer a partir d'une autre source. 'ro' et 'rw' L'option << ro >> demande au noyau de monter le systeme de fichiers racine en lecture seule, pour que les programmes de verification de la coherence du systeme de fichiers puissent travailler sur un systeme au repos. Aucun processus ne peut ecrire sur le systeme de fichiers en question jusqu'a ce qu'il soit remonte en lecture/ecriture, par exemple avec la commande << mount -w -n -o remount / >>. (Consultez mount(8).) L'option << rw >> indique au noyau de monter le systeme de fichiers racine en lecture/ecriture. C'est l'option par defaut. 'resume=...' Cela indique au noyau l'emplacement des donnees stockees sur disque a utiliser pour revenir d'hibernation. C'est en general le meme que la partition ou le fichier d'echange. Exemple : resume=/dev/hda2 'reserve=...' Ce parametre permet de proteger une zone de ports d'entree-sortie de l'autodetection. La forme de l'option est : reserve=base_IO,longueur[,base_IO,longueur]... Pour certaines machines, il peut etre necessaire d'empecher les pilotes de rechercher des peripheriques dans des regions specifiques. En effet, certains materiels peuvent mal reagir a l'autodetection, ou seraient mal reconnus, ou simplement parce que vous ne souhaitez pas que le noyau initialise ces materiels. L'option reserve indique une zone de ports d'entree-sortie qu'il ne faut pas examiner. Un pilote de peripherique n'utilisera pas une region reservee, a moins qu'une autre option le lui indique explicitement. Par exemple, la ligne de commande reserve=0x300,32 blah=0x300 empeche tous les pilotes, sauf << blah >>, d'examiner 0x300-0x31F. 'panic=N' Par defaut, le noyau ne redemarrera pas automatiquement apres un cas de panique, mais cette option permet de faire redemarrer le noyau apres N secondes (si N est superieur a zero). Ce delai peut egalement etre configure avec : echo N > /proc/sys/kernel/panic 'reboot=[warm|cold][,[bios|hard]]' Depuis le noyau 2.0.22, les redemarrages sont par defaut faits a froid. Certains ont demande la restauration de l'ancienne valeur par defaut << reboot=warm >>. (Un redemarrage a froid peut etre necessaire pour reinitialiser certains peripheriques, mais risque de detruire des donnees presentes dans le cache des disques. Un redemarrage a chaud peut etre plus rapide.) Par defaut, le redemarrage est effectue materiellement, en demandant au controleur de clavier de baisser le niveau de la ligne reset. Il existe toutefois des cartes meres ou cela ne fonctionne pas. L'option << reboot=bios >> permet alors de redemarrer de maniere logicielle, en appelant le BIOS. 'nosmp' et 'maxcpus=N' (Seulement si la constante __SMP__ est definie.) L'option << nosmp >> ou << maxcpus=0 >> en ligne de commande empeche entierement l'activation du mode SMP. Une option << maxcpus=N >> limite le nombre maximal de processeurs actives en mode SMP. Parametres de demarrage pour les developpeurs du noyau 'debug' Les messages du noyau sont manipules par un demon (par exemple klogd(8) ou equivalent) pour qu'ils puissent etre stockes sur disque. Les messages disposant d'une priorite superieure a la valeur console_loglevel sont aussi affiches sur la console. (Pour en savoir plus sur les niveaux de log, consultez syslog(2).) Par defaut, cette variable est definie pour journaliser tout ce qui est plus important que les messages de debogage (KERN_DEBUG). Ce parametre de demarrage demandera au noyau d'afficher egalement les messages de la priorite KERN_DEBUG. Le niveau de la console peut aussi etre modifie dans un systeme demarre grace au fichier /proc/sys/kernel/printk (decrit dans syslog(2)), l'operation 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 desire s'assurer de l'emplacement ou le noyau consomme ses cycles CPU. Le suivi est active en definissant la variable prof_shift avec une valeur non nulle. Cela peut etre effectue soit en definissant la constante CONFIG_PROFILE durant la compilation, soit en indiquant l'option << profile= >> au demarrage. La valeur recue par la variable prof_shift sera N s'il est fourni, ou CONFIG_PROFILE_SHIFT si cette variable existe ou 2 par defaut. La signification de la variable correspond a la finesse du suivi : a chaque saut d'horloge, si le systeme execute du code du noyau, un compteur est incremente : profile[adresse >> prof_shift]++; Les informations brutes concernant le suivi peuvent etre lues dans /proc/profile. Vous prefererez probablement utiliser un outil comme readprofile.c pour les examiner. L'ecriture dans /proc/profile effacera les compteurs. Parametres de demarrage pour disques virtuels (Uniquement si le noyau a ete compile avec l'option CONFIG_BLK_DEV_RAM.) Il est generalement deconseille d'utiliser un disque virtuel sous Linux. Le systeme gerera mieux la memoire disponible tout seul. Neanmoins, pendant le demarrage, il peut etre utile de charger le contenu d'une disquette sur un disque virtuel. Il peut egalement arriver sur certains systemes que des modules particuliers concernant les systemes de fichiers ou le materiel doivent etre charges avant l'acces au disque principal. Avec Linux 1.3.48, la gestion des disques virtuels a ete profondement modifiee. Auparavant, la memoire etait allouee de maniere statique, avec un parametre << ramdisk=N >> qui indiquait la taille (cela pouvait aussi etre configure directement dans l'image du noyau a 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 parametres, deux booleens et deux entiers. 'load_ramdisk=N' Si N vaut 1, un disque virtuel est charge en memoire. Si N vaut 0 aucun disque virtuel n'est charge (comportement par defaut). 'prompt_ramdisk=N' Si N vaut 1, l'insertion d'une disquette est demandee (comportement par defaut). Si N vaut 0, rien n'est demande (donc ce parametre n'est jamais utilise). 'ramdisk_size=N' ou (obsolete) 'ramdisk=N' Definit la taille maximale du disque virtuel a N ko. Par defaut, la valeur est de 4096 ko (4 Mo). 'ramdisk_start=N' Indique le numero de bloc de depart (l'emplacement sur la disquette ou demarre le contenu du disque virtuel). C'est utile dans le cas ou l'image du disque virtuel suit une image de noyau. 'noinitrd' (Uniquement si le noyau a ete compile 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 possibilite est activee, le processus de demarrage charge le noyau et un disque virtuel initial. Puis le noyau convertit initrd en un disque virtuel << normal >> qui est monte en lecture/ecriture a la racine. Ensuite /linuxrc est execute. Ensuite, le << vrai >> systeme de fichiers est monte a la racine et le systeme initrd est deplace dans /initrd. Enfin, la sequence de demarrage habituelle (appel de /sbin/init) est executee. Pour une description detaillee des possibilites 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 ete compile, il ne doit pas effectuer les etapes sus-mentionnees, mais au contraire laisser les donnees de initrd sous /dev/initrd. (Ce peripherique ne peut etre utilise qu'une seule fois, les donnees sont liberees des que le dernier processus les ayant utilisees a ferme /dev/initrd.) Parametres de demarrage pour peripheriques SCSI Notations generales pour cette section : iobase -- le premier port d'entree-sortie utilise par l'hote SCSI. Il est indique en notation hexadecimale, habituellement dans l'intervalle allant de 0x200 a 0x3ff. irq -- l'interruption materielle pour laquelle la carte est configuree. Les valeurs valables dependent de la carte en question, mais sont generalement 5, 7, 9, 10, 11, 12 et 15. Les autres valeurs sont plutot utilisees par des peripheriques comme les disques IDE, les lecteurs de disquettes, les ports serie, etc. scsi-id -- l'identifiant utilise par l'adaptateur pour se distinguer sur le bus SCSI. Peu d'adaptateurs permettent de modifier cette valeur, qui est la plupart du temps figee en interne. La valeur classique est 7 mais les cartes Seagate et Future Domain TMC-950 utilisent 6. parite -- le fait que l'adaptateur SCSI attende que le peripherique lui fournisse ou non une valeur de parite pour tous les echanges d'informations. Un 1 valide le controle de parite, un 0 le desactive. Encore une fois, tous les adaptateurs ne gerent pas la modification de ce comportement comme parametre de demarrage. 'max_scsi_luns=...' Un peripherique SCSI peut contenir plusieurs << sous-peripheriques >> en lui-meme. L'exemple courant est celui des nouveaux lecteurs de CD-ROM qui gerent plusieurs disques en meme temps. Chaque CD est adresse par un numero d'unite logique, << Logical Unit Number >> (LUN). Cependant, la plupart des peripheriques SCSI, comme les disques durs ou les lecteurs de bande, n'ont qu'un seul sous-peripherique avec un LUN nul. Certains peripheriques SCSI mal concus ne peuvent pas etre detectes sur un LUN different de zero. Ainsi, si la constante de compilation CONFIG_SCSI_MULTI_LUN n'est pas definie, les noyaux recents n'examineront que le LUN zero. Pour indiquer le nombre de LUN a examiner au demarrage, on indiquera << max_scsi_luns=n >> comme parametre, n etant un nombre entre 1 et 8. Pour eviter les ennuis decrits ci-dessus, on utilisera n=1 avec des peripheriques a problemes. Configuration des lecteurs de bande SCSI Certaines configurations au demarrage des lecteurs de bandes SCSI peuvent etre effectuees ainsi : st=taille_tampon[,seuil_ecriture[,tampons_max]] Les deux premiers nombres sont indiques en ko. La valeur par defaut de taille_tampon est 32 ko, et la taille maximale exagerement grande est 16384 ko. Le nombre seuil_ecriture represente la valeur a partir de laquelle le tampon est effectivement ecrit sur la bande, par defaut 30 ko. Le nombre maximal de tampons varie avec le nombre de lecteurs detectes et vaut 2 par defaut. Un exemple d'utilisation serait : st=32,30,2 Des precisions completes sont disponibles dans le fichier Documentation/scsi/st.txt (ou drivers/scsi/README.st pour les noyaux plus anciens) du repertoire scsi des sources du noyau Linux. Disques durs Parametres des disques IDE et des lecteurs de CD-ROM Le pilote IDE accepte plusieurs parametres, principalement pour indiquer la geometrie du disque avec des controleurs obsoletes. Les specifications du disque sont indiquees en utilisant << hdX= >> avec X dans l'intervalle << a-h >>. Les options communes a plusieurs disques sont indiquees avec le prefixe << hd= >>. L'utilisation d'un prefixe specifique a un disque avec une option non specifique marchera egalement comme prevu. Notez encore que << hd= >> peut etre utilise pour faire reference au disque suivant, non specifie, dans la sequence (a, ..., h). Les options << hd= >> sont presentees brievement 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 precisions. Options << hd=cylindres,tetes,secteurs[,wpcom[,irq]] >> Ces options sont utilisees pour indiquer la geometrie physique du disque. Seules les trois premieres valeurs sont necessaires. Les nombres de cylindres/tetes/secteurs seront ceux utilises par fdisk. La valeur de compensation en ecriture est ignoree pour les disques IDE. L'IRQ indiquee sera utilisee avec le controleur du disque dur et n'est donc pas reellement specifique au disque. Option << hd=serialize >> L'interface double IDE CMD-640 est mal concue, car lorsqu'un disque sur la seconde interface est utilise simultanement au disque sur la premiere interface, les donnees seront corrompues. Utiliser cette option indique au pilote de s'assurer que les deux disques ne sont jamais utilises en meme temps. Option << hd=noprobe >> Ne pas examiner ce disque. Par exemple, hdb=noprobe hdb=1166,7,17 va desactiver la recherche, mais indique quand meme les parametres geometriques du disque, pour qu'il soit reconnu comme peripherique bloc valide et puisse donc etre utilise. Option << hd=nowerr >> Certains disques ont apparemment le bit WRERR_STAT positionne en permanence. Cela active un contournement pour ces peripheriques defectueux. Option << hd=cdrom >> Cela indique au pilote IDE qu'un lecteur de CD-ROM compatible ATAPI est attache a la place d'un disque dur normal. Dans la plupart des cas, le CD-ROM est identifie automatiquement, mais a defaut cette option peut aider. Options du pilote Standard ST-506 (<< hd= >>) Le pilote standard peut accepter des parametres concernant la geometrie des disques similaires a ceux du pilote IDE. Notez cependant qu'il n'attendra que trois valeurs (cylindres/tetes/secteurs) et tout ce qui suivra sera ignore silencieusement. De plus, il n'accepte que l'option << hd= >> en parametre, << hda= >> et autres ne seront pas valables. Le format est le suivant : hd=cylindres,tetes,secteurs Si deux disques sont installes, ce parametre est repete avec les parametres de geometrie du deuxieme disque. Peripheriques Ethernet Chaque peripherique utilise des parametres specifiques, mais ils partagent tous au moins une valeur d'IRQ, une base d'entree-sortie et un nom. Dans sa forme la plus generique, les parametres ressemblent a : ether=irq,iobase[,param_1[,...param_8]],nom Le premier parametre non numerique est considere comme le nom. La valeur de param_n (si elle existe) a une signification differente pour chacun des pilotes. Habituellement les valeurs param_n sont utilisees pour indiquer des options comme l'adresse d'une memoire partagee, la selection d'interface, le canal DMA, etc. L'utilisation la plus courante de ce parametre est de forcer la detection d'une seconde carte Ethernet, car l'attitude par defaut consiste a n'en detecter qu'une seule. Cela peut etre effectue simplement avec : ether=0,0,eth1 Les valeurs nulles pour irq et iobase dans l'exemple precedent indiquent au pilote d'effectuer l'autodetection. L'Ethernet-HowTo contient une documentation tres complete sur l'utilisation de plusieurs cartes et sur les valeurs des param_n specifiques aux cartes ou pilotes. Les lecteurs interesses se refereront a la section traitant de leur carte dans ce document. Lecteur de disquettes Il existe de nombreuses options pour le pilote de lecteurs de disquettes, et elles sont listees 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. Pilote audio Le pilote audio ne peut accepter que des parametres pour surcharger les valeurs definies a la compilation. Ce n'est pas recommande car assez complexe. Les options sont decrites 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 parametres de demarrage de la forme suivante sont acceptes : sound=device1[,device2[,device3...[,device10]]] ou chaque valeur de deviceN utilise le format 0xTaaaId, et les octets sont generalement utilises de la maniere suivante : T - type de peripherique : 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401 aaa - adresse d'entree-sortie en hexadecimal I - ligne d'interruption en hexadecimal (10=A, 11=B, ...) d - canal DMA Cela est assez complique et il vaut mieux compiler un noyau avec ses propres valeurs. L'utilisation du parametre de demarrage << sound=0 >> desactivera totalement le pilote audio. Pilote d'imprimante en ligne 'lp=' Syntaxe : lp=0 lp=auto lp=reset lp=port[,port...] On peut indiquer au pilote d'imprimante les ports a utiliser et ceux a ne pas utiliser. Cela permet d'eviter que le pilote n'examine tous les ports paralleles afin que d'autres pilotes (PLIP, PPA) puissent les utiliser. Le format du parametre est une suite de noms de port. Par exemple, << lp=none,parport0 >> utilisera le premier port parallele pour lp1 et desactivera lp0. Pour desactiver completement le pilote d'imprimante, utilisez lp=0. VOIR AUSSI klogd(8), mount(8) Pour une description detaillee, consultez le fichier source du noyau Documentation/admin-guide/kernel-parameters.txt. TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Thomas Vincent et Jean- Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 bootparam(7)