Ce cours est visible gratuitement en ligne.

J'ai tout compris !
A la découverte d'UNIX (FreeBSD)

A la découverte d'UNIX (FreeBSD)

Mis à jour le mardi 8 janvier 2013
  • 4 semaines
  • Moyen

Bon, il n'y a pas non plus que le travail dans la vie. Si on mettait un peu de musique ? :D

A - Le son

Vous commencez maintenant à bien connaître /boot/loader.conf. Les modules supplémentaires qu'il charge dans le noyau au démarrage aident FreeBSD à détecter vos périphériques. Pour savoir quels autres modules il peut charger, et donc quels pilotes de périphériques vous pouvez prendre en main, consultez un autre fichier : /boot/defaults/loader.conf.

% less /boot/defaults/loader.conf

Vous voyez que /boot/defaults/loader.conf ne veut rien charger du tout. Mais les instructions que vous saisirez dans /boot/loader.conf seront prioritaires sur celles-ci. Voici quelques lignes susceptibles de vous intéresser. Vous en trouverez peut-être d'autres :

  • sound_load : pour le son digital

  • snd_driver_load : charge tous les pilotes de cartes son.

  • snd_uaudio_load : pour les haut-parleurs USB

  • speaker_load : le petit bip de l'ordinateur (pas forcément indispensable).

Allons donc écrire ça (en root, bien sûr) dans le fichier /boot/loader.conf :

# emacs /boot/loader.conf

A vous d'écrire. Par exemple :

#Image d'accueil
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/monimage.bmp"
vesa_load="YES"

#Imprimante
usb_load="YES"
ulpt_load="YES"

#Son
sound_load="YES"
snd_driver_load="YES"
snd_uaudio_load="YES"
speaker_load="YES"

Sauvegardez et quittez emacs. Voici la méthode la plus rapide pour ça : placez votre annulaire gauche sur la touche Ctrl de gauche et appuyez successivement avec votre index gauche sur les touches X, S, X et C.

Lors du prochain démarrage, vous verrez passer de nouveaux messages, indiquant que ces modules supplémentaires sont chargés. Mais si vous ne voulez pas attendre jusque là, vous pouvez les charger immédiatement avec la commande kldload. Suivez le guide ;) :

cd /boot/kernel && ls

Voici /boot/kernel, un dossier particulièrement important puisque c'est celui du noyau de FreeBSD. Vous voyez tous ces fichiers en .ko ? Ce sont les modules disponibles. Faites votre marché et demandez à kldload de charger ceux qui vous intéressent. Vous indiquerez pour cela le nom de chaque module (sans son extension).

# kldload sound
# kldload snd_driver
# kldload snd_uaudio
# kldload speaker

Et tapez finalement kldstat pour vérifier la liste des modules chargés.

Pour tester immédiatement le son, allez à la racine et tapez :

% cat COPYRIGHT > /dev/dsp

o_O Je croyais que cat servait à lire un fichier texte. Quel rapport avec le son ?

cat sert bien à afficher le texte d'un fichier. Et vous reconnaissez certainement le symbole >, qui redirige ce texte vers le fichier /dev/dsp. Si /dev/dsp était un fichier ordinaire, le contenu de COPYRIGHT y serait recopié (en effaçant celui de dsp). Mais vous avez bien compris, maintenant, que les fichiers du dossier /dev/ sont en réalité des périphériques.

Le texte de COPYRIGHT est donc envoyé vers votre haut-parleur, où il provoque un grésillement. Si vous ne l'avez pas entendu, réessayez en augmentant le volume de votre haut-parleur (commande mixer 100:100 et tournez la molette de votre haut-parleur à fond).

Là, selon votre configuration matérielle, il y a deux cas possibles : soit vous entendez le grésillement, soit vous n'entendez toujours rien. Dans le second cas, essayez :

% cat /dev/sndstat

Vous verrez logiquement quelque chose comme ça :

FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <HDA ATI R6xx HDMI PCM #0 HDMI> (play) default
pcm1: <HDA IDT 92HD75BX PCM #0 Analog> (play/rec)
pcm2: <HDA IDT 92HD75BX PCM #1 Analog> (play/rec)
pcm3: <HDA IDT 92HD75BX PCM #2 Digital> (play)

FreeBSD a donc détecté quatre sorties audios sur votre machine. pcm0 est sélectionnée par défaut mais, puisque vous n'entendez rien, ce n'est visiblement pas la bonne. Pour en essayer une autre :

