Home CV Photos     

Etude d'une
Distribution linux Multimédia

Auteurs :
  1. François Delescluse
  2. Laurent Dufour
  3. Sébastien Hosy
  4. Frédéric Planchon
Encadreur :
  1. Erick Gallesio
Date : Mars 2002

Dans le cadre d'un micro-projet pour le module STREAM 5 (JY Tigli - tigli@essi.fr)

Sommaire

1 - Présentation du sujet

2 - Base de l'installation
2.1 - File system
2.2 - Configuration du noyau
2.3 - L'arborescence de base
2.4 - Les devices (/dev)
2.5 - Les points de montage (/mnt)
2.6 - Le boot
2.7 - Les librairies
2.8 - Les exécutables
2.9 - Les fichiers de configuration (/etc)
3 - Les utilitaires multimédia
3.1 - CD Audio
3.2 - MP3
3.3 - Serveur X
3.4 - Lecteur de films
3.5 - Application de navigation
4 - Etude matérielle
4.1 - Matériel nécessaire
4.2 - Puissance nécessaire
5 - Résultats

6 - Extensions

Conclusion

Bibliographie

Annexes

Download



1 - Présentation du sujet

Nous avons pour objectif de réaliser une "machine multimédia" basée sur un noyau linux.
Nous avons pour principale contrainte, un démarrage rapide (<10s), une immunité contre les coupures électriques brutales.
Du point de vue de ses fonctionnalités, notre "machine" doit être capable au minimum de lancer un CDs Audio, de lire des fichiers audios (mp3, wav, wma...), de lire des fichiers vidéo (divx, mpeg, mov...) et enfin de lire des DVDs.
Nous pouvons imaginer bien d'autres fonctionnalités à partir d'une telle souche, par exemple décodeur numérique de satellite, magnétoscope numérique, navigateur internet...
Dans ce projet, notre tâche est limitée à la première étude d'un tel développement (machine physique minimum, étude de la distribution + prototype).
Les deux principaux débouchés de ce projet sont :

  1. puce le développement d'une "machine de salon" multimédia, dans ce cas-ci, toute l'installation se retrouve dédiée à un matériel. Mais nous ne sommes plus dans un environnement d'ordinateur (clavier, souris, écran...).
  2. puce la réalisation d'une distribution linux qui permet d'utiliser son ordinateur comme une "machine multimédia", sans pour autant connaitre linux.


2 - Base de l'installation

2.1 - File system

Nous avons pour contrainte de pouvoir arrêter la machine soudainement, sans pour autant endommager le système de fichier. Nous utilisons donc des partitions journalisées formatées en ext3 ou Reiserfs. La place nécessaire à notre système ne devrait pas excéder les 20 Mo sur le disque, donc chacun peut sans trop de problème se réserver une petite partie du disque pour installer cette distribution multimédia, une version RAMDisc est également envisageable.

2.2 - Configuration du noyau

Nous avons fait notre étude sur un noyau de version 2.4.18 afin de minimiser les problèmes de matériel récents.

Selon l'objectif de la distribution, les besoins ne seront bien évidemment pas les mêmes.

-- Loadable module support --

Dans une version "machine de salon", nous pouvons imaginer que les modules ne sont pas nécessaires car la configuration est parfaitement adaptée au matériel.

Cependant dans la version "distribution multimédia", les modules seront très utilisés.

Nous conseillons également -Kernel module loader-.

-- Processor type and features --

Nous avons uniquement configuré le noyau pour le processeur de notre machine de test. Toutes les autres options sont inactives.

-- Général setup --

Nous avons activé :
  1. puce -Networking Support-
  2. puce -PCI support-
  3. puce -PCI device name datbase-
  4. puce -System V IPC-
  5. puce -Sysctl support-
  6. puce -Kernel support for "all" binaries-
  7. puce -Power management support-

-- Plug and Play configuration --

Nous avons activé le plug and play ( + ISA si nécessaire ).

-- Networking options --

Vous devez absolument activer -Packet socket-, -Unix domain sockets-, -TCP/IP networking- car ils sont utilisés par le lecteur CD (cdplay), les MP3 (mpg123) et le serveur X.
Toutes les autre options sont inutilisées.

-- IDE/ATA/MFM/RLL support --

