logo xgarreau.org Quoi ma tête ?
xavier@xgarreau.org
Monter un feed ou bien nourrir son Zaurus
Version imprimable

Je vais, dans cet article vous apprendre à nourrir votre Zaurus, c'est à dire comment installer des paquets, les créer et enfin comment monter un feed.

Le Zaurus se nourrit de paquets ipk, qui sont semblables aux paquets .deb, pour les amateurs de debian. On amène des ipk dans son zaurus par divers moyens. Le premier à venir à l'esprit est d'utiliser les applications classiques de synchronisation, qui proposent des outils de transfert de fichiers. On peut également utiliser le réseau TCP/IP over usb, plus ou moins facile à installer (sur une mandrake, c'est un vrai bonheur, sur une lfs, c'est un peu plus ardu ... Consultez l'article à ce sujet dans ce même dossier). On peut également, selon le niveau de geek attitude de chacun utiliser la liaison série, un réseau WiFi, openobex over bluetooth, scp (l'outil de copie de fichier fonctionnant au dessus de ssh, livré dans OpenSSH, dans les applications clientes)... Le choix est vaste.

Je vais considérer que vous créer des paquets pour des gens "normaux", qui souhaitent utiliser l'appli Add/Remove Software présente dans l'onglet settings. Je vous (rappellerai | apprendrai) comment on s'en sert de la fonctionnalité "install packages via networks" puis dans la seconde partie, vous montrerais comment monter vous même votre feed.

Utilisation comme client

Commencez par choisir l'onglet Settings (l'avant dernier) puis cliquez sur "Add/Remove Software". Choisissez le bouton du milieu, soit "Install packages via networks".

Vous n'avez aucun package proposé. C'est normal, il faut dire au zaurus où se nourrir sur le réseau. Il vous faut donc une connexion réseau, soit par routage du net usb ou via une carte réseau. Mon choix s'est porté sur un réseau WiFi, auquel je me connecte grâce à une carte D-Link DCF-650W mais toutes les solutions sont bonnes, du moment que vous pouvez avoir google. Cliquez donc sur l'interrupteur, choisissez new et saisissez les renseignements démandés. Il s'agit d'un nom pratique à se rappeler et de l'url d'un feed. Par exemple, vous pouvez utiliser docs.zaurus.com pour le nom et l'url de leur feed, qui est http://docs.zaurus.com/feed. Ne mettez pas de slash après feed, sinon, ça ne fonctionnera pas. Vous pouvez saisir un second feed en recliquant sur New, etc ...

Si vous avez plusieurs feed. Vous devez sélectionner ceux dont vous voulez voir les packages. Cela permet d'éviter d'avoir à faire son choix parmi 150000 ipk. Une fois votre choix fait, cliquez sur OK (en haut à droite).

Vous voyez dès lors les ipk proposés par les feeds choisis. En tapotant deux fois sur un paquet du bout de votre stylet vous voyez la description du paquet ainsi que sa version et ses dépendances. Vous avez alors le choix de l'installer (ou de le supprimer mais pour ça il aurait mieux valu choisir "Uninstall packages" quand vous en aviez l'occasion ;-) ).

Une fois votre choix fait, cliquez sur "OK" pour installer effectivement les paquets. Le zaurus vous demande où effectuer l'installation (Mémoire interne, Carte CF ou Carte SD) mais énormément de paquets imposent d'être installés en mémoire interne. Choisissez ce que vous voulez mais mettez les paquets dépendants entre eux ensembles et sur un système ext2 pour la préservation des liens. Quittez l'interface d'installation de paquets. Quelques rares installations vous demanderont de rebooter (HancomSheet par exemple), dans ce cas, faites le ...

Vous pouvez alors profiter de vos nouveaux jeux, euh... nouvelles applications ;-).

Pour épater vos amis, sélectionnez doomdemo, prboom, libSDL libSDL-mixer et libSDL-net. Installez le tout puis rendez vous dans l'onglet jeux et tapez vous un Doom...

Du côté fournisseur

Analyse d'un ipk

Tout d'abord, de quoi est composé un ipk ? Il s'agit tout simplement d'un tar.gz renommé, lequel contient à son tour un fichier debian-binary contenant le numéro de version du système de package soit 2.0 pour l'instant et deux tar.gz, control.tar.gz et data.tar.gz.

data.tar.gz contient toute l'arborescence à installer, à titre d'exemple pour snes9x, l'émulateur de SuperNintendo, ce fichier contient :

