Le noyau Linux accepte un certain nombre d'options en ligne de
commandes, é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
(par exemple, depuis une disquette sur laquelle le noyau a été
copié en utilisant « cp zImage
/dev/fd0 »), 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é
« 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
(contenue dans la table bootsetups) 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
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(1)
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 nfs de la racine. 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.
- 'no387'
- (Uniquement si la constante CONFIG_BUGi386 est définie.)
Certaines puces de coprocesseur i387 ont des bogues qui apparaissent en
mode protégé 32 bits. Par exemple, les
premières puces ULSI-387 bloquent le système durant
l'exécution des opérations en virgule flottante. Si le
paramètre « no387 » est indiqué,
Linux ignore le coprocesseur arithmétique même s'il en
détecte un. Bien sûr, le noyau doit être
compilé avec la gestion de l'émulation
mathématique.
- 'no-hlt'
- (Uniquement lorsque la constante CONFIG_BUGi386 est
définie.) Certaines anciennes puces i486DX-100 ont un
problème avec l'instruction « hlt »,
car elles ne peuvent pas reprendre fiablement le cours des
opérations après l'utilisation de
« hlt ». L'option
« no-hlt » indique à Linux d'utiliser
une boucle infinie quand il n'y a rien à faire et de ne pas
arrêter le processeur. Cela permet d'utiliser Linux avec ces puces
cassées.
- '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 ».
Le périphérique racine peut être
spécifié de manière symbolique ou numérique.
Une spécification symbolique est de la forme /dev/XXYN,
où XX désigne un type de périphérique
(« hd » pour un disque dur compatible
ST-506, avec Y dans « a-d » ;
« sd » pour un disque compatible SCSI, avec
Y dans « a-e » ;
« ad » pour un disque Atari ACSI, avec Y
dans « a-e » ;
« ez » pour un disque amovible Syquest EZ135
sur le port parallèle, avec Y valant
« a » ;
« xd » pour un disque compatible XT, Y
étant « a » ou
« b » ;
« fd » pour un lecteur de disquette, Y
étant le numéro — fd0 serait le disque
« A: » sous DOS, et fd1 serait le
« B: »), Y la lettre ou le numéro du
lecteur, et N le numéro (en décimal) de la partition sur
ce périphérique (absent pour les disquettes). Les noyaux
récents autorisent de nombreux autres types de
périphériques, principalement pour les CD-ROM :
nfs, ram, scd, mcd, cdu535, aztcd, cm206cd, gscd, sbpcd, sonycd, bpcd.
(Le type nfs indique un démarrage par le réseau, et ram se
rapporte à un disque virtuel en mémoire.)
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 ».)
- '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.
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.
- 'mem=...'
- L'appel BIOS, défini dans les spécifications du PC, qui
indique la quantité de mémoire installée, n'est
prévu que pour la détection de 64 Mo au plus. Linux
utilise cet appel BIOS pendant le démarrage pour obtenir la
quantité de mémoire installée. Si vous avez plus de
64 Mo, vous devez utiliser ce paramètre de démarrage
pour indiquer au noyau la valeur exacte. Cette valeur est fournie en
décimal ou en hexadécimal (préfixe 0x), et les
suffixes « k » (multiplié par 1024) ou
« M » (multiplié par
1 048 576) peuvent être utilisés. Voici un
extrait d'une note de Linus sur l'utilisation du paramètre
« mem= » :
Le noyau acceptera n'importe quelle valeur fournie pour le
paramètre « mem=xx » et s'il
s'avère que vous lui avez menti, il plantera horriblement
tôt ou tard. Ce paramètre indique la plus haute adresse
mémoire accessible, ainsi
« mem=0x1000000 » signifie que vous avez
16 Mo de RAM, par exemple. Pour une machine avec 96 Mo
cela serait « mem=0x6000000 ».
NOTE : certaines machines peuvent utiliser une
extrémité de la mémoire pour cacher le BIOS ou
n'importe quoi d'autre, aussi vous ne pourrez pas adresser les
96 Mo en entier. L'inverse est aussi vrai, certaines cartes
mères vont projeter la mémoire physique recouverte par le
BIOS juste au-dessus de la mémoire accessible, auquel cas vous
auriez accès à 96 Mo + 384 ko
par exemple. Si vous faites croire à Linux qu'il dispose de plus
de mémoire que ce qu'il a en réalité, de mauvaises
choses vont se produire : peut-être pas tout de suite,
mais plus tard à coup sûr.
Vous pouvez aussi utiliser l'argument
« mem=nopentium » au boot pour
désactiver les tables de pages de 4 Mo sur les noyaux
configurés pour les systèmes IA32 avec un processeur
pentium ou plus récent.
- '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]]'
- (Uniquement si la constante CONFIG_BUGi386 est définie.)
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 le démon de
journalisation klogd, 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 ces niveaux, consultez <linux/kernel.h>.)
Par défaut, cette variable est définie pour journaliser tout
ce qui est plus important que les messages de débogage. Ce
paramètre de démarrage demandera au noyau d'afficher
également les messages de la priorité DEBUG. Le niveau de la
console peut aussi être modifié pendant l'exécution,
avec une option de klogd. Consultez klogd(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.
- 'swap=N1,N2,N3,N4,N5,N6,N7,N8'
- Cela permet de configurer les huit paramètres max_page_age,
page_advance, page_decline, page_initial_age, age_cluster_fract,
age_cluster_min, pageout_weight, bufferout_weight qui contrôlent
l'algorithme d'échange du noyau. À n'utiliser que par les
développeurs du noyau.
- 'buff=N1,N2,N3,N4,N5,N6'
- Cela permet de configurer les six paramètres max_buff_age,
buff_advance, buff_decline, buff_initial_age, bufferout_weight,
buffermem_grace qui contrôlent la gestion des tampons du noyau.
À n'utiliser que par les développeurs du noyau.
Paramètres de démarrage pour disques virtuels
(Uniquement si le noyau a été compilé avec
l'option CONFIG_BLK_DEV_RAM.) Il est généralement
déconseillé d'utiliser un disque virtuel sous Linux. Le
système gérera mieux la mémoire disponible tout seul.
Néanmoins, pendant le démarrage, ou durant la création
de disquettes de démarrage, il peut être utile de charger le
contenu d'une disquette sur un disque virtuel. Il peut également
arriver sur certains systèmes que des modules particuliers concernant
les systèmes de fichiers ou le matériel doivent être
chargés avant l'accès au disque principal.
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ée 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 nouveaux disques virtuels, 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
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/initrd.txt.
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é 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.
- Configuration
Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI
- Les numéros aha se réfèrent aux cartes, et les
numéros aic à la véritable puce SCSI placée
sur ces cartes, y compris la Soundblaster-16 SCSI.
Le code de détection pour ces hôtes SCSI
recherche un BIOS installé, et si aucun n'est présent, la
carte ne sera pas trouvée. Il vous faudra alors utiliser un
paramètre de la forme :
aha152x=iobase[,irq[,scsi-id[,reconnexion[,parité]]]]
- Si le pilote a été compilé avec les options de
débogage, une sixième valeur peut spécifier le niveau
de débogage.
Tous les paramètres sont identiques à ceux
décrits au début de cette section et la valeur
reconnexion permettra au périphérique de se
déconnecter/reconnecter si elle est non nulle. Un exemple
d'utilisation serait :
aha152x=0x340,11,7,1
- Tous les paramètres doivent être indiqués dans
l'ordre, ce qui signifie que pour spécifier une parité, il
faut également spécifier les valeurs de iobase, irq, scsi-id
et reconnexion.
- Configuration
Adaptec aha154x
- Les cartes aha1542 disposent d'un contrôleur de disquettes i82077,
mais pas les cartes aha1540. Ce sont des cartes maîtresses sur le
bus, et ont un paramètre indiquant leur
« courtoisie » dans le partage du bus avec
d'autres périphériques. Les paramètres de
démarrage ressemblent à
aha1542=iobase[,buson,busoff[,vitesse_dma]]
- Les valeurs valables de iobase sont habituellement 0x130, 0x134, 0x230,
0x234, 0x330, ou 0x334. Des cartes clones peuvent proposer d'autres
valeurs.
Les valeurs buson et busoff se
réfèrent au nombre de microsecondes pendant lesquelles la
carte maîtrise le bus ISA. Les valeurs par défaut sont 11
microsecondes on, et 4 microsecondes off, ainsi d'autres cartes (comme
les cartes Ethernet ISA LANCE) peuvent accéder au bus ISA.
La valeur vitesse_dma se rapporte au débit (en
Mo/sec) utilisé pour les transferts DMA (Direct Memory Access).
La valeur par défaut est 5 Mo/sec. Des cartes
récentes permettent de choisir cette valeur dans une
configuration logicielle, les anciennes en positionnant des cavaliers.
On peut utiliser des valeurs jusqu'à 10 Mo/sec, à
condition que la carte mère soit capable de les gérer. Il
faut expérimenter prudemment pour les valeurs dépassant
5 Mo/sec.
- Configuration
Adaptec aha274x, aha284x, aic7xxx
- Ces cartes peuvent accepter un paramètre de la forme :
aic7xxx=extended,no_reset
- La valeur extended, si elle est non nulle, indique que la
traduction étendue est validée pour les gros disques. La
valeur no_reset, si elle est non nulle, indique que le pilote ne
doit pas réinitialiser le bus SCSI lors du démarrage de
l'hôte.
- Configuration
des hôtes SCSI AdvanSys
(« advansys= »)
- Le pilote AdvanSys accepte jusqu'à quatre adresses
d'entrée-sortie qui seront examinées pour détecter
une carte SCSI AdvanSys. Ces valeurs, si elles sont utilisées, ne
modifient en rien la détection des périphériques EISA
ou PCI. Elles ne concernent que les cartes ISA ou VLB. De plus si le
pilote a été compilé avec les options de
débogage, le niveau de débogage peut être
configuré avec le paramètre 0xdeb[0-f]. Le niveau des
messages de débogage est configuré avec la valeur 0-f
permettant ainsi d'accéder à 16 niveaux de
messages.
- AM53C974
- Syntaxe :
AM53C974=host-scsi-id,target-scsi-id,max-rate,max-offset
- Configuration
des hôtes SCSI BusLogic
(« buslogic= »)
-
Syntaxe :
BusLogic=N1,N2,N3,N4,N5,S1,S2,...
- Pour une description détaillée des paramètres de
ligne de commandes concernant les périphériques BusLogic,
consultez le fichier source du noyau drivers/scsi/BusLogic.c. Le
texte ci-dessous en est un extrait très abrégé.
Les paramètres N1-N5 sont des entiers, les
paramètres S1,... des chaînes de caractères. N1
correspond à l'adresse d'entrée-sortie où
l'adaptateur est situé. N2 est la taille de la file d'attente
(Tagged Queue Depth) pour les périphériques qui prennent
en charge le « Tagged Queuing ». N3 est le
temps de démarrage du bus (Bus Settle Time) en secondes. Il
s'agit de la durée d'attente entre une réinitialisation
matériel d'un adaptateur hôte qui déclenche une
réinitialisation du bus SCSI, et toute autre commande SCSI. N4
sont des options locales (pour un adaptateur hôte). N5 sont des
options globales (pour tous les adaptateurs hôtes).
Les chaînes d'options sont utilisées pour
obtenir un contrôle sur le « Tagged
Queuing » (TQ:Default, TQ:Enable, TQ:Disable,
TQ:<Per-Target-Spec>), sur l'Error Recovery (ER:Default,
ER:HardReset, ER:BusDeviceReset, ER:None, ER:<Per-Target-Spec>),
et sur la détection de l'adaptateur hôte (NoProbe,
NoProbeISA, NoSortPCI).
- Configuration
EATA/DMA
- La liste par défaut des ports d'entrée-sortie à
examiner peut être modifiée avec
eata=iobase,iobase,....
- Configuration
Future Domain TMC-16x0
- Syntaxe :
fdomain=iobase,irq[,adapter_id]
- Configuration
contrôleur SCSI Great Valley Products (GVP)
- Syntaxe :
gvp11=dma_transfer_bitmask
- Configuration
Future Domain TMC-8xx, TMC-950
- Syntaxe :
tmc8xx=mem_base,irq
- La valeur mem_base est l'adresse utilisée par la carte pour
projeter ses ports d'entrée-sortie en mémoire. C'est
généralement l'une des valeurs suivantes : 0xc8000,
0xca000, 0xcc000, 0xce000, 0xdc000 ou 0xde000.
- Configuration
IN2000
- Syntaxe :
in2000=S
- où S est une chaîne d'éléments
« mots-clés[:valeur] »,
séparés par des virgules. Les mots-clés reconnus sont
(certains nécessitent des valeurs) : ioport:addr, noreset,
nosync:x, period:ns, disconnect:x, debug:x, proc:x. Pour des
précisions sur ces paramètres, consultez le fichier source
du noyau drivers/scsi/in2000.c.
- Configuration
NCR5380 et NCR53C400
- Le paramètre de démarrage est de la forme
ncr5380=iobase,irq,dma
- ou
ncr53c400=iobase,irq
- Si la carte n'utilise pas les interruptions, une valeur d'IRQ de 255
(0xff) permettra de les désactiver. Une valeur IRQ de 254
réclame une autodétection. Des précisions
supplémentaires sont disponibles dans le fichier
Documentation/scsi/g_NCR5380.txt (ou
drivers/scsi/README.g_NCR5380 pour les noyaux plus anciens) dans
les sources du noyau Linux.
- Configuration
NCR53C8xx
- Syntaxe :
ncr53c8xx=S
- où S est une chaîne d'éléments
« mots_clés:valeur »,
séparés par des virgules. Les mots clé reconnus
sont : mpar (master_parity), spar (scsi_parity), disc
(disconnection), specf (special_features), ultra (ultra_scsi), fsn
(force_sync_nego), tags (default_tags), sync (default_sync), verb
(verbose), debug (debug), burst (burst_max). Pour des précisions
sur les valeurs correspondantes, consultez le fichier source du noyau
drivers/scsi/ncr53c8xx.c.
- Configuration
NCR53c406a
- Syntaxe :
ncr53c406a=iobase[,irq[,fastpio]]
- Utiliser irq = 0 pour un fonctionnement sans interruption. Définir
fastpio à 1 pour un mode pio rapide, et à 0 pour un mode
lent.
- Configuration
Pro Audio Spectrum
- La PAS16 utilise une puce SCSI NC5380, et les modèles
récents permettent une configuration de la carte sans avoir recours
aux cavaliers. Le paramètre de démarrage est de la
forme :
pas16=iobase,irq
- La seule nouveauté est que l'on peut indiquer la valeur 255
pour l'IRQ, ce qui configure le pilote pour un fonctionnement sans
interruption, au prix d'une dégradation des performances. La valeur
usuelle pour iobase est 0x388.
- Configuration
Seagate ST-0x
- Si la carte n'est pas détectée au démarrage, vous
devrez utiliser un paramètre de démarrage de la
forme :
st0x=mem_base,irq
- La valeur mem_base est l'adresse utilisée par la carte pour
projeter ses ports d'entrée-sortie en mémoire. C'est
généralement l'une des valeurs suivantes : 0xc8000,
0xca000, 0xcc000, 0xce000, 0xdc000 ou 0xde000.
- Configuration
Trantor T128
- Ces cartes, basées également sur une puce NCR5380, acceptent
les options suivantes :
t128=mem_base,irq
- Les valeurs acceptables de mem_base sont : 0xCC000, 0xC8000,
0xDC000, 0xD8000.
- Configuration
UltraStor 14F/34F
- La liste par défaut des ports d'entrée-sortie à
examiner peut être modifiée avec
eata=iobase,iobase,....
- Configuration
WD7000
- Syntaxe :
wd7000=irq,dma,iobase
- Configuration
du contrôleur SCSI Commodore Amiga A2091/590
- Syntaxe :
wd33c93=S
- où S est une chaîne d'options séparées par des
virgules. Les options reconnues sont : nosync:bitmask, nodma:x,
period:ns, disconnect:x, debug:x, clock:x, next. Pour plus de
précisions, consultez le fichier source du noyau
drivers/scsi/wd33c93.c.
- Paramètres des
disques IDE et des lecteurs de CD-ROM
- Le pilote IDE accepte plusieurs paramètres, principalement pour
indiquer la géométrie du disque avec des contrôleurs
obsolètes. Les spécifications du disque sont
indiquées en utilisant « hdX= » avec X
dans l'intervalle « 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.txt (ou drivers/block/README.ide
pour les noyaux 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=dtc2278 »
- Cette option indique au pilote qu'une interface IDE DTC-2278D est
présente. Le pilote essaiera alors d'utiliser des opérations
spécifiques DTC, afin de valider la seconde interface, et d'obtenir
des transferts rapides.
- 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 pourra 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.
- Options du pilote
XT (« xd= »)
- Si vous avez la malchance d'utiliser encore ces vieilles cartes
8 bits qui transfèrent les données avec une vitesse
phénoménale de 125 ko/s, voici des informations qui
vous concernent. Si la carte n'est pas reconnue, il faut utiliser un
paramètre de démarrage de la forme :
xd=type,irq,iobase,dma_chan
- La valeur type indique le fabricant de la carte, pour ignorer
l'autodétection. Pour une liste des types, consultez le fichier
drivers/block/xd.c des sources du noyau. Ce type est un indice dans
la table xd_sigs qui évolue suivant les versions du noyau.
Aujourd'hui (Linux 2.5.0), les types sont
0=générique ; 1=DTC 5150cx ; 2,3=DTC
5150x ; 4,5=Western Digital ; 6,7,8=Seagate ;
9=Omti ; 10=XEBEC. Lorsque plusieurs types correspondent au
même fabricant, ils sont équivalents.
La fonction xd_setup() ne vérifie pas les valeurs, et
suppose que vous avez bien saisi les quatre, ce qui est à faire
absolument. Voici un exemple d'utilisation pour un contrôleur
WD1002 avec un BIOS désactivé en utilisant le
paramètre de contrôleur XT « par
défaut » :
xd=2,5,0x320,3
- Disques amovibles
Syquest EZ*
- Syntaxe :
ez=iobase[,irq[,rep[,nybble]]]
Périphériques bus IBM MCA
Consultez également le fichier source du noyau
Documentation/mca.txt.
- Disques durs ESDI
PS/2
- Il est possible d'indiquer la géométrie
désirée durant le démarrage :
ed=cyls,têtes,secteurs.
- Pour un ThinkPad-720, ajoutez l'option
tp720=1.
- Configuration
de sous-systèmes SCSI IBM Microchannel
- Syntaxe :
ibmmcascsi=N
- où N est le pun (ID SCSI) du sous-système.
- L'interface
Aztech
- La syntaxe pour ce type de carte est :
aztcd=iobase[,magic_number]
- Si un numéro magique fourni vaut 0x79, alors le pilote
démarrera quelque soit la version du matériel, même
inconnue. Toutes les autres valeurs sont ignorées.
- Lecteurs de CD-ROM
sur port parallèle
- Syntaxe :
pcd.driveN=prt,pro,uni,mod,slv,dly
pcd.nice=nice
- où « port » est l'adresse de base,
« pro » est le numéro de protocole,
« uni » est le sélecteur d'unité
(pour les chaînes de périphériques),
« mod » est le mode (ou -1 pour laisser le
noyau choisir le meilleur automatiquement),
« slv » est 1 si il s'agit d'un esclave, et
« dly » est un petit entier pour ralentir les
accès au port. Le paramètre
« nice » demande l'utilisation par le pilote
des temps d'inactivité du CPU, au détriment de la
vitesse.
- Interface Sony
CDU-31A et CDU-33A
- Cette interface CD-ROM est présente sur certaines cartes sonores
Pro Audio Spectrum et sur d'autres cartes fournies par Sony. La syntaxe
est la suivante :
cdu31a=iobase,[irq[,is_pas_card]]
- Fournir une valeur d'IRQ nulle indique au pilote que les interruptions
matérielles ne sont pas gérées (comme sur certaines
cartes PAS). Si votre carte gère les interruptions, vous devez les
utiliser car cela réduit grandement l'utilisation du CPU par le
pilote.
La valeur de is_pas_card doit être
« PAS » pour une carte Pro Audio Spectrum,
et rien dans le cas contraire.
- Interface
Sony CDU-535
- La syntaxe pour cette interface CD-ROM est :
sonycd535=iobase[,irq]
- Un zéro peut être utilisé comme iobase en tant que
valeur fictive si l'on veut seulement indiquer la valeur d'IRQ.
- Interface
GoldStar
- La syntaxe pour cette interface CD-ROM est :
gscd=iobase
- Interface
CD-ROM ISP16
- Syntaxe :
isp16=[iobase[,irq[,dma[,type]]]]
- (Trois entiers et une chaîne) si le type indiqué est
« noisp16 », l'interface ne sera pas
configurée. Sinon, les autres types possibles sont :
« Sanyo »,
« Sony »,
« Panasonic » et
« Mitsumi ».
- Interface
Mitsumi standard
- La syntaxe pour cette interface CD-ROM est :
mcd=iobase,[irq[,wait_value]]
- La valeur wait_value est utilisée comme délai interne
pour les personnes qui ont des problèmes avec leur lecteur, et est
implémentée ou non en fonction d'une directive #define
à la compilation. Le Mitsumi FX400 est un lecteur de CD-ROM
IDE/ATAPI et n'utilise pas le pilote mcd.
- Interface
Mitsumi XA/MultiSession
- Il s'agit du même matériel que le précédent,
mais le pilote de périphérique a des possibilités
étendues. Syntaxe :
mcdx=iobase[,irq]
- Interface
stockage optique
- La syntaxe pour ce type de carte est :
optcd=iobase
- Interface
Phillips CM206
- La syntaxe pour ce type de carte est :
cm206=[iobase][,irq]
- Le pilote suppose que les nombres entre 3 et 11 sont des valeurs d'IRQ, et
ceux entre 0x300 et 0x370 des ports d'entrée-sortie. Ainsi, on peut
spécifier une seule valeur ou les deux, dans un ordre quelconque.
Il accepte également « cm206=auto »
pour valider l'autodétection.
- Interface
Sanyo
- La syntaxe pour ce type de carte est :
sjcd=iobase[,irq[,dma_channel]]
- Interface
SoundBlaster Pro
- La syntaxe pour ce type de carte est :
sbpcd=iobase,type
- où type est l'une des chaînes suivantes (respecter les
majuscules et les minuscules) :
« SoundBlaster »,
« LaserMate », ou
« SPEA ». La valeur pour iobase est celle de
l'interface CD-ROM, et non pas celle de la partie son de la carte.
Périphériques Ethernet
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/floppy.txt (ou drivers/block/README.fd pour les
noyaux plus anciens) dans les sources du noyau Linux. Les informations
suivantes sont extraites de ce fichier.
- floppy=mask,allowed_drive_mask
- Définit la valeur mask comme masque binaire des lecteurs valides.
Par défaut, seules les unités 0 et 1 de chaque
contrôleur de disquettes sont valides, car certains
périphériques non standards (cartes mères ASUS PCI)
bloquent le clavier lors de l'accès aux unités 2 ou 3. Cette
option est quelque peu obsolète avec la configuration cmos.
- floppy=all_drives
- Valide tous les lecteurs. Utilisez cela si vous disposez de plus de deux
lecteurs connectés sur un même contrôleur.
- floppy=asus_pci
- Ne valide que les unités 0 et 1 (par défaut).
- floppy=daring
- Indique au pilote que le contrôleur a un comportement correct. Cela
permet des opérations plus efficaces et plus rapides, mais peut
échouer avec certains contrôleurs.
- floppy=0,daring
- Indique au pilote que le contrôleur doit être utilisé
avec méfiance.
- floppy=one_fdc
- Indique au pilote qu'il n'y a qu'un seul contrôleur de disquettes
(par défaut).
- floppy=two_fdc
ou floppy=adresse,two_fdc
- Indique au pilote qu'il y a deux contrôleurs de disquettes. Le
second est supposé se trouver à l'adresse indiquée.
Si l'adresse est absente, on suppose qu'elle vaut 0x370.
- floppy=thinkpad
- Indique au pilote qu'un Thinkpad est présent. Les Thinkpads
utilisent une convention inversée pour la ligne de changement de
disques.
- floppy=0,thinkpad
- Indique au pilote qu'il n'y a pas de Thinkpad.
- floppy=drive,type,cmos
- Définit le type cmos du lecteur. En outre, ce lecteur est
disponible dans le bit de masquage. C'est utile si vous avez plus de deux
lecteurs de disquettes (seuls deux sont indiqués dans la
configuration cmos), ou si votre BIOS utilise un type de mémoire
cmos non standard. Indiquer CMOS à 0 pour les deux premiers disques
(défaut) fera lire la mémoire cmos par le pilote pour ces
deux disques.
- floppy=unexpected_interrupts
- Afficher un message d'avertissement si une interruption inattendue est
reçue (comportement par défaut).
- floppy=no_unexpected_interrupts
ou floppy=L40SX
- N'affiche pas de message d'avertissement si une interruption inattendue
est reçue. C'est nécessaire sur les ordinateurs portables
IBM L40SX dans certains modes vidéo. (Il semble y avoir une
interaction entre la vidéo et les disquettes. Les interruptions
inattendues n'affectent que les performances et peuvent être
ignorées en toute sécurité.)
Le pilote sonore 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 sonore.
- Pilote ISDN
ICN
- Syntaxe :
icn=iobase,membase,icn_id1,icn_id2
- où icn_id1,icn_id2 sont deux chaînes permettant d'identifier
la carte dans les messages du noyau.
- Pilote ISDN
PCBIT
- Syntaxe :
pcbit=membase1,irq1[,membase2,irq2]
- où membaseN est l'adresse de départ de la mémoire
partagée de la Nième carte, et irqN est la configuration
d'interruption de la Nième carte. Par défaut, IRQ vaut 5 et
membase 0xD0000.
- Pilote ISDN
Teles
- Syntaxe :
teles=iobase,irq,membase,protocol,teles_id
- où iobase est l'adresse du port d'entrée-sortie de la carte,
membase est l'adresse de départ de la mémoire
partagée, irq le canal d'interruption utilisé par la carte,
et teles_id un identificateur ASCII unique.
- Pilote série
multiport RISCom/8 (« riscom8= »)
- Syntaxe :
riscom=iobase1[,iobase2[,iobase3[,iobase4]]]
- Plus de précisions sont disponibles dans le fichier source du noyau
Documentation/riscom8.txt.
- Pilote DigiBoard
(« digi= »)
- Si cette option est utilisée, elle doit avoir exactement six
paramètres. Syntaxe :
digi=status,type,altpin,numports,iobase,membase
- Les paramètres peuvent être fournis sous forme d'entiers ou
de chaînes. Si des chaînes sont utilisées, iobase et
membase doivent être indiqués en hexadécimal. Les
paramètres entiers sont, dans l'ordre : status (Enable(1),
activer, ou Disable(0), désactiver, la carte), type (PC/Xi(0),
PC/Xe(1), PC/Xeve(2), PC/Xem(3)), altpin (Enable(1), activer, ou
Disable(0), désactiver, la seconde configuration des broches),
numports (nombre de ports sur la carte), iobase (port
d'entrée-sortie de la carte (en hexadécimal)), membase
(adresse de base de la fenêtre mémoire (en
hexadécimal)). Ainsi, les deux chaînes de paramètres
suivantes sont équivalentes :
digi=E,PC/Xi,D,16,200,D0000
digi=1,0,0,16,0x200,851968
- Plus de précisions sont disponibles dans le fichier source du noyau
Documentation/digiboard.txt.
- Pilote Baycom
Serial/Parallel Radio Modem
- Syntaxe :
baycom=iobase,irq,modem
- Il y a exactement 3 paramètres. Si vous avez plusieurs
cartes, utilisez plusieurs commandes
« baycom= ». Le paramètre modem est une
chaîne prenant l'une des valeurs suivantes : ser12, ser12*,
par96, par96*. Ici, « * » indique que la
gestion logicielle du DCD doit être activée, et ser12/par96
correspond au type de modem géré. Pour plus de
précisions, consultez Documentation/networking/baycom.txt
(ou drivers/net/README.baycom pour les noyaux plus anciens) dans
les sources du noyau Linux.
- Pilote Soundcard
radio modem
- Syntaxe :
soundmodem=iobase,irq,dma[,dma2[,serio[,pario]]],0,mode
- Tous les paramètres sont des entiers, sauf les deux derniers. La
valeur 0 est nécessaire pour éviter un bogue dans le
code de démarrage. Le paramètre
« mode » est une chaîne avec la syntaxe
hw:modem, où hw correspond à sbc, wss, ou wssfdx et
où modem correspond à afsk1200 ou fsk9600.
- '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, afin que d'autres pilotes (PLIP, PPA) les
utilisent.
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.
- PILOTE
WDT500/501
- Syntaxe :
wdt=io,irq
- 'bmouse=irq'
- Le pilote busmouse n'accepte qu'un seul paramètre, la valeur d'IRQ
matérielle à utiliser.
- 'msmouse=irq'
- La même chose est vraie pour le pilote msmouse.
- Configuration
de la souris ATARI
- Syntaxe :
atamouse=threshold[,y-threshold]
- Si un seul paramètre est fourni, il sera utilisé à la
fois pour les seuils x-threshold et y-threshold. Sinon, le premier
argument est x-threshold et le second y-threshold. Ces valeurs doivent
être dans l'intervalle 1 à 20 inclus. La valeur par
défaut est 2.
Périphériques vidéo
- 'no-scroll'
- Cette option demande au pilote de console de ne pas utiliser de
défilement matériel (quand le défilement est
géré en déplaçant l'adresse de l'écran
dans la mémoire vidéo sans déplacer les
données). C'est nécessaire pour certaines machines
braille.