Logiciels Libres et Systèmes Embarqués


Chapitre 3. Dream[Slack]

3.1. La base

3.1.1. Tutorial de Bill Gatliff

Bill Gatliff (http://www.billgatliff.com) est un consultant et un spécialiste pour systèmes embarqués, il a écrit de nombreux articles, dont un sur la création d'un système Linux minimal en RamDisk pour la DreamCast. Ce tutorial est une très bonne introduction à la compilation croisée, ainsi qu'aux systèmes embarqués, et pour le moment Dream[Slack] est basée sur ce dernier.

Base de la mini-distribution de Bill Gatliff :

  • binutils-2.11.2
  • gcc-3.0.1
  • glibc-2.2.4
  • busybox-0.60.1
  • linux-sh-dc 2.4.10-pre6

3.1.2. DCLinux

DCLinux (http://www.m17n.org/linux-sh/dreamcast/) est la plus connue et la plus aboutie des distributions Linux pour DreamCast, et c'est pour cela qu'elle a énormément servie pour les tests des logiciels que l'on retrouve dans Dream[Slack]. En effet, elle fournissait un environnement très complet et facile à utiliser, on y retrouve notamment une console sur le port série, le support du réseaux, le serveur XFree86, et beaucoup d'autres logiciels. Malheureusement, elle n'est plus maintenue, et les documentations techniques ne sont pas abondantes.

Il s'avère que la dernière version de DCLinux, datée du 29 Septembre 2001, n'a jamais été officiellement distribuée. Contrairement à la précédente, elle n'utilise pas le système DevFS, ce qui empêche la création où la modification des fichiers de périphériques. Cela est extrêmement gênant car lors d'une connexion distante ou locale, ces fichiers spéciaux se voient créer ou changer de propriétaires. C'est pour cela qu'elle ne fut pas utilisée lors des tests. On y retrouve tout de même quelques bonnes surprises comme un noyau plus récent, enfin la librairie pthread, et la librairie DirectFB.

3.1.3. Dream[Slack]

Même si Dream[Slack] est basée sur la mini-distribution de Bill Gatliff, elle est capable de charger des binaires dynamiquement liés, pour cela il suffit de copier ld-2.2.4.so dans le répertoire /lib/ et d'exporté la variable LD_LIBRARY_PATH ou de mettre à jour le fichier /etc/ld.so.conf et de lancer ldconfig

Ajout de Dream[Slack] par rapport à la mini-distribution de Bill Gatliff :

  • linux-sh-dc 2.4.10-pre11
  • ncurses-5.3
  • gpm-1.19.6 ou gpm-1.20.0
  • zlib-1.1.4
  • libpng-1.2.5
  • libjpeg.v6b
  • libtiff-3.6.0-beta
  • links-2.1pre7
  • boa-0.94.13

Ces librairies sont compilées en tant que librairies dynamiques, et statiques. Le fait de liés statiquement un binaire permet de gagner du temps sur son chargement, en effet le lecteur de GD-ROM n'a plus besoin de chercher à plusieurs endroits les différentes librairies utilisées. Cependant cela peut être très consommateur en mémoire car les librairies ne seront pas partagées. D'autres toolchains, fournis par Sugioka (http://www.sh-linux.org), ont été testés avec succès, et seront sûrement utilisés pour les prochaines versions de Dream[Slack].

Toolchains fournit par Sugioka :

  • binutils-2.13.90.0.18
  • gcc-3.2.3
  • glibc-2.2.5

Cependant, il semblerait que les dernières version de binutils, gcc et de la glibc supporte nativement la cible sh-linux, si telle est le cas, Dream[Slack] sera basé sur ceux-ci.

3.1.4. Implémentation de Dream[Slack]

Beaucoup de logiciels libres pour DreamCast supportent le changement de CD-ROM en cours d'exécution, pour que l'utilisateur puisse accéder à ces fichiers (de musique par exemple). Malheureusement DCLinux utilise le CD-ROM comme système racine, si Dream[Slack] est construite de cette manière, ce qui est le cas pour le moment, il faudrait que l'utilisateur grave ses fichiers sur ce même CD-ROM.

Une autre solution consisterai à faire une distribution entièrement sur un RamDisk, ce qui signifie qu'il faille faire extrêmement attention à la mémoire utilisée. Il existe des techniques pour ce genre de situation, telle que le stockage des binaires sur le RamDisk sous forme directement exécutable, il n'y a donc plus redondance des données. On pourrait sinon créer des distributions Dream[Slack] dédiées, une pour la lecture de musique, une autre pour l'émulation de jeu, ...

La meilleur solution serait de créer un système capable de mixer les deux techniques, un RamDisk qui possède des liens vers des répertoires du CD-ROM. Ainsi quoi qu'il arrive, il existe toujours un système racine, et si l'utilisateur veut lancer une application disponible sur le CD-ROM de Dream[Slack], il suffit de la copier sur le RamDisk, et ensuite on pourra changer de CD-ROM sans problèmes.