./
./usr/
./usr/local/
./usr/local/bin/
./usr/local/bin/s9x
./usr/local/bin/snes9x
./usr/local/lib/
./usr/local/lib/X11/
./usr/local/lib/X11/icewm/
./usr/local/lib/X11/icewm/icons/
./usr/local/lib/X11/icewm/icons/snes9x_32x32.xpm
./usr/local/lib/X11/icewm/icons/snes9x_16x16.xpm
./usr/local/lib/X11/icewm/icons/.xvpics/
./usr/local/lib/X11/icewm/icons/.xvpics/snes9x_32x32.xpm
./usr/local/lib/X11/icewm/icons/.xvpics/snes9x_16x16.xpm
./usr/local/Xredir/
./usr/local/Xredir/usr/
./usr/local/Xredir/usr/local/
./usr/local/Xredir/usr/local/bin/
./usr/local/Xredir/usr/local/bin/s9x
./usr/local/Xredir/usr/local/bin/snes9x
./usr/local/Xredir/usr/local/lib/
./usr/local/.xvpics/
./usr/local/.xvpics/xcopilot_32x32.xpm
./usr/local/.xvpics/xcopilot_16x16.xpm
./home/
./home/root/
./home/root/snes9x/

Ces dossiers et fichiers sont respectivement créés s'ils n'existent pas et copiés lors de l'installation du paquet.

control.tar.gz contient les fichiers de contrôle optionnels. Il s'agit de quatre scripts preinst, postinst, prerm et postrm, d'un fichier control et d'un fichier conffiles. Les quatre scripts sont exécutés s'ils existent respectivement avant l'installation, après l'installation avant la suppression et après la suppression du paquet. Le fichier control contient la description du package, la personne qui le maintient, une description, les dépendances et d'autres informations. Le fichiers conffiles renseigne, lui, sur les fichiers de configuration nécessaires au contenu du paquet.

Création d'un ipk

Heureusement il existe des scripts qui vous aident à construire vos ipk. J'utilise mkipkg et vais donc vous présenter la création d'un paquet à l'aide de ce dernier.

Je vais prendre le cas d'un paquet que j'ai récemment créé. Il s'agit d'une compilation pour le zaurus par un membre de la liste bluez de divers modules et utilitaires bluetooth.

On commence par créer un répertoire de travail que l'on appelle bluez. On se déplace dans ce dernier et on crée l'arborescence telle qu'elle devra être installée sur le zaurus. Il faut se rappeler que le répertoire dans lequel on travaille sera assimilé à la racine lors de l'installation. Je dois placer quelques modules, des libs, un fichier de configuration et les outils associés. Je répartis donc mes fichiers selon l'arborescence suivante.

./usr/lib/libbluetooth.so.1.0.1
./usr/lib/libsdp.so.2.0.1
./usr/sbin/hciconfig
./usr/sbin/hcid
./usr/sbin/sdpd
./usr/sbin/sdptool
./etc/pcmcia/bluetooth
./etc/pcmcia/bluetooth.conf
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/bluetooth/hci_vhci.o
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/bluetooth/hci_uart.o
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/bluetooth/dtl1_cs.o
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/bluetooth/bt3c_cs.o
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/bluetooth/bluecard_c
s.o
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/bluetooth/btuart_cs.
o
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/net/bluetooth/bluez.o
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/net/bluetooth/l2cap.o
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/net/bluetooth/sco.o
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/net/bluetooth/bnep/bnep.o
./home/root/modules/2.4.18-rmk7-pxa3-embedix/kernel/net/bluetooth/rfcomm/rfcomm.
o

Il faut maintenant créer un répertoire CONTROL, directement dans le répertoire bluez. Dans ce répertoire CONTROL, on crée un fichier control qui contient des lignes de la forme "clés: valeur". Par exemple celui du package bluez est :

Package: bluez
Priority: optional
Section: base
Version: 2.4.18
Architecture: arm
Maintainer: Xavier Garreau <x.garreau@prim-time.fr>
Description: bluez for Zaurus --
 Packaged version of Stephen Crane <steven.crane@rococosoft.com>
cross-compiled  bluez kernel modules and user apps.