[Nom de l'ordinateur]# sysctl hw.snd.default_unit=1 && cat COPYRIGHT > /dev/dsp

Si vous n'entendez toujours rien, essayez de remplacer le 1 par un 2 (pour sélectionner pcm2) puis par un 3. Et une fois que vous avez trouvé la bonne valeur, indiquez-la dans le fichier /etc/sysctl.conf en ajoutant la ligne :

hw.snd.default_unit=1

(ou 2, ou 3)

D'accord, ça marche, mais on n'a pas de la vraie musique, plutôt ? >_

On va s'en occuper. Mais nous avons d'abord un autre problème à régler. En demandant le chargement du module snd_driver, vous n'avez pas fait qu'activer le support pour votre pilote de carte son. Vous avez activé le support pour tous les pilotes de toutes les cartes sons que FreeBSD connaît. Et un seul nous sert réellement. C'est du gaspillage ! :colere2:

Vous devez donc identifier quel pilote vous utilisez vraiment. Pour ça, votre allié est à nouveau le fichier /dev/sndstat. Relisez-le. Dans l'exemple ci-dessus, le pilote est HDA. Le module snd_hda remplacera donc avantageusement snd_driver.

Autre exemple :

%cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <ATI IXP 400> (play/rec) default

Cette fois, le module à utiliser est snd_atiixp.

Si vous hésitez, consultez à nouveau la liste des modules disponibles dans /boot/defaults/loader.conf :

% cat /boot/defaults/loader.conf | grep snd_

Ou, plus simplement :

%grep snd_ /boot/defaults/loader.conf

Vous pouvez maintenant retourner voir /boot/loader.conf et remplacer snd_driver_load par snd_atiixp_load ou snd_hda_load ou autre chose. C'est quand même plus propre comme ça. :)

Passons maintenant à la musique. Avec Firefox, vous trouverez facilement un morceau MP3 gratuit à télécharger depuis le web. :D Vous pouvez aussi, tout simplement, glisser un CD audio dans votre lecteur de CD-ROM.

Pour écouter ces morceaux, installez un logiciel de lecture audio : XMMS, MPlayer, Amarok, etc.

Image utilisateur

B - Vidéo et Flash

Maintenant que vous avez du son, que diriez-vous d'une bonne petite vidéo ?

Il vous faut au moins un lecteur vidéo. Ce n'est pas ça qui manque dans le catalogue des ports FreeBSD : MPlayer, VLC, Totem, etc. Faites votre choix.

Mais il y a le problème du format. Les vidéos qu'on trouve sur internet sont presque toujours au format "Flash", un format propriétaire appartenant à l'entreprise Adobe. Même si des tentatives de lecteurs flash libres existent (gnash, par exemple), ils ne permettent généralement pas de lire la majorité de ces vidéos et chaque internaute dépend pour cela des outils et plugins fournis par Adobe. Or, Adobe n'a pas développé de version FreeBSD pour ses plugins :colere2: , malgré cette pétition.

Image utilisateur

En attendant une version FreeBSD d'Adobe Flash Player, il faut donc ruser ;) et se servir de la version Linux. Commencez par activer la compatibilité avec Linux en lançant la commande kldload linux et en ajoutant à /etc/rc.conf la ligne linux_enable="YES".

Ensuite, téléchargez la couche de compatibilité avec Fedora : linux_base-f10.

Vous pouvez maintenant installer la version Linux de Flash Player. Elle n'est disponible que par les ports :

[Nom de l'ordinateur]# cd /usr/ports/www/linux-f10-flashplugin10 && make install clean

Le code-source de Flash Player n'est bien sûr pas public (c'est un logiciel propriétaire). La compilation consiste donc cette fois à assembler des fichiers objets binaires fournis par Adobe avec d'autres fichiers objets conçus pour permettre son intégration dans FreeBSD.

Le résultat de tout ceci est un fichier libflashplayer.so, qui s'installe sans vous demander votre avis dans le dossier /usr/local/lib/npapi/linux-f10-flashplugin/. Mais comment voulez-vous que Firefox aille le trouver là-bas ? :( Lui, ses plugins, c'est dans /usr/local/lib/browser_plugins/ qu'il les met. Créez ce dossier avec mkdir s'il n'existe pas encore puis établissez un lien symbolique :

[Nom de l'ordinateur]# ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so  /usr/local/lib/browser_plugins/

Bien. Notre plugin est arrivé à destination. Maintenant, pour bien l'installer dans Firefox (ça marche aussi pour rekonq et sans doute pour d'autres navigateurs), il nous faut un programme "enveloppeur" (wrapper).

[Nom de l'ordinateur]# pkg_add -r nspluginwrapper

ou

[Nom de l'ordinateur]# cd /usr/ports/www/nspluginwrapper/ && make install clean

Une fois que ce programme est installé, chaque utilisateur peut l'activer...

% nspluginwrapper -v -a -i

...vérifier que son navigateur l'a bien détecté...

Image utilisateur

...et regarder ensuite toutes les vidéos flash qu'il veut. :D

Découvrez aussi ce cours en...

Exemple de certificat de réussite
Exemple de certificat de réussite