Configurer un lecteur multimédia dédié

Auteur : Olivier BOYER - oboyer () ajoute ! org

Mots clés

FreeBSD, clé usb, lecture seule, multimédia player

Introduction

Ce document présente comment configurer un client FreeBSD 6.3 Release en lecteur multimédia (Audio, DVD, Divx, Photos) dédié. Pour une plus grande facilité d'utilisation, ce lecteur est installé sur une clé USB montée en lecture seule.

Présentation de la maquette

  • Un ordinateur compatible PC, architecture i386, dotée d'un port USB (version 2 recommandée).
  • Une clé USB (au moins 1Go).

Note

Toutes les commandes présentées ici, sont à exécuter, sauf mention contraire, en tant qu'administrateur de la machine.

Pré-requis

Installer et configurer le système

L'installation et la configuration du système FreeBSD sur la clé USB avec une racine en lecture seule est décrite dans ce document.

Transformer le système en lecteur multimédia

Toutes les commandes présentées dans cette section doivent s'exécuter sur un système dont :

  • la racine / est en écriture,
  • la partition /var n'est plus montée en mémoire.

Suivez les instructions décrites dans le chapitre Ajouter un package du document Installer FreeBSD sur une clé usb avec une racine en lecture seule.

Créer un utilisateur dédié

Dans cette maquette, le système va servir de “media center”. Pour créer un utilisateur dédié (ici player:users) au fonctionnement des applications multimédia, exécutez les commandes suivantes :

  • Créer le groupe users :
# pw groupadd users -g 10
  • Créer l'utilisateur player :
# pw useradd player -m -u 1000 -g 10 -c "Player User" -d /home/player -s /bin/bash

Puis saisissez un mot de passe pour cet utilisateur :

# passwd player

Installer les packages

La liste suivante de packages permet de répondre à un certains nombre de besoins. Sans doute votre environnement différera…

# for i pkg in \
        bzip2 \
        unzip \
        bash \
        sudo \
        urwfonts-ttf \ 
        xscreensaver \ 
        blackbox \ 
        bbkeys \ 
        rox-filer \ 
        rhythmbox \
        gstreamer-plugins-musepack \
        xine \
        gqview \
        firefox \
        leafpad \
        eject \
        gnomebaker \
        imwheel \
        xbindkeys \
        pciutils \
        xmms \
        xmms-flac \
        xmms-wma
do
        pkg_add -r $pkg
done

Puis, créez le lien symbolique suivant :

# cd /bin
# ln -s ../usr/local/bin/bash bash

Configurer la carte son

Avant de commencer, vous devez connaître le modèle de carte son que vous avez, la puce qu'elle utilise, et si c'est une carte PCI ou ISA. Consultez la liste des périphériques audio supportés (http://www.freebsd.org/releases/6.2R/hardware-i386.html#SOUND) pour vérifier si votre carte est fonctionnelle sous FreeBSD. Ce document indique également quel pilote utiliser pour l'utilisation de votre carte son.

Par exemple, pour une carte son Intel ICH6 (compatible AC'97), il faut utiliser le pilote snd_ich(4).

Pour utiliser votre carte son, vous devez charger le pilote de périphérique approprié. Cela peut être fait de deux façons :

  • Manuellement, avec la commande kldload(8) :
# kldload snd_ich

Cependant, il faut saisir cette commande à chaque démarrage du système. Peu pratique dans le cadre d'utilisation de ce système.

  • Automatiquement, en ajoutant la ligne appropriée dans le fichier /boot/loader.conf :
#load kernel modules
snd_ich_load="YES"      # Sound module (AC'97)

Plus adapté à un “media center”.

Configurer la carte graphique

Pour configurer le serveur X, démarrez le client, logez-vous en tant qu'utilisateur root, et exécutez les commandes suivantes :

  • Créez un squelette de configuration du serveur X :
# Xorg -configure
  • Testez la configuration
# X -config /root/xorg.conf.new
  • Si besoin, modifiez la configuration, puis installez le fichier de configuration à un emplacement commun où Xorg(1) pourra le trouver :
# cp /root/xorg/conf.new /etc/X11/xorg.conf

Démarrer automatiquement l'interface graphique

Ce hack n'est pas très “propre”. Il existe des gestionnaires de session X (comme gdm ou kdm) qui autorisent la connexion automatique d'un utilisateur. Mais ces outils exigent de nombreuses dépendances, et consomment des ressources inutiles dans notre cas. L'idée principale, ici, est de garder un système assez léger. Pour se passer d'un gestionnaire de session X, procédez comme suit.

Créer le fichier /usr/local/etc/rc.d/startx

Créez comme suit le fichier /usr/local/etc/rc.d/startx.

Puis fixez ses permissions :

# chmod 555 /usr/local/etc/rc.d/startx

Modifier le fichier /etc/rc

La solution retenue dans cette maquette, consiste à lance l'environnement graphique à la fin de la procédure de démarrage. Pour ce faire, le fichier /etc/rc est modifié.

Voici le fichier rc.patch :

--- /etc/rc.orig     Fri Oct 19 18:50:58 2007
+++ /etc/rc  Fri Oct 19 18:50:43 2007
@@ -119,4 +119,5 @@
 
 echo ''
 date
+/usr/local/etc/rc.d/startx start
 exit 0

Il ajoute en avant dernière ligne du fichier /etc/rc la ligne /usr/local/etc/rc.d/startx start.

Pour appliquer ce patch, copiez le fichier rc.patch dans le répertoire /tmp du système, puis exécutez les commandes suivantes :

# cd /etc
# patch -p0 < /tmp/rc.patch
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- /etc/rc.orig   Fri Oct 19 18:50:58 2007
|+++ /etc/rc        Fri Oct 19 18:50:43 2007
--------------------------
Patching file /etc/rc using Plan A...
Hunk #1 succeeded at 119.
done

La modification est opérée.

Configurer le volume par défaut

Créez comme suit le fichier /usr/local/etc/rc.d/mixer.sh.

Puis fixez ses permissions :

# chmod 555 /usr/local/etc/rc.d/mixer.sh

Autoriser les utilisateurs à monter les périphériques amovibles

L'utilisateur dédié player doit pouvoir monter les différents périphériques amovibles de façon transparente, à la souris.

UN CDROM / DVD

vfs.usermount

Le noyau doit être configuré pour permettre aux utilisateurs non privilégiés de monter des systèmes de fichiers. Pour ce faire, positionnez la variable sysctl(8) vfs.usermount à 1 comme suit :

# sysctl -w vfs.usermount=1

Pour que la modification soit permanente, modifiez le fichier /etc/sysctl.conf :

# echo "vfs.usermount=1" >> /etc/sysctl.conf

Fixer les permissions du périphérique

L'utilisateur, ou le groupe dont il est membre, doit posséder les permissions de lecture et d'écriture sur le fichier de périphérique.

Fixer comme suit les permissions sur le lecteur de CDROM:

# chmod 666 /dev/acd0

Fixer les permissions au démarrage

A partir de la version 5 de FreeBSD, le fichier /etc/devfs.conf permet de sauver ces modifications à travers les redémarrages du système.

Ajoutez les lignes suivantes au fichier /etc/devfs.conf :

link    acd0    cdrom
link    acd0    dvd
link    acd0    rdvd
own     /dev/acd0       root:operator
perm    /dev/acd0       0666

Fixer les permissions du point de montage

Le point de montage doit appartenir à l'utilisateur qui monte le périphérique :

# chown player /cdrom

Modifier le fichier /etc/fstab

Enfin, pour faciliter l'utilisation du périphérique, ajoutez la ligne suivante au fichier /etc/fstab :

# Device        Mountpoint      FStype  Options                 Dump    Pass#
/dev/acd0       /cdrom          cd9660  ro,noauto,nosuid,noexec 0       0

Monter le périphérique

Pour monter le CDROM, en tant qu'utilisateur player, exécutez la commande suivante :

$ mount /cdrom

Un périphérique USB

Puisqu'un périphérique USB est détecté comme un périphérique SCSI, la commande camcontrol(8) peut être utilisée pour lister les périphériques détectés par le système. Par exemple :

# camcontrol devlist
<Kingston DataTraveler 2.0 1.00>   at scbus0 target 0 lun 0 (pass0,da0)
<ST980821 0A 0811>                 at scbus1 target 0 lun 0 (da1,pass1)

Pour permettre à un utilisateur non privilégié de monter un périphérique USB, voici les étapes à réaliser.

Modifier le fichier /etc/devfs.rules

Pour rendre un périphérique USB montable par un utilisateur normal, un certain nombre de paramétrages sont nécessaires. Tout d'abord, les entrées de périphériques qui sont créées lors de la connexion d'un périphérique USB (et supprimées lors de la déconnexion) doivent être accessibles à l'utilisateur (ou à son groupe). Ensuite, quand ces entrées de périphériques sont créées, l'utilisateur (ou son groupe) doit pouvoir y accéder en lecture et en écriture. Pour cela, les lignes suivantes sont ajoutées à /etc/devfs.rules :

#/etc/devfs.rules

#The devfs.rules file provides an easy way to create and apply devfs(8)
#rules, even for devices that are not available at boot.
#For devices available at boot, see devfs.conf(5).

# usb drives
[localrules=1]
add path 'da[1-3]*' mode 0666 group operator

#EOF

Note: Le système possède déjà un périphérique SCSI (la clé USB système, da0), on modifie donc les permissions pour les autres périphériques USB.

Modifier le fichier /etc/rc.conf

Pour que le fichier /etc/devfs.rules précédent soit lu lors du démarrage du service devfs(8), vous devez activer le support des règles devfs(8) dans le fichier /etc/rc.conf.

Ajoutez la ligne suivante au fichier /etc/devfs.conf :

devfs_system_ruleset="localrules"

vfs.usermount

Le noyau doit être configuré pour permettre aux utilisateurs non privilégiés de monter des systèmes de fichiers. Pour ce faire, positionnez la variable sysctl(8) vfs.usermount à 1 comme suit :

# sysctl -w vfs.usermount=1

Pour que la modification soit permanente, modifiez le fichier /etc/sysctl.conf :

# echo "vfs.usermount=1" >> /etc/sysctl.conf

Modifier le fichier /etc/fstab

Enfin, pour faciliter l'utilisation du périphérique, ajoutez la ligne suivante au fichier /etc/fstab :

/dev/da1s1      /usb         msdosfs rw,noauto,longnames     0       0

Fixer les permissions du point de montage

Le point de montage doit appartenir à l'utilisateur qui monte le périphérique :

# mkdir /usb
# chown player /usb

Monter le périphérique

Pour monter le premier périphérique USB, en tant qu'utilisateur player, exécutez la commande suivante :

$ mount /usb

Ajouter des fontes graphiques

# pkg_add -r urwfonts-ttf

And likewise with the freefont or other collections. To have the X server detect these fonts, add an appropriate line to the X server configuration file (/etc/X11/xorg.conf), which reads (in section Files):

FontPath "/usr/X11R6/lib/X11/fonts/urwfonts-ttf"

And restart your X server.

Liens

 
doc/freebsd/mmp.txt · Dernière modification: 2009/12/23 22:36 (édition externe)     Haut de page