Vous devez activer les périphériques correspondant au cdrom (DVD) et au disques durs si vous voulez les utiliser pour stocker de la musique ou des films (sans oublier le disque de l'installation).

-- SCSI support --

De même, faites en sorte de faire fonctionner vos périphériques SCSI ou émulation SCSI.

-- IrDA support --

Cette option est nécessaire pour une version "machine de salon" mais n'a pas grand intérêt pour une extension multimédia d'un ordinateur possédant déja un clavier et une souris.

-- Character devices --

Activez :
  1. puce -Virtual terminal-
  2. puce -Support for console on virtual terminal-
  3. puce -/dev/agpgart- (Si carte vidéo AGP)
  4. puce -"votre configuration de carte vidéo"-
  5. puce -Direct Rendering Manager-

-- Multimedia devices --

Cette configuration sera nécessaire si on incorpore une carte d'acquisition numérique, pour un magnétoscope numérique ou encore pour écouter la radio.

-- File systems --

  1. puce Ext3 journalling file system support- ou -Reiserfs support- sont nécessaires pour la partition d'installation.
  2. puce VFAT fs support- (éventuellement NTFS) peut-être utile si vous voulez disposer de la musique ou des films sur un partition VFAT.
  3. puce ISO 9660 CDROM file system support- et -Microsoft Joliet CDROM extension- pour la gestion des CD-Rom.
  4. puce /proc file system support-
  5. puce Dans -partition type-, activer -PC BIOS support-
  6. puce Dans Native Language Support (NLS), activer -Codepage 437 - et -NLS ISO 8859-1- pour les codepage FAT.
  7. puce automount afin de permettre l'activation automatique des cd.

-- Console drivers --

Activer -VGA text console- pour la version utilisateur.

-- Sound --

Les cartes son sont nécessaires pour une application multimédia, vous devez choisir l'option qui correspond à votre matériel.

Sections non utilisées:

  1. puce -- Memory Technoogy Devices --
  2. puce -- Parallel port support --
  3. puce -- Block devices --
  4. puce -- Multi-device support --
  5. puce -- Telephony Support --
  6. puce -- Fusion MPT support --
  7. puce -- IEEE 1394 support --
  8. puce -- I2O support --
  9. puce -- Networking device support --
  10. puce -- Amateur Radio support --
  11. puce -- ISDN support --
  12. puce -- Old CD-ROM drivers --
  13. puce -- Input core support --
  14. puce -- USB support --
  15. puce -- Bluetooth support --
  16. puce -- Kernel hacking --

2.3 - L'arborescence de base

Vous devez avoir les répertoires suivants à la racine :
/bin    /boot   /dev    /etc    /lib    /mnt    /proc   /sbin   /tmp    /var.

2.4 - Les devices (/dev)

Nous avons essayé de prendre uniquement les devices nécessaires, soit :

  1. puce Les devices du(des) disque(s) dur(s), "hda" par exemple et les partitions utiles correspondantes (hda5 pour l'installation et hda9 pour le stockage de musique par exemple).

  2. puce Les devices de base nécessaires, soit "mem", "kmem", "console", "null", "zero", ainsi que "tty0", "tty2" qui permettent également d'afficher les informations au démarrage.

  3. puce Le device du Cd Rom ou du DVD.

2.5 - Les points de montage (/mnt)

Vous devez configurer votre système pour que le cdrom et les partitions de stockage soit accessibles dans /mnt. (Grâce au fichier /etc/fstab)

2.6 - Le boot

Le répertoire /boot contient les fichiers suivants : System.map et vmlinuz-2.4.18, deux fichiers liés au noyau.
Afin de permettre la reconnaissance du l'utilisateur, nous devons ajouter le fichier de mot de passe /etc/passwd et la librairie /lib/libnss_files.so.2.

2.7 - Les librairies

Plusieurs librairies sont nécessaires pour toutes les applications, telles que ld-linux.so.2, libc.so.6 et libnss_files.so.2.
Deux autres librairies sont nécessaires pour le shell, ce sont les deux fichiers /lib/libtermcap.so.2 et /lib/libdl.so.2.

2.8 - Les exécutables

Le fichier /sbin/init est le premier exécutable appellé par le système après le chargement du noyau, il est donc indispensable.
Pour ce qui est du chargement des modules, les fichiers /sbin/modprobe, /sbin/depmod, /sbin/insmod, /sbin/rmmod sont nécessaires. (La configuration du noyau peut faire en sorte que ces utilitaires ne soit pas indispensables).
Les commandes /bin/mount et /bin/umount permettent le montage et le démontage des partitions.
Le shell est relativement indispensable sur un système, nous avons donc ajouté un /bin/bash.
Loadkeys est l'utilitaire qui permet de changer le clavier, il n'est pas indispensable mais peut-être utile, /bin/loadkeys.
Enfin, pour l'arrêt ou le redémarrage du système, les fichiers /sbin/halt, /sbin/reboot, /sbin/shutdown sont également utiles.

2.9 - Les fichiers de configuration (/etc)

Le fichier /etc/inittab est un fichier de configuration utilisé par /sbin/init au démarrage.
Les fichiers /etc/fstab et /etc/mtab sont utiles et nécessaires pour le montage des systèmes de fichier racine, /proc, et également pour le cdrom et les partitions de stockage.
Le fichier /etc/rc qui est un script exécuté au lancement.
Le répertoire /etc/keymap/ contient plusieurs fichiers nécessaires à la configuration d'un nouveau clavier.
Enfin, comme nous l'avons noté précédemment, le fichier /etc/passwd pour l'identification.




3 - Les utilitaires multimédia

3.1 - CD Audio

Dans un premier temps, nous allons utiliser des programmes existants pour exécuter les tâches multimédias. Pour ce qui est de la lecture des cd audio, l'utilitaire retenu est "cdplay" qui permet simplement de lire un cd sans trop de difficulté.
L'utilitaire /bin/cdplay ne demande pas beaucoup de librairies supplémentaires, uniquement /lib/libncurses.so.5 et /lib/libgpm.so.1. Il ne nécessite pas la présence de device supplémentaire car il utilise le lecteur cd pour la lecture (sortie directe sur la carte son).

3.2 - MP3

Pour lire les mp3, nous avons choisit un autre programme en ligne de commande qui est largement utilisé dans son domaine, /bin/mpg123.
Il ne demande l'ajout que de 3 librairies supplémentaires:

  1. puce /lib/libm.so.6
  2. puce /lib/libesd.so.0
  3. puce /lib/libaudiofile.so.0
En revanche, il a besoin d'un device de sortie audio: /dev/dsp qui n'était pas encore utilisé jusque là.

3.3 - Serveur X

On ne voit pas très bien comment une distribution multimédia pourrait se passer d'un serveur X, car qui dit multimédia dit vidéo!
Nous avons donc copié les fichiers minimaux nécessaire à XFree86 dans notre arborescence.

Le fichier principal est l'exécutable /bin/XFree86 qui nécessite les librairies /lib/libpam.so.0, /lib/libpam_misc.so.0 et /lib/libz.so.1. Les librairies pam permettent l'authentification.

XFree86 utilise le répertoire /tmp pour y inscrire des informations.

Une grosse part de l'installation du serveur X réside dans la configuration de celui-ci. Pour cela, nous avons dû éditer le fichier /etc/X11/XF86Config afin de placer la configuration adaptée au matériel.
Un fichier décrivant les couleurs rgb est nécessaire, c'est /etc/X11/rgb.txt.
Incontestablement, ce sont les libraires qui sont les plus nombreuses à importer, c'est pourquoi nous nous contenterons de lister le repertoire /lib/X11:

  1. puce libbitmap.a
  2. puce libfb.a
  3. puce libpcidata.a
  4. puce libscanpci.a
  5. puce libvgahw.a
  6. puce libddc.a
  7. puce libint10.a
  8. puce libramdac.a
  9. puce libvbe.a
  10. puce libxaa.a

Quelques autres librairies ou drivers sont nécessaires à la configuration minimale de XFree86:

  1. puce /lib/X11/input/mouse_drv.o
  2. puce /lib/X11/extensions/libextmod.a
  3. puce /lib/X11/drivers/i810_drv.o        //pour notre carte vidéo

Il ne reste plus qu'à installer les polices de caractères minimales soit:

  1. puce /lib/X11/fonts/6x13-ISO8859-1.pcf.gz      (pour nos réglages locaux)
  2. puce /lib/X11/fonts/cursor.pcf.gz.

En revanche, le serveur X a besoin de devices supplémentaires à savoir /dev/psaux pour la gestion de la souris et /dev/agpgart pour la gestion de l'AGP.

3.4 - Lecteur de films

Nous avons trouvé un lecteur de vidéo performant, simple d'utilisation, en ligne de commande, permettant de lire de nombreux formats de vidéo, "MPlayer". Il s'installe sans trop de difficulté, même s'il nécessite de nombreuses librairies:

  1. puce /lib/libartsc.so.0
  2. puce /lib/libasound.so.1
  3. puce /lib/libdivxdecore.so
  4. puce /lib/libGL.so.1
  5. puce /lib/libnsl.so.1
  6. puce /lib/libpng.so.2
  7. puce /lib/libpthread.so.0
  8. puce /lib/libSDL-1.2.so.0
  9. puce /lib/libXext.so.6
  10. puce /lib/libXv.so.1
  11. puce /lib/libXxf86dga.so.1

Ce lecteur de vidéo se base sur les codecs de décompression windows (pour le divx par exemple), nous devons donc installer ces codecs dans un répertoire approprié : /usr/lib/win32.

Ces deux opérations effectuées, il ne reste plus qu'à créer le répertoire /usr/local/share/mplayer et d'y placer le fichier de configuration des codecs : codecs.conf

3.5 - Application de navigation

Si nous voulons que des novices utilisent cette distribution soit sous forme de "machine de salon" soit sous forme de "distribution multimédia", il faut leur éviter de taper les commandes en ligne, car ils risquent de se tourner vers leur chaîne hifi préférée...
Nous avons pour cela fait un programme graphique très simple qui permet d'exécuter les tâches sans ligne de commande. La seule librairie à ajouter pour cela est la /lib/libX11.so.6 qui permet de programmer le serveur X.




4 - Etude matérielle

4.1 - Matériel nécessaire

La composition matérielle de la machine dépend fortement de ses fonctionnalités. Par exemple, si nous voulons lire des DVDs, il semble utile d'inclure un lecteur DVD à notre machine.
Dans la version de base que nous avons réalisé, nous avons besoin du matériel suivant :
Carte son, Carte vidéo (sortie TV), lecteur DVD.

4.2 - Puissance nécessaire

d'un point de vue interne, nous avons besoin d'un processeur PII 450, avec 64 Mo de RAM au minimum. Cette configuration nous est imposée par la lecture des fichiers DivX.




5 - Résultats

A la fin de notre étude, nous avons obtenu une distribution linux qui ne nécessite que 20 Mo d'espace disque (Possibilité d'utilisé un RAMDisc) dont la moitié de cet espace est occupé par les codecs de décompression windows (dlls).
Du point de vue de la rapidité, notre version démarre en moins de 8 secondes.




6 - Extensions

Extension possibles Matériel dépendant
Enregistreur Audio disque dur
Radio Carte radio FM
Magnétoscope numérique Carte acquisition vidéo, disque dur suffisant
Décodeur satellite Carte tuner numérique
Banc de montage audio/vidéo Clavier, souris, disque dur suffisant
Visionneuse PhotoCD  
Acquisition photo Scanner, appareil photo numérique, imprimante
Téle/Visio-phone Caméra, modem
Navigateur web Modem, clavier, clavier
Console de jeu Joystick

Pour chaqu'une des extensions, il faut trouver, s'il existe, le logiciel adéquat.




Conclusion

A cette étape de l'étude, nous avons réalisé une distribution multimédia qui permet de lire les cd audio, les mp3 et les films . De plus, elle a l'avantage de permettre la mise à jour des codecs de films par exemple.
Le problème majeur qui se pose est l'adaptation et la configuration de cette distribution sur une autre machine physique. Dans un premier temps, il faut adapter la configuration du noyau, mais les modules vont nous aider dans ce domaine.
Là où les choses se corsent, c'est pour la configuration du serveur X, car il faut adapter la configuration à une carte vidéo et une souris spécifique.




Bibliographie

cdplay

Dans toutes les bonnes distributions linux ou http://www.rpmfind.net



mpg123

http://www.mpg123.de/



MPlayer

http://www.mplayerhq.hu/homepage/



Howto - compilation du noyau

http://www.linux.org/docs/ldp/howto/Kernel-HOWTO.html




Annexes

Liste des fichiers de notre arborescence




Download

Distribution version 1.0

 

Valid HTML 4.01!    Valid CSS!