J’ai enfin pu m’installer un BSD utilisable sur mon desktop ! Ça faisait longtemps que je le voulais, mais le problème venait de la carte wifi, sans drivers sous BSD (elle passait sous FreeBSD avec ndisgen, mais je préfère éviter ça). J’ai donc fait l’acquisition d’une nouvelle carte wifi censée être supportée par rum(4), et à part quelques problèmes, désormais résolus, ça fonctionne à merveille.
J’ai d’abord regardé du côté de NetBSD, qui fonctionnait plutôt bien excepté pour le wifi. J’obtenais par moment 50% voire 75% de paquets perdus lors d’un ping(8). Je me suis alors tourné vers DragonFly BSD, ceux qui ajouté le driver bwi(4) qui a ensuite été repris par OpenBSD (en 4.3), puis par FreeBSD (en 8.0) et il est toujours en -current chez NetBSD et devrait être inclut dans NetBSD 6.0.
USB
Après l’installation, l’USB n’était pas détecté par l’OS à cause du support Plug And Play du BIOS, il suffit donc le désactiver cette option ainsi que le support USB (sinon on se retrouve avec énormément d’interruptions, ce qui rends le système peu utilisable).
On peut se rendre compte de la non-détection des périphériques USB via usbdevs(8):
# avec le support PnP et USB activés dans le bios:
$ usbdevs -v
usbdevs: no USB controllers found
Par contre, en désactivant le support de l’USB dans le BIOS, on perd la possibilitée d’utiliser un clavier USB avec GRUB et avec le bootloader de DragonFly BSD.
Wifi
J’ai donc acheté une carte wifi USB pour pouvoir me passer de mes cartes Broadcom (BCM3418 sur le desktop et BCM4312 sur le netbook), même si la BCM4318 est supportée par bwi(4) (le driver fonctionne, mais est inutilisable, les vitesses de téléchargement sont de l’ordre du bit par seconde). La nouvelle carte est une TP-Link TL-WN321G, du chipset rum(4), et est détectée directement (à partir du moment où l’USB fonctionne). Un petit coup d’ifconfig(8) et de route(8), et hop, on est connecté. Le driver à l’air de fonctionner assez bien la plupart du temps, même si il lui arrive d’avoir un comportement bizarre (le débit tombe parfois aux alentours des 20kB/s, sans raison apparente)
Configuration
Je vais indiquer ici les étapes de la configuration qui ne sont pas mentionnées dans la documentation de DragonFly BSD. Lors d’une première installation, le handbook est très pratique mais il faut savoir chercher par soi même car il n’est pas totalement à jour (par exemple, depuis la version 2.4 DragonFly utilise un /dev dynamique, ce qui n’est mentionné nulle part dans le handbook où ils utilisent le vieux /dev/MAKEDEV pour créer les devices).
Bépo
Au niveau du bépo dans la console, le driver [pour FreeBSD] ne fonctionne pas. Je n’ai pas encore pris le temps de chercher plus loin de ce côté car dès que le réseau était fonctionnel, j’ai tout configuré via ssh depuis un autre ordinateur pourvu du bépo.
Pour ce qui est du driver dans X, il n’est pas à jour et il faut donc le mettre à jour soi-même (une fois X installé, bien sûr):
# cd /usr/pkg/share/X11/xkb/symbols
# mv fr fr.bak
# fetch -o fr http://www.clavier-dvorak.org/donnees/xkb/fr-bepo.1.0-rc1-hardy
On ajoute ensuite ceci dans /etc/X11/xorg.conf, à la section InputDevice du clavier:
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "fr"
Option "XkbVariant" "bepo"
La souris en tty
Ce n’est certainement pas la chose la plus utile, mais ça permet de voir si la souris fonctionne bien avant d’avoir installé X. On regarde d’abord sur quel device se trouve la souris (si elle est détectée):
$ grep Mouse /var/log/messages
Jan 31 17:46:51 newton kernel: ums0: <Logitech USB-PS/2 Optical Mouse, class 0/0, rev 2.00/20.00, addr 2> on uhub0
On ajoute ensuite ceci au rc.conf:
moused_enable="YES"
moused_port="/dev/ums0"
Et on peut démarrer moused:
rcstart moused
Mise en veille
Pour la mise en veille, il faut charger le module acpi.ko s’il n’est pas chargé par défaut:
# kldload acpi.ko
Ensuite, on utilise acpiconf(8) pour mettre l’ordinateur en veille, par exemple pour faire l’équivalent d’un s2ram:
# acpiconf -s 3
Hélas, le seul mode d’hibernation qui fonctionne sur mon ordinateur est le 1 (qui arrête juste l’horloge du CPU).
UTF–8
Pour avoir l’UTF–8, il suffit de rajouter ceci de modifier le /etc/login.conf pour que la fin de la section default: ressemble à ceci:
:ignoretime@:\
:umask=022:\
:charset=UTF-8:\
:lang=en_US.UTF-8:
Le changement sera donc fait pour tout le système et cela nous évite d’avoir à modifier nous-même les variables LC_* et LANG, ce qui peut varier selons les shells utilisés.
Désactiver le beep système
On peut désactiver ce beep à deux niveaux: dans le tty ou dans X:
# dans le tty
kbdcontrol -b off
# dans X
xset -b
La première commande est à placer dans /etc/profile et la seconde dans ~/.xinitrc si vous utilisez startx.
Moins de tty
Je n’ai jamais vraiment compris l’utilité d’avoir 7 ou 8 (TODO) ttys activés par défaut alors qu’un suffit. On va donc tous les désactiver sauf les deux premiers (au cas où on oublie de lancer tmux ou screen avant une commande qui met du temps à s’éxécuter). Pour cela, il suffit de commenter TODO dans le fichier /etc/tty.
Désactiver les messages du kernel (silent boot)
C’est très désagréables de se faire déranger par les messages du kernel quand on travaille en tty. Ça se désactive facilement en mettant l’option kern.consmute de sysctl(8) à 1. Cela peut se faire au niveau de /etc/sysctl.conf, qui est chargé après le chargement du kernel, donc vous verrez toujours les messages pendant le boot. Pour avoir un silent boot, c’est-à-dire un boot sans messages du kernel, il suffit simplement de changer cette option au niveau du fichier /boot/loader.conf.
La ligne à ajouter dans les deux cas est:
kern.consmute="1"
Carte son
Ma carte son étant une ATI IXP, il a suffit de charger le module snd_atiixp.ko et de l’ajouter au rc.conf:
# kldload snd_atiixp.ko
# echo 'snd_atiixp_load="YES"' >> /etc/rc.conf
Et pour tester le son, rien de tel qu’un petit
# cat /dev/urandom > /dev/audio
Logiciels utilisés
Pour finir, voici les principaux logiciels que j’utilise et le nom de leur pkgsrc:
| Utilité | Logiciel | Port |
|---|---|---|
| Window Manager | wmii | wm/wmii |
| Terminal | rxvt-unicode | x11/rxvt-unicode |
| Multiplexeur de terminaux | tmux | misc/tmux |
| Éditeur de texte | Vim, GNU Emacs1 | editors/vim, editors/emacs-snapshot |
| Navigateur | firefox2 | www/firefox |
| Lecteur audio | mpd et mpc | audio/musicpd et audio/mpc |
| Pager | most | misc/most |
| Shell | mksh | shells/mksh |
| Lecteur PDF | xpdf3 | print/xpdf |
| Visionneur d’images | xv | graphics/xv |
To be continued…
Il reste encore beaucoup de choses à regarder de plus près (monter de l’ext4 et du reiserfs, le bépo dans la console, …), dont certaines propres à DragonFly BSD (hammer, vkernel). Cela fera peut-être l’objet de futurs billets.
J’aimerais aussi me pencher sur la création de pkgsrc, notamment pour installer proprement mupdf et pouvoir me passer de xpdf.
Vim pour configurer et Emacs pour programmer. ↩
Avec le plugin vimperator. ↩
Regardez du côté de mupdf pour un autre lecteur intéressant (mais pas (encore) dans pkgsrc). ↩
