Voici des paramètres qui ne sont pas liés à des périphériques particuliers. Ils sont simplement liés à un certain nombre de paramètres internes au noyau.
Certains coprocesseurs i387 ont des bogues qui apparaissent lorsqu'ils sont utilisés en mode protégé 32 bits. Par exemple, certaines puces ULSI-387 récentes, provoquent un blocage irréverssible lorsqu'elles font des calculs un virgule flottante. L'utilisation du paramètre de démarrage `no387' fait ignorer à Linux le coprocesseur mathématique s'il y en a un. Bien sûr, votre noyau doit alors obligatoirement être compilé avec l'option d'émulation du coprocesseur !
La famille des processeurs i386 (et les suivantes) ont une instruction `htl' qui indique au processeur que rien ne va se produire jusqu'à ce qu'un périphérique externe (clavier, modem, disque, etc.) demande au processeur d'accomplir une tâche. Ceci permet au processeur de se mettre dans un mode `low-power' (économie d'énergie) dans lequel il reste à l'état de zombi jusqu'à ce qu'un périphérique externe le réveille (généralement via une interruption). Certaines puces i486DX-100 récentes ont un problème avec l'instruction `htl' qui est le suivant : elles ne peuvent pas retourner en mode opérationnel de façon fiable après que cette instruction a été utilisée. L'utilisation de l'instruction `no-hlt' indique à Linux de simplement exécuter une boucle infinie quand il n'y a rien d'autre à faire, et de ne pas arrêter votre processeur quand il n'y a aucune activitée. Ceci permet aux personnes qui utilisent ces puces défectueuses d'utiliser Linux, bien qu'ils doivent être informés du fait que le remplacement dans le cadre de la garantie est possible.
Ce paramètre indique au noyau quel périphérique doit être utilisé comme "root filesystem" (racine du système de fichier) pendant le démarrage. Par défaut, c'est le périphérique racine du système sur lequel le noyau a été construit. Par exemple, si le noyau en question a été construit sur un système qui utilise `/dev/hda1' comme partition racine, alors le périphérique racine par défaut sera `/dev/hda1'. Pour outrepasser cette valeur et sélectionner le second lecteur de disquette comme périphérique racine, il faut utiliser `root=/dev/fd1'.
Les périphériques racine valides sont des partitions sur un des périphériques disques suivants :
(1) /dev/hdaN à /dev/hddN, où N est la partition pour les disques `a à d' compatibles ST-506.
(2) /dev/sdaN à /dev/sdeN, où N est la partition pour les disques `a à e' compatibles SCSI.
(3) /dev/xdaN à /dev/xdbN, où N est la partition pour les disques `a à b' compatibles XT.
(4) /dev/fdN, où N est le numéro du lecteur de disquette. La valeur N=0 correspond au disque DOS `A:', et N=1 correspond à `B:'.
La plus maladroite et la moins compatible des spécifications
des périphériques racine ci-dessus, qui est le format
nombre majeur/nombre mineur est aussi acceptée (par exemple
/dev/sda3 a pour major 8, et pour minor 3,
vous pouvez donc utiliser root=0x803
comme alternative).
C'est un des paramètres de démarrage qui a sa valeur par défaut
stockée dans l'image du noyau, et qui peut être aussi modifiée
par l'utilitaire rdev
.
Quand le noyau démarre, il a besoin du système de fichier racine, pour énumérer les éléments de base de celui-ci. C'est le système de fichier racine qui est monté au démarrage. Cependant, si le système de fichier racine est monté avec un accès en écriture, vous ne pourrez pas contrôler de façon fiable l'intégrité du système de fichier, car il peut y avoir des fichiers en cours d'écriture. L'option `ro' indique au noyau de monter le système de fichier racine en lecture seule, de façon que les programmes de contrôle de cohérence du système de fichier (fsck) puissent être certain qu'il n'y a pas d'écritures en cours pendant la durée du test. Aucun programme ou processus ne peut écrire dans les fichiers situés sur le système de fichier en question jusqu'à ce qu'il ait été `remonté' avec un accès en lecture/écriture.
C'est un des paramètres de démarrage qui a sa valeur par défaut
stockée dans l'image du noyau, et qui peut être aussi modifiée
par l'utilitaire rdev
.
Ceci est le contraire le plus parfait de ce qui précéde, c'est à dire que ce paramètre indique au noyau de monter le système de fichier racine en lecture/écriture. N'exécutez surtout pas un programme de type `fsck' sur un système de fichier monté en lecture/écriture.
La même valeur stockée dans le fichier image mentionné ci-dessus
est aussi accessible via rdev
Le noyau envoie des messages importants (et moins importants)
à l'opérateur via la fonction printk()
. Si le message est
considéré comme important, la fonction printk()
envoie une
copie sur la console active, mais le transmet aussi à la fonction
klogd()
qui l'archive sur le disque. La raison pour laquelle
le message est envoyé à la console et archivé sur disque, est
simple : dans certaines circonstances malheureuses (par exemple
une défaillance du disque) le message ne serait pas écrit sur
le disque et serait perdu.
Le seuil à partir duquel un message est considéré comme important,
ou ne l'est pas, est déterminé par la variable console_loglevel
.
Par défaut, l'affichage sur la console est déclenché pour tout ce
qui depasse le DEBUG
(niveau 7). Ces niveaux sont définis dans
le fichier include kernel.h
. Le fait de spécifier comme
paramètre de démarrage debug
forcera le niveau de suivi
à 10, de façon que tous les messages du noyau apparaissent
sur la console.
Le niveau de suivi de la console peut aussi être positionné
pendant l'utilisation via une option du programme klogd()
.
Consultez la page du manuel correspondant à la version installée
sur votre système, pour voir comment utiliser ce programme.
Ceci est utilisé pour protéger les zones des ports d'I/O des programmes de test. La syntaxe de la commande est la suivante :
reserve=iobase,extent[,iobase,extent]...
Sur certaines machines, il peut-être nécessaire d'empêcher les pilotes de périphériques de contrôler les périphériques à une certaine adresse (auto-test). Ceci peut-être nécessaire pour du matériel mal conçu qui peut provoquer un bloquage au démarrage (comme par exemple certaines cartes réseaux ethernet), du matériel mal reconnu, du matériel dont l'état a été modifié par un test récent, ou encore si vous ne voulez pas que le noyau initialise certains matériels.
Le paramètre de démarrage reserve
s'attaque à ce problème en
spécifiant une zone d'un port d'entrée/sortie qui n'a pas besoin
d'être testée. Cette zone est "réservée" (verrouillée) dans la table
d'enregistrement des ports du noyau comme si un périphérique avait
déjà été trouvé dans cette zone. Notons que ce mécanisme n'est pas
nécessaire sur la plupart des machines. Il est indispensable d'utiliser
ce paramètre uniquement en cas de problème ou dans certains cas
particuliers.
Les ports d'entrée/sortie dans la zone spécifiée sont protégés contre
les contrôles de périphériques. Ceci a été introduit pour être utilisé
lorsqu'un pilote plante, avec la NE2000 par exemple, ou identifie de façon
incorrecte un autre périphérique comme étant le sien.
Un pilote de périphérique correct ne doit pas tester une zone réservée,
à moins qu'un autre paramètre de démarrage lui demande explicitement
de le faire. Ceci implique que le paramètre reserve
doit être le
plus souvent utilisé avec un autre paramètre de démarrage. Par conséquent
si vous spécifiez une région reserve
pour préserver un périphérique
particulier, vous devrez en général aussi spécifier de façon explicite
un test pour ce périphérique. La plupart des pilotes ignorent la table
d'enregistrement des ports si on leur donne une adresse spécifique.
Par exemple, la ligne de démarrage
reserve=0x300,32 blah=0x300
laisse tous les pilotes de périphériques, excepté le pilote pour `blah', tester 0x300-0x31f.
Comme d'habitude avec les paramètres de démarrage, il existe une limite à
11 paramètres, c'est pourquoi vous ne pouvez indiquer que 5 zones
protégées par mot clé reserve
. Plusieurs ordres reserve
peuvent être utilisés si vous avec une requête vraiment très complexe.
Ceci indique la taille en Kilo-Octets du disque virtuel (RAM disk) que vous pouvez éventuellement utiliser. Par exemple, si vous souhaitez avoir un système de fichier racine sur une disquette 1.44 Mo chargé sur le disque virtuel, vous devrez utiliser :
ramdisk=1440
C'est un des paramètres de démarrage qui a sa valeur par défaut
stockée dans l'image du noyau, et qui peut être aussi modifié
par l'utilitaire rdev
.
L'appel initial au BIOS défini dans la spécification des PC, et qui renvoie la taille de la mémoire installée, a été conçu pour être capable de donner des tailles mémoire jusqu'à 64 Mo (Hé oui, encore une manque de prévoyance, tout comme les disques de 1024 cylindres...Pfffff). Linux utilise cet appel au BIOS au démarrage pour déterminer quelle est la quantité de mémoire installée. Si vous avez plus de 64 Mo de mémoire vive installée, vous pouvez utiliser ce paramètre de démarrage pour indiquer à Linux quelle est la quantité de mémoire dont vous disposez. Voici une citation de Linus sur l'utilisation du paramètre `mem='.
"Le noyau acceptera tous les paramètres `mem=xx' que vous lui donnerez, et s'il s'aperçoit que vous lui avez menti, il plantera lamentablement tôt ou tard. Le paramètre indique la plus haute zone adressable, donc `mem=0x1000000' signifie que vous avez 16 Mo de mémoire, par exemple. Pour une machine ayant 96 Mo de mémoire, le paramètre serait `mem=0x6000000'."
NOTE NOTE NOTE: certaines machines peuvent utiliser le sommet de la mémoire pour le cache du BIOS ou quelque chose d'autre, c'est pourquoi il se peut que vous n'ayez pas vraiment la totalité de ces 96 Mo comme mémoire adressable. Le contraire est aussi exact : certaines puces feront un plan de la mémoire physique couverte par la zone BIOS dans la zone située juste au dessus du sommet de la mémoire, donc le sommet de la mémoire peut être actuellement 96Mo + 384ko par exemple. Si vous indiquez à Linux qu'il a plus de mémoire qu'il doit en avoir actuellement, des choses plutôt désagréables vous arriveront : peut-être pas tout de suite, mais un jour sûrement.''
Notez que cet argument n'a pas besoin d'être en hexadécimal, et que
les suffixes `k' et `M' (en majuscule ou minuscule, peu importe) peuvent
être utilisés pour indiquer respectivement kilo-octets et Méga-octets
(le `k' multiplie par 10 votre valeur et le `M' la multiplie par 20).
La mise en garde exposée ci-dessus reste vraie en cela qu'une machine
avec 96 Mo peut fonctionner avec mem=97920k
mais échouer avec soit
mem=98304k
ou mem=96M
.
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre