3. Paramètres Généraux non spécifiques à un Périphérique

Contenu de cette section

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.

3.1 Le Paramètre `no387'

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 !

3.2 Le Paramètre `no-hlt'

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.

3.3 Le paramètre `root='

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.

3.4 Le paramètre `ro'

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.

3.5 Le paramètre `rw'

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

3.6 Le paramètre `debug'

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.

3.7 Le paramètre `reserve='

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.

3.8 Le paramètre `ramdisk='

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.

3.9 Le paramètre `mem='

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