|
Documentation NetBSD :Le noyau |
/pub/NetBSD/NetBSD-1.5.2/source/sets/syssrc.tgzSi vous avez un cédérom NetBSD, ce fichier se trouve dedans. Vous pouvez extraire les sources où vous voulez mais elles se placent traditionnellement dans /usr/src. Tapez : «cd / ; tar xvzpf <FICHIER>».
Replacez votre ancien noyau :
Le terme GENERIC fait référence à un noyau configuré pour tourner sur toutes les machines de l'architecture. Autrefois, ce terme était employé dans le fichier de configuration pour indiquer que le périphérique racine était «générique» de même qu'une option de configuration. Cette option et cette forme de ligne ne sont plus utilisées mais gageons que le nom restera encore longtemps.
Comme ces noyaux gèrent comprennent tous les pilotes de tous les périphériques gérés et que vous ne les utilisez certainement pas tous, nous vous encourageons à compiler votre propre noyau.
options NMBCLUSTERS=1024à votre configuration noyau, soit corriger le binaire :
# gdb --write /netbsdNotez que si vous intervenez sur le binaire uniquement, vous devrez redémarrer pour que les modifications soient prises en compte. Si votre plate-forme le supporte, vous pouvez fixer la valeur avec :
(gdb) set nmbclusters=1024
(gdb) quit
# sysctl -w kern.mbuf.nmbclusters=1024Cette intervention sera cependant perdue après le prochain redémarrage. Si vous combinez cette manipulation avec la correction du binaire, vous n'aurez pas besoin de compiler un nouveau noyau ni de redémarrer.
La valeur par défaut de NMBCLUSTERS est 256. Si vous rencontrez ce problème, essayez par exemple 1024. Les serveur très sollicités peuvent nécessiter encore plus. Pour afficher la valeur actuelle de NMBCLUSTERS :
# echo 'print nmbclusters' | gdb -q /netbsdVoir aussi options(4) pour plus de détails sur la configuration du noyau.
Il peut y avoir deux raisons pour cela :
Il existe une méthode pour reconnaitre les «default IR7» mais elle ne fonctionne pas toujours sur les systèmes les plus anciens. Il est généralement préférable de corriger les pilotes afin qu'ils ne génèrent pas l'erreur. Dans certains cas, il est difficile de les éviter lors d'utilisation d'un type d'interruptions.
Vous ne pouvez avoir ce message que si votre noyau est compilé avec l'option DEBUG.
Si vous obtenez ce message, vous vous retrouverez dans ddb(4), le débuggeur du noyau. Les valeurs de la pile, obtenues avec «t», devraient vous montrer l'appel incriminé. Il sera alors certainement un bonne idée d'envoyer à send-pr(1) le résultat de cette commande ainsi que toute autre information pertinente car en aucun cas vous n'auriez dû avoir ce message.
Voir aussi spl(9) pour plus d'informations sur les fonctions spl.
Lorsqu'un processus lance un appel au système, le noyau doit sauvegarder l'état du processeur afin de pouvoir ensuite revenir au processus. Les registres de virgules flottantes ont tendance à être assez gros et relativement pleins, ce qui rend l'opération très coûteuse. Si le coprocesseur (FPU) est au milieu d'un calcul, le processeur (CPU) devra, en plus, s'asseoir en attendant qu'il ait fini pour pouvoir copier le registre.
Éviter les registres de virgules flottantes dans le noyau accroît donc les performances des appels système. Certains processeurs, comme le sparc, peuvent aussi exploiter les périodes de sous charge, évitant la sauvegarde et restauration des registres, même en basculant d'un processus à l'autre.
Sur certaines architectures, le compilateur peut utiliser les registres du coprocesseur pour accélérer certaines opération (comme les copies de blocs mémoire), déroutant la méthode ci-dessus. D'où l'utilisation de «-msoft-float».
Lorsque vous compilez votre propre noyau, vous pouvez utiliser «make COPTS=-O» qui demande au compilateur de ne faire que les optimisations les plus efficaces. Vous aurez alors un noyau parfois plus lent mais plus rapide à compiler.
Si vous partez pour plusieurs «compilations et redémarrage sur le nouveau noyau» sur votre machine à faible mémoire vive, faites les premières passes avec «make COPTS=-O» puis passez à «make» pour la passe finale.
Bien entendu, la manière la plus rapide de compiler un noyau pour une machine munie de peu de mémoire vive est de lui en rajouter temporairemnent ou de faire cette compilation sur un autre ordinateur !
Il vaut toujours la peine de télécharger le dernier config.tar.gz, le compiler, l'installer et de refaire vos fichiers de configuration suffisamment souvent entre deux versions.
Par défaut sous NetBSD, les périphériques SCSI sont numérotés à partir de 0, dans leur ordre SCSI. En d'autres mots, le plus petit nombre est /dev/sd0, suivi de /dev/sd1, etc. Notez qu'il s'agit de l'assignation effectuée au démarrage.
Si vous compilez votre propre noyau, vous pouvez paramètrer vos périphériques SCSI de manière à ce qu'ils pointent les numéros que vous voulez. Par exemple :
Ce paramètrage fait correspondre sd0 au disque SCSI numéro 4 et traite le reste des périphériques comme décrit ci-dessus. Cela s'appelle «écrire en dur». Cette opération est recommandée si vous utilisez RAID ou ccd pour éviter que les identifiants ne soient changés si un disque est éteint ou en panne.sd0 at scsibus0 target 4 lun 0 sd* at scsibus? target ? lun ?
Si ce message est issu de l'auto-configuration au démarrage, cela veut dire que le noyau découvre du matériel dont il ne possède aucun pilote. Soit ce dernier existe mais n'a pas été compilé dans ce noyau, soit il n'existe pas du tout (dans ce cas, contactez un développeur compréhensif et proposez-lui de tester le matériel en échange de l'écriture du pilote).
Comme les noyaux GENERIC sont utilisés pour des installations de base, il est important qu'ils soient stables et reconnus comme fonctionnant. Ainsi, un pilote qui n'est pas encore stable ne sera pas inclus par défaut dans le noyau. Si vous examinez le fichier de configuration sur votre système, vous découvrirez peut-être un pilote expérimental qui a été «commenté». Si vous décidez de compiler votre propre noyau (veuillez ne pas l'appeler GENERIC), vous pouvez alors l'inclure pour l'essayer.
Si ce message apparait lorsque vous tentez d'accéder à un noeud dans /dev (par exemple un disque SCSI), cela veut dire que le pilote n'a pas trouvé le périphérique correspondant, par exemple le disque SCSI n'est pas là.
Cela arrive souvent lorsque les noeuds de /etc/fstab ne correspondant pas à ce que le noyau a trouvé pendant l'auto-configuration, au démarrage, et que la commande «mount», dans /etc/rc, tente de monter tous les systèmes de fichiers. Vérifiez que les périphériques que vous voulez utiliser sont trouvé par le noyau au démarrage, en consultant le fichier /var/run/dmesg.boot (une sauvegarde des messages de l'auto-configuration).
wdcdebug_atapi_mask et wdcdebug_mask. En plaçant les bits appropriés de ces variables, le noyau affichera des informations sur les opérations ATAPI et ATA.Pour le maximum de messages, utilisez :
# gdb --write /netbsd (gdb) set wdcdebug_atapi_mask=0xff (gdb) set wdcdebug_mask=0xff (gdb) quitNote : vous obtiendrez une extrèmement grande quantité de messages. Pour choisir des options particulières, voyez la liste ci-dessous :
isapnp0: <U.S. Robotics 56K FAX INT, USR3031, , > port 0x3e8/8 irq 5 not configured
devlogic com USR3031 USR 56k Faxmodem
pcmcia0: CIS version PCMCIA 2.0 or 2.1 pcmcia0: CIS info: Grey Cell, GCS2000, Gold II, 1 pcmcia0: Manufacturer code 0x143, product 0x201 pcmcia0: function 0: network adapter, ccr addr 3f8 mask 1
La différence la plus importante est qu'il y a plus de mémoire disponible pour garder des vrais fichiers. Les entrées-sorties seront donc plus rapides puisqu'il y aura plus de chances que vos données y soient. La rapidité dépends de ce que vous faites mais vous noterez certainement la différence.
|
|