Les clés obligatoires sont Package, Version, Architecture, Maintainer, Section, and Description. On trouve également les clés facultatives Priority et Depends. Elles sont, dans l'ordre, le nom du package, son numéro de version, l'architeture (arm), la personne qui maintient le package avec l'adresse email de ce dernier, la section à laquelle appartient le package (ici, les avis diffèrent et en fait celà compte surtout pour les applications ayant des lanceurs graphiques, j'ai mis base parce que je l'ai trouvé sur un site et que ça me semblait correspondre mais il faudrait en fait installer les utilitaires comme "Console" et les modules à part. Les sections valides données par docs.zaurus.com sont Games, Multimedia, Communications, Settings, Utilities, Applications, Console et Misc). La description est composée, comme son onm l'indique, d'une description du paquet. Il est possible de faire des descriptions sur plusieurs lignes à condition de faire commencer ses lignes par un espace. Les clés optionnelles Priority et Depends contiennent la l'importance du paquet (généralement, on met optional) et ses dépendances. Pour bluez il n'y a pas de dépendance autre que la libc6 donc je n'ai rien mis.

Après l'installation de bluez, on souhaite exécuter un depmod -a, redémarrer le service pcmcia pour la prise en compte des nouveaux modules et faire un peu de plug and play pour voir si la carte insérée est prise en charge. J'ai donc écrit un script postinst. Comme ses copains preinst, prerm et postrm, il doit être placé dans le répertoire CONTROL. Voici ce script :

#!/bin/sh
# Post install script for bluez for zaurus
#
# Author: Xavier Garreau <x.garreau@prim-time.fr>
# Date: 11 jun 2003
#
/sbin/depmod -a

/etc/rc.d/init.d/pcmcia restart

ln -s /usr/lib/libbluetooth.so.1.0.1 /usr/lib/libbluetooth.so.1
ln -s /usr/lib/libbluetooth.so.1.0.1 /usr/lib/libbluetooth.so
ln -s /usr/lib/libsdp.so.2.0.1 /usr/lib/libsdp.so.2
ln -s /usr/lib/libsdp.so.2.0.1 /usr/lib/libsdp.so

# Do some plug and play stuff ;-)
# It works at least with Anycom BT CF Card
modprobe l2cap
cardctl insert
sleep 5
for i in bluecard_cs bt3_cs dtl1_cs btuart_cs; do
        /sbin/modprobe $i >/dev/null 2>&1 && /usr/sbin/hciconfig hci0 up
 >/dev/null 2>&1 && break || /sbin/modprobe -r $i;
done

# Needed by ipkg framework
exit 0

Le script appelle depmod, redémarre le service pcmcia, crée quelques liens pour la bonne utilisation des bibliothèques. Suite à celà il charge le module l2cap et simule une insertion de carte. Il attend un peu que la carte soit reconnue puis tente de lui attribuer quelques modules et vérifie que l'interface attendue est présente. Le script renvoie 0 si il s'est correctement déroulé, ce qui est obligatoire pour ces quatre scripts de contrôle.

Etant donné que nous avons un fichier de configuration, on le spécifie dans conffiles, également dans le répertoire CONTROL. Il contient donc en tout et pour tout :

/etc/pcmcia/bluetooth.conf

Maintenant que notre paquet est prêt. On remonte au dessus du répertoire bluez. On télécharge mkipkg (voir liens), on le rend exécutable et on lance :

xavier@servor:~/zaurus > ./mkipkg bluez
Packaged contents of bluez into ./bluez_2.4.18_arm.ipk

Créer le feed

