URL: https://linuxfr.org/users/sygne/journaux/test-de-netbsd Title: Test de NetBSD Authors: Sygne Date: 2011年11月18日T22:53:39+01:00 License: CC By-SA Tags: netbsd, bsd et test Score: 42 Cher journal, Comme il en est de plus en plus souvent question ici, je regrette que nos logiciels aient de plus en plus tendance à souffrir d'embonpoint, et que l'architecture de nos systèmes ressemble de plus en plus à des oignons qui empilent couches sur couches. Je me suis donc mis en tête de rechercher un système d'exploitation propre, simple, épuré, diaphane. Comme j'ai par ailleurs une forte sympathie pour nos anciens outils Unix, je me suis dit que je pourrais trouver mon bonheur dans un descendant direct d'Unix. Quelques rapides recherches m'ont permis de comprendre que ces deux idéaux convergent vers [NetBSD](http://netbsd.org). # NetBSD NetBSD dérive de 386BSD, qui dérive quant à lui d'Unix TSS. C'est peut-être le plus ancien Unix libre encore maintenu aujourd'hui. Les développeurs de NetBSD prêtent une attention particulière à produire un logiciel au design propre et à l'architecture cohérente et bien pensée: « [Solutions, not hacks!](http://fr.wikipedia.org/wiki/NetBSD) ». NetBSD est aussi un système d'exploitation que l'on peut qualifier de conservateur car il ne recherche pas la dernière mode: « [Hype free!](http://netbsd.org/about/features.html)». Enfin, NetBSD est pensé pour être multi-plateforme, non pas à la façon de Linux, qui est multi-plateforme « [more by brute force than by design](http://www.embeddedarm.com/~joff/) », mais via des abstractions logicielles affutées (« [honed abstractions](http://www.embeddedarm.com/~joff/) »), de sorte que, pour chaque machine, nous pouvons dire « [Of course, it runs NetBSD!](http://netbsd.org/images/NetBSD-headerlogo.png) » En bref, c'est lumineux: - Solutions, not hacks! - Hype Free! - Of course, it runs NetBSD! # Installation J'ai donc téléchargé [l'iso d'installation](ftp://ftp.fr.NetBSD.org/pub/NetBSD), l'ai gravée, et ai redémarré. Premier constat: NetBSD me parle en vert, ce qui me donne bon espoir pour la suite. Il me propose une interface curses parfaitement francisée pour l'installation. Il trouve mon disque dur, me permet de choisir une installation personnalisée – je n'installe que les méta-paquets kernel, base, système (/etc), outils de développement (pour re-compiler le kernel), pages de manuels, outils de manipulation de textes (pour les manuels). Il me propose d'utiliser une partie du disque pour l'installation, je choisis donc ma partition vide. Je prends soin de ne pas installer de logiciel d'amorçage au boot, pour ne pas écraser grub, et je configure finement la façon dont NetBSD utilisera la partition que je lui ai alloué. Il la formatte alors avec le système de fichier [FFS](http://fr.wikipedia.org/wiki/Berkeley_Fast_File_System), puis procède à l'installation proprement dite. Avant de quitter, le logiciel d'installation me demande de configurer mon fuseau horaire, et me permet de choisir un mot de passe pour root, ainsi que le shell par défaut. Je peux redémarrer... # Manuel Première bonne surprise: le manuel: c'est un vrai manuel, c'est à dire, car on a tendance à l'oublier sur linux, un mode d'emploi. Par exemple, après le premier boot, je tape **man afterboot**, ce qui m'indique les premières choses à faire: vérifier que mon système est correctement installé, et créer le premier utilisateur: **useradd -m moi; usermodd -G wheel moi; passwd moi**. Ensuite, je me mets au défi d'installer le wifi. Pas besoin d'aller vadrouiller de forums en forums sur le net: **apropos wireless** me liste l'ensemble des pilotes wifi disponibles, ainsi que les cartes correspondantes – car les pilotes du noyau ont chacun leur page de manuel. Je reconnais ma carte, j'apprends que mon pilote se nomme iwi. **man iwi** m'apprends qu'il faut que j'indique au noyau que j'accepte la licence du firmware non libre du pilote iwi: **echo "hw.iwi.accept_eula=1">> /etc/sysctl.conf**. Via **man wpa_supplicant** j'obtiens un fichier de configuration pour wpa_supplicant. Enfin, il me faut un peu de temps pour étudier le manuel de rc.conf, et quelques autres pour savoir comment configurer /etc/rc.conf: ```bash hostname=Myhost nameserver=8.8.8.8 defaultroute=192.168.1.1 dhcpcd=YES dhcpcd_flags="-q -b" #quiet and background wpa_supplicant=YES wpa_supplicant_flags="-B -i iwi0 -c /etc/wpa_supplicant.conf" net_interface=iwi0 ifconfig_iwi0=dhcp ``` Je peux alors redémarrer le réseau, **/etc/rc.d/network restart**, et, deuxième bonne surprise, ça marche! # Système d'init Cette exploration de la gestion du réseau me permet de faire une troisième bonne surprise: le système d'init. Le système d'init des BSD est assez connu: un unique fichier de configuration (/etc/rc.conf), un répertoire contenant les scripts d'init (/etc/rc.d/), un script shell (/etc/rc), et un script contenant des fonctions utiles (/etc/rc.subr). C'est simple, propre et efficace. Tellement simple, que je me suis mis dans l'idée de le hacker pour avoir un peu de couleur au boot: en quelques minutes, le système d'init est compris modifié et testé: c'est beau! # Compiler le noyau Le système d'exploitation NetBSD est simple et propre, mais qu'en est-il du noyau du même nom? Pour me faire une idée de la chose, je décide de compiler un noyau sur mesure, épuré de tous les pilotes inutiles pour mon ordinateur, mais utilisant le framebuffer, et remplaçant ce vert forêt par un bleu royal plus seyant. La procédure est assez simple et est indiquée dans [le guide de NetBSD](http://www.NetBSD.org/docs/guide/en/): ```bash cd /usr/src/ ftp -i ftp://ftp.fr.NetBSD.org/pub/NetBSD/NetBSD-release-5-0/tar_files/src/ get sys.tar.gz get sys.tar.gz.MD5 get common.tar.gz get common.tar.gz.MD5 bye for file in sys common; do md5 $file.tar.gz cat $file.tar.gz.MD5 tar -xzf $file.tar.gz done cd /usr/src/src/sys/arch/i386/conf cp GENERIC MYKERNEL vi MYKERNEL config MYKERNEL cd ../compile/MYKERNEL make depend make su mv /netbsd /netbsd.old cp ./netbsd /netbsd ``` De toute évidence, le plus compliqué est l'édition du fichier de configuration. Mais là encore, NetBSD impressionne par sa simplicité: le fichier fait à peine plus de 1500 lignes, chaque option est accompagnée d'un commentaire explicite, la plupart des options sont définies dans la page de manuel **options**, les pilotes ont chacun leur page de manuel, et, enfin, **dmesg | grep PILOTE** permet de savoir simplement si le pilote est utilisée par notre ordinateur. La configuration prend donc un peu de temps et demande un peu de patience, mais n'est pas éprouvante. Mon noyau NetBSD passe ainsi de 11M à 4.2M. Notez que le système complet, avec les sources nécessaires à la compilation du noyau tient dans 576M. # Gestion des paquets Parlons maintenant du système de gestion des paquets logiciels. Il faut d'abord remarquer que le système de base n'est pas empaquetté. Cela signifie qu'il n'est pas possible de le mettre à jour via le système de paquet. La mise à jour du système de base se fait par écrasement de l'existant. C'est étonnant, mais pas inconcevable: la méthode est simple et rodée, on le fait soit après compilation, soit via le live-cd d'installation, soit, probablement, en désarchivant l'archive prévue pour l'occasion. Cela est d'autant plus concevable que la séparation entre le système de base et les paquets installés est définie dans la hiérarchie des répertoires. Les paquets s'installent et se configurent dans /usr/pkg. Finalement, cette façon de faire a le mérite de la simplicité. L'installation de paquets logiciels se fait en un tour de main: ```bash apropos pkg export PKG_PATH=ftp://ftp.fr.netbsd.org/pub/pkgsrc/packages/NetBSD/$(uname -m)/5.0/ALL pkg_install vim ``` # Déception Arrivé à ce point de l'exploration de NetBSD, il me semblait avoir toutes les raisons d'être enthousiaste: le système est bien documenté et d'usage limpide – il est propre, simple, épuré, diaphane, et répond donc parfaitement à mes attentes. Malheureusement, ce constat n'a pas duré. J'apprécie travailler en console, mais je trouve aussi que son ergonomie est nettement améliorée avec la coloration syntaxique et l'utf8. Or, configurer NetBSD pour cela n'est pas sans peines... Concernant la coloration syntaxique avec vim, je savais qu'il fallait chercher du côté de la variable TERM. Je me suis donc plongé dans les archives de la [liste de discussion](http://mail-index.NetBSD.org/), pour finalement trouver une obscure variable non documentée: **export TERM=wsvt25**. J'ai donc eu l'occasion de constater que les archives des listes de discussion de NetBSD étaient loin de fournir les fonctionnalités basiques que l'on attend d'elles, comme la possibilité de suivre le fil d'une discussion, ou de faire une recherche par liste, de sorte que, bien souvent, on tombe sur un mail qui pose la bonne question, mais nous n'avons pas accès à la réponse, qui elle, reste noyée sous un flot de patchs. Concernant l'internationnalisation, NetBSD est très décevant: il m'est impossible de taper le moindre accent. Pas même un bête « é ». J'ai tout essayé: changer la police de la console, changer la table du clavier, j'ai tiraillé la variable LANG ainsi que celles indiquées par **locale**, j'ai lu les pages de manuel de wscons, wscons.conf, wsconsctl, wsfontload, wskbd et d'autres, j'ai recompilé le noyau en jouant avec plusieurs options... Hélas, sans résultat. J'en viens à la conclusion suivante: pour NetBSD, l'utf8 c'est hype, et iso8859-1 aussi! J'ose espérer que c'est plutôt moi qui n'ai rien compris. # Conclusion Ainsi, cher journal, NetBSD est un système très prometteur, mais aussi très décevant... La beauté de son architecture et de sa conception disparait complètement lorsque l'on remarque qu'il est incapable de gérer simplement l'internationnalisation. Ainsi, les discussions qui parlent de l'utf8 dans la liste de discussion font assez peur: des hacks plutôt que des solutions, et des arguments pour dire qu'il n'est pas nécessaire d'avoir des solutions. La prochaine fois, cher Journal, je te parlerai de ma mésaventure similaire avec Plan9. Mais si ni NetBSD ni Plan9 ne sont propres, simples, épurés et diaphanes, qui le sera?

AltStyle によって変換されたページ (->オリジナル) /