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/
Auteur : Xavier GARREAU
Modifié le 18.06.2003
|