Convention de ce document;
# == root shell
$ == user shell
Il va sans dire, que vous avez votre /usr/src a jour. Repportez vous aux differents tips existant.
Attaquons nous deja a la configuration du noyau. Deux fichiers generique (dont un specifique a l'architecture) se trouvemt respectivement dans /usr/src/sys/conf/GENERIQUE & /usr/src/sys/arch/$ARCH/conf/GENERIQUE
Creer un repertoire qui nous servira pour la compilation.
$ mkdir compile_dir
cd dans ce repertoite. Modifier les deux fichiers afin que ces derniers correspondent a vos besoins. Il est a noter qu'il est possible de modifier le nombre de pseudo-device a la volee par un config(8). Vous trouverez toute la documentation correspondantes aux variables de configuration dans les FAQ.
Sauvegardez vos modifications, puis lancez la configuration et la compilation du nouveau kernel par un:
$ config -s /usr/src/sys -b . VOTRE_FICHIER_DE_CONF && make clean && make depend && make
Sauvegarde votre ancien noyau par un
# mv /bsd /bsd.old
et installer le nouveau:
# cp compile_dir/bsd /bsd && chown root:wheel /bsd
Pour attribuer les bons droits.
En enlevant tout ce qui etait supperflux a ma gateway, je suis passe d'un kernel de 4.7Mo a une version allegee de 1.7Mo ;)
Passons maintenant a la recompilation du userland.
# rm -rf /usr/obj && mkdir /usr/obj
Pour enlever tous les anciens fichier objet 0:-)
# cd /usr/obj ; make obj
Pour les compiler a partir des sources mise a jour …
# make build
compilera le nouvel userland.
Le probleme maintenant, c'est que les fichiers de configuration residant dans /etc ne sont pas mis a jour automatiquement, il va donc falloir les “merger” a la main. Il en va de meme pour /dev (openbsd n'utilisant pas devfs)
# cd /dev && cp /usr/src/etc/etc.i386/MAKEDEV . # ./MAKEDEV all
Pour les fichiers de configuration, c'est plus long et fastidieux puisqu'il faut comparer a coup de diff les fichiers residant dans /etc et les nouveaux que vous trouverez dans /usr/src/etc. Pour ce faire creer un repertoire temporaire ou les nouveaux fichiers seront installes.
$ mkdir tmp_etc && export DESTDIR=/home/$USER/tmp_etc
Devenez root, par exemple avec un 'sudo -s'
# cd /usr/src/etc & make distribution-etc-root-var
puis comparez les.
Enfin, le moment venu, on reboot en croisant les doigts ;D et on admire le resultat, voila vous avez merite un bol de cafe ;)
/Olivier (aka daffy)