Il vous faut un serveur web correctement configuré. Créez y un répertoire nommé comme bon vous semble (par exemple feed ou zaurus, c'est original).

Placez dans ce répertoire vos paquets. Téléchargez le script ipkg-make-index puis lancez-le (après l'avoir rendu exécutable) en spécifiant le répertoire à utiliser comme feed. Par exemple, si le feed se trouve dans le même répertoire que le script :

$ rm Packages -f
$ ./ipkg-make-index.sh .
Generating index for package bluez
Generating index for package fdisk
Generating index for package kismet-qt
Generating index for package snes9x

Ceci vous génère un fichier Packages, qui présente les paquets que le script a pu recenser. Si vous avez fait celà dans un répertoire en local, transférez les ipk et le fichier Packages sur un serveur web puis tentez d'installer un de vos paquets.

Un petit tour du côté d'OpenZaurus3.2

J'ai trouvé intéressant à titre comparatif de vous présenter l'installation d'applications sur un Zaurus équipé d'une ROM OpenZaurus. C'est donc ce que je fais, en me basant sur un OpenZaurus3.2. La raison de ce paragraphe est que l'application d'installation est identique sur OpenZaurus et sur familiar pour l'iPaq, comme toutes (?) les applications opie.

Flasher la ROM

Je ne vous fait pas un article sur l'installation d'OpenZaurus. Petit rappel du processus tout de même pour installer la bête :

  • Sauvegardez vos données !
  • Mettre sur une Carte CF une des zImage téléchargeables sur le site openzaurus.org, ne pas oublier de renommer l'image téléchargée en zImage. Y ajouter le fichier initrd.bin. Il faut bien mettre ces deux fichiers à la racine de la carte.
  • Insérez la carte dans le zaurus et l'éteindre.
  • Passez l'interrupteur sous le compartiment batterie sur "Replace Battery" et enlever le cache batterie.
  • En tenant enfoncées les touches 'C' et 'D', pressez le bouton "Full Reset" qui se situe dans le compartiment batterie, au dessus des lettres "RA" de "NORMAL OPERATION".
  • Quand vous lâchez, la diode mail (verte) reste allumée, le processus de flashage est en cours.
  • Remettez le Zaurus sur secteur et attendez l'extinction des diodes.
  • Le Zaurus est flashé, pressez à nouveau le bouton reset, replacez le cache batterie et repassez l'interrupteur sur "NORMAL OPERATION".
  • Allumez le Zaurus, souriez, vous êtes sous OpenZaurus.

Nourrir son zaurus sous OZ3.2

Il va nous falloir un accès réseau pour cette partie. Je vous laisse le configurer tout seuls, ce n'est pas très différent de la procédure utilisée avec la ROM de chez Sharp.

Tout commence dans l'onglet Settings. Il faut y choisir "Packages". On arrive alors sur la liste des paquets installés sur le Zaurus.

On se rue (en bon geek) sur le menu "Options/Configure". Les trois serveurs d'openzaurus.org sont déjà présents. On clique sur stable, coche la case "Active Server" pour aller chercher des paquets sur ce serveur, puis sur le bouton "Update". On peut renouveler l'opération pour testing et unstable si on est téméraire ou dans le besoin de paquets récents considérés comme non stables. On quitte cette page en cliquant sur "OK".

Choisissez stable dans la liste déroulante au dessus de la liste des paquets puis récupérez la liste des paquets du serveurs en utilisant le menu "Actions/Update lists" ou l'icône correspondante (la première). Une fois dans cette interface de mise à jour, cliquez sur "Start" et attendez que le bouton se transforme en "Close". Cliquez alors sur ce dernier.

Vous obtenez une liste de paquets. Ceux qui sont installés sont précédés d'un disque bleu. Ceux qui ne sont pas installés ne sont précédés par rien et ceux qui peuvent être mis à jour sont précédés par un disque bleu et une petite étoile. En double cliquant sur un paquet, vous obtenez les informations le concernant.

Cochez tous les paquets que vous voulez installer/réinstaller/mettre à jour/désinstaller puis choisissez "Actions/Apply changes" ou utilisez l'icône correspondante (la dernière). Pour les paquets pour lesquels plusieurs actions sont envisageables, le système vous demandera l'action que vous voulez entreprendre (Pour les paquets déjà installés, faut-il réinstaller ou supprimer ...)

Dans ce dernier écran, on vous rappelle les actions qui vont être entreprises. Vous devez choisir une destination (root, ram, sd ou cf) puis cliquer "Start". A la fin du processus, cliquez sur "Close" puis quittez l'interface d'installation pour profiter de vos nouvelles applications.

@+

Xavier Garreau - <xavier@xgarreau.org>
http://www.xgarreau.org/

Ingénieur de recherche PRIM'TIME TECHNOLOGY
http://www.prim-time.fr/

Membre fondateur du ROCHELUG
http://www.rochelug.org/

Liens & Références :

  • ZSI : Zaurus Software Index : http://www.killefiz.de/zaurus/
  • Sharp Zaurus Developer site : http://docs.zaurus.com/
  • Sharp Zaurus Developer site (feed) : http://docs.zaurus.com/feed
  • Page Zaurus de gnurou.org : http://www.gnurou.org/software/zaurus/index.html
  • mkipg : http://zaurus.wynn.com/software/free/
  • Créer un ipk : http://www.handhelds.org/z/wiki/BuildingIpkgs
  • ipkg-tools : ftp://lorien.handhelds.org/pub/linux/feeds/demo/ipkg-tools.tgz
  • ipkg-make-index : http://docs.zaurus.com/downloads/ipkg-make-index.sh
  • OpenZaurus : http://www.openzaurus.org/

Précédent Index Suivant

Auteur : Xavier GARREAU
Modifié le 18.06.2003