Tôt ou tard, les utilisateurs de NetBSD voudront compiler un noyau à leur mesure. Cela apporte plusieurs avantages:
vous pouvez largement réduire la taille du noyau et donc, sa place en mémoire. Avec la version 1.5 de NetBSD, un noyau personnalisé peut faire passer la taille de 4,7 à 1,9 Mo.
vous pouvez améliorer les performances.
vous pouvez règler le système.
vous pouvez résoudre des problèmes de détections ou de conflits de périfériques.
vous pouvez personnaliser certaines options (par exemple le clavier, le décalage avec l'horloge BIOS...
vous pouvez acquérir une meilleure connaissance du système.
Vous pouvez obtenir les sources du noyau à partir du même endroit où vous avez trouvé le système (par exemple ftp://ftp.netbsd.org.) Prenez soin de télécharger la même version des sources que celle du système installé. |
Sysinst, le programme d'installation, ne copie pas les sources sur le disque dur, celles-ci doivent être extraites à la main. L'archive se trouve dans le répertoire source/sets et s'appelle syssrc.tgz.
# gzip -dc syssrc.tgz | (cd / ; tar xvf -)
Soyez patient. Cette opération dure plusieurs minutes car l'archive contient des centaines de fichiers. Ceux-ci sont extraits dans le répertoire /usr/src/syset le lien symbolique sys pointe dessus. Les deux commandes suivantes ont donc le même effet:
# cd /usr/src/sys # cd /sys
Une fois extraites les sources du noyau, vous pouvez gagner de l'espace disque en effaçant les répertoires des architectures qui ne vous concernent pas. Allez dans le répertoire /sys/arch puis effacez les répertoires dont vous n'avez pas besoin. Pour le portage i386, par exemple, ne conservez que le répertoire i386. Pour les autres architectures, il peut être nécessaire de conserver plusieurs répertoires source.
Lorsque les sources sont installées, vous pouvez créer votre noyau personnalisé: ce n'est pas aussi difficile que vous le pensez. En fait, un nouveau noyau peut être établi en quatre étapes décrites dans les sections suivantes.
Avant de compiler le noyau, les utilisateurs italiens peuvent vouloir modifier la correspondance des touches pour l'adapter à leur clavier. Celle-ci est définie dans le fichier /sys/dev/pckbc/wskbdmap_mfii.c. Dans la configuration par défaut, quelques caractères utiles sont absents (comme les accolades ou le tilde). Voici une autre configuration:
static const keysym_t pckbd_keydesc_it[] = { ... KC(8), KS_7, KS_slash, KS_braceleft, KC(9), KS_8, KS_parenleft, KS_bracketleft, KC(10), KS_9, KS_parenright, KS_bracketright, KC(11), KS_0, KS_equal, KS_braceright, KC(12), KS_apostrophe, KS_question, KS_grave, KC(13), KS_igrave, KS_asciicircum, KS_asciitilde, KC(26), KS_egrave, KS_eacute, KS_bracketleft, KS_braceleft, KC(27), KS_plus, KS_asterisk, KS_bracketright,KS_braceright, ...
La définition ci-dessus définit la correspondance suivante:
Touches | Caractères |
---|---|
Alt Gr + 7 | { |
Alt Gr + 8 | [ |
Alt Gr + 9 | ] |
Alt Gr + 0 | } |
Alt Gr + ' | ` |
Alt Gr + ì | ~ |
Alt Gr + é | [ |
Alt Gr + + | ] |
Shift + Alt Gr + è | { |
Shift + Alt Gr + + | } |
Pilote de console : à partir de la version 1.4, NetBSD utilise le pilote multiplateforme wscons pour gérer l'écran, le clavier et la souris. Les précédentes versions utilisent pccons ou pcvt. Pour plus de détails, reportez-vous au Chapitre 12.
Pour recompiler le noyau, vous devez avoir installé les compilateurs (comp.tgz).
Etapes de base pour compiler le noyau
Créer ou modifier le fichier de configuration
Configurer le noyau
Générer les dépendnces
Construire ("Make") le noyau
Installer le noyau
Note : Les répertoires de cette section sont spécifiques de i386. Les utilisateurs des autres architectures devront substituer les répertoires appropriés (généralement les sous-dossiers de arch).
Le fichier de configuration du noyau définit le type, le nombre et les caractéristiques des périfériques supportés ainsi que divers autres options. Ces fichiers se trouvent dans le répertoire /sys/arch/i386/conf. Le plus simple est de dupliquer un fichier existant et de le modifier. La plupart du temps, le meilleur choix sur la plupart des plateformes est la configuration GENERIC. Dans ce fichier, des commentaires décrivent les options. Une description plus complète se trouve dans la page de manuel options(4).
# cd /sys/arch/i386/conf/ # cp GENERIC MON-NOYAU # vi MON-NOYAU
Noms de noyaux : historiquement, ceux-ci s'écrivent tout en majuscule.
La modification d'un fichier de configuration du noyau se divise en trois opérations basiques:
gestion de périfériques ajoutée ou retirée du noyau (par exemple, le SCSI peut être enlevé s'il n'est pas utile).
activation ou désactivation de services (par exemple, activer la gestion du client NFS, la compatibilité Linux...)
règlage des paramètres du noyau.
Les lignes commençant par un "#" sont des commentaires. Les lignes sont activées en enlevant le "#" ou désactivée en l'ajoutant. De cette manière, il est toujours possible de revenir sur une modification.
Les indications données par la commande dmesg peuvent être utilisées pour savoir quelles lignes peuvent être désactivées. Pour tout ligne de type:
<XXX> at <YYY>
à la fois XXX et YYY doivent être actifs dans le fichier de configuration. Vous devrez sans doutes expérimenter un peu avant de trouver la configuration minimale mais sur les machines démunies de SCSI et de PCMCIA, vous pouvez diviser la taille du noyau par deux.
Vous pouvez aussi examiner les options du fichier et désactiver celles dont vous n'avez pas besoin. Chacune est accompagnée d'une brève description qui est souvent suffisante pour comprendre de quoi il s'agit. Un grand nombre d'entre elles possède une description plus détaillée dans la page de manuel options(4). Une fois terminé, vous devez paramètrer correctement la gestion du clavier national ainsi que l'heure locale de l'horloge CMOS. Par exemple, pour l'Italie:
options RTC_OFFSET=-60 ... options PCKBD_LAYOUT="KB_IT"
Le script perl adjustkernel, qui se trouve sur http://www.feyrer.de/Misc/adjustkernel, analyse les indications de la commande dmesg et genère automatiquement un fichier de configuration minimum. L'installation de nouveaux logiciels est décrite au Chapitre 8. Si vous voulez installer Perl dès maintenant, téléchargez le paquetage pré-compilé perl-5.00404.tgz et tapez la commande suivante:
# pkg_add perl-5.00404.tgz
Perl est désormais installé, configuré et prêt à fonctionner. Pas moyen de faire plus simple...
Lancez le script avec:
# cd /sys/arch/i386/conf # perl adjustkernel GENERIC > MYKERNEL
J'ai essayé ce script, il marche très bien, m'évitant une longue édition à la main. Attention, le script ne configure que les périfériques présents. Vous devez configurer le reste des options à la main (comme l'émulation Linux...)
Lorsque vous avez fini de modifier le fichier de configuration (que nous avons appelé MON-NOYAU), tapez la commande suivante:
# config MON-NOYAU
Si MON-NOYAU ne contient pas d'erreurs, le programme config crée les fichiers nécessaires à la compilation sinon, il vous faudra les corriger avant de relancer le programme.
Cela se fait en tapant les commandes suivantes:
# cd ../compile/MON-NOYAU # make depend # make
Il peut arriver que la compilation s'arrête suite à des erreurs. Celles-ci peuvent avoir plusieurs origines mais les plus courantes proviennent du fichier de configuration et que config n'a pas détecté. Parfois le problème vient du matériel (barette mémoire défectueuse): la compilation sollicite le système beacoup plus que le font les applications. Une autre erreur typique provient du fait qu'une option B est active et a besoin d'une option A qui est inactive.
Une compilation complète peut prendre de quelques minutes à plusieurs heures suivant le matériel. Voici quelques exemples:
La commande "make" établie le fichier netbsd du répertoire de compilation: celui-ci doit être copié dans le répertoire racine après avoir sauvegardé la précédente version:
# mv /netbsd /netbsd.old # mv netbsd /
La personnalisation peut considérablement réduire la taille du noyau. Dans l'exemple suivant, netbsd.old est le noyau installé et netbsd le nouveau noyau.
-rwxr-xr-x 1 root wheel 1342567 Nov 13 16:47 /netbsd -rwxr-xr-x 1 root wheel 3111739 Sep 27 01:20 /netbsd.old
Le nouveau noyau est mis en service après avoir redémarré:
# reboot
Lorsque l'ordinateur est redémarré, il peut arriver que le nouveau noyau ne se comporte pas de la façon voulue ou bien qu'il ne démarre pas du tout. Pas de panique, si cela arrive, redémarrez avec l'ancien noyau sauvegardé et enlevez le nouveau (il vaut mieux redémarrer en "mono-utilisateur").
Redémarrez la machine
Appuyez sur la barre d'espace pendant le compte à rebours de 5 secondes.
boot:
Tapez
> boot netbsd.old -s
Tapez enfin les commandes suivantes afin de restaurer la précédente version du noyau:
fsck / mount / mv netbsd.old netbsd exit