Skip to content

Entries tagged "dragonfly bsd".

Vole libellule, vole !

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éLogicielPort
Window Managerwmiiwm/wmii
Terminalrxvt-unicodex11/rxvt-unicode
Multiplexeur de terminauxtmuxmisc/tmux
Éditeur de texteVim, GNU Emacs1editors/vim, editors/emacs-snapshot
Navigateurfirefox2www/firefox
Lecteur audiompd et mpcaudio/musicpd et audio/mpc
Pagermostmisc/most
Shellmkshshells/mksh
Lecteur PDFxpdf3print/xpdf
Visionneur d’imagesxvgraphics/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.


  1. Vim pour configurer et Emacs pour programmer.

  2. Avec le plugin vimperator.

  3. Regardez du côté de mupdf pour un autre lecteur intéressant (mais pas (encore) dans pkgsrc).

Bépo et DragonFly BSD

La disposition de clavier bépo est disponible pour FreeBSD, mais elle n'est pas compatible avec DragonFly BSD, bien que cette dernière soit dérivée de FreeBSD. C'est en fait dû à kbdcontrol(1) qui n'est pas compatible à 100% entre FreeBSD et DragonFly. Les développeurs de FreeBSD ont continués à ajouter des nouvelles fonctionnalitées après le fork de DragonFly, qui n'ont pas été reprises chez DragonFly.

Néanmoins il reste possible de « convertir » le pilote bépo de FreeBSD dans quelque chose de compatible avec le kbdcontrol de DragonFly BSD. La seule incompatibilitée utilisée dans le driver bépo est l'utilisation de l'action paste, qui a été ajoutée dans FreeBSD 5.0. Un petit coup de sed pour réparer ça, et on peut installer et charger le driver:

wget http://download.tuxfamily.org/dvorak/devel/fr-dvorak-bepo-kbdmap-1.0rc2.tgz
tar xzvf fr-dvorak-bepo-kbdmap-1.0rc2.tgz
cd fr-dvorak-bepo-bkdmap-1.0rc2
sed -i -e 's/paste/nop/g' fr-dvorak-bepo.kbd
cp fr-dvorak-bepo.kbd /usr/share/syscons/keymaps/

On peut maintenant switcher au bépo:

kbdcontrol -l fr-dvorak-bepo.kbd

On modifie ensuite /etc/rc.conf pour avoir le bépo au démarrage:

keymap="fr-dvorak-bepo"

Par contre, même remarque que sur le wiki bépo, la console de FreeBSD ne supporte pas l'UTF-8, c'est donc aussi le cas de DragonFly BSD.