Linux sur iPaq
Cette page est dédiée à l'installation, l'utilisation et développement de GNU/Linux sur iPaq. Pour rappel, un iPaq est un PDA, qui à la base, fonctionne avec WindowsCE (aka PocketPC - ppc). On pourrait penser que GNU/Linux a un gros retard dans ce domaine, mais en fait, pas du tout. On rencontre biensûr les mêmes problèmes qu'avec GNU/Linux sur n'importe quelle machine (en particulier sur les machines non intel x86):
- Support matériel pas toujours au top
- Logiciels propriétaires pas toujours disponibles
Comme exemple du premier point, je prendrais le manque de finesse dans la gestion de la fréquence
du processeur. Mon iPaq h5500 est équipé d'un processeur Intel PXA, mais linux ne semble pas
réduire la fréquence de celui ci lorsque l'appareil est mis en veille: la durée de mise en veille
en prend un (gros) coup. On retrouve aussi biensûr des cartes d'extensions ayant un support 0 de la part
des constructeurs, et impossible de contourner cela en utilisant des projets comme NdisWrapper (forcément,
il n'y a rien à wrapper ici).
Pour les logiciels, je pense à tous ces logiciels bien pratiques lorsqu'on utilise un GPS et qui font
un peu tout ce qu'il faut pour devenir super flemmard et ne plus jamais se fatiguer à prévoir une
route avec un crayon, une feuille et une carte Michelin en papier.
Dépôt ipkg
J'ai un petit dépôt ipkg que j'utilise lorsque je developpe (modestement, très). Il se trouve là. Attention quand même, s'il peut rendre service, reposer dessus n'est pas franchement une bonne idée... Mais vu que plusieurs personnes semblent utiliser certains paquets, c'est bien que ça doit servir. Il est sans doute plus malin d'utiliser les dépôts unstable de familiar (pour la futur 0.8.3 par exemple).
Les projets
Voici les projets liés directement au port de linux sur PDA (mais pas seulement):
- Familiar linux: distribution linux complète.
- OpenEmbedded: plateforme de développement. Comprend tous ce qu'il faut
pour cross-compiler, créer des paquets, générer des images installables (flashables).
Installation
L'installation sur mon iPaq h5500 se fait sans problème via le cable série. Le plus simple est de suivre les instructions qui se trouvent sur le wiki. La démarche étant simple et courte, le donne les grandes lignes (je pars du principe que le bootloader est déjà installé, si ce n'est pas le cas, il est bon de lire le wiki car c'est la partie la plus délicate):
- demander gentillement au bootloader un prompt via la ligne série (bouton tout à gauche sur mon h5500)
- envoyer au bootloader une image de la partition du système via la commande "load root" puis transfert de l'image depuis un poste client via Y ou Z modem (C-a-z-s dans minicom)
- demander au bootloader de booter (c'est son job après tout): "boot"
Donc non, ce n'est pas compliquer d'installer linux sur un PDA de ce type!
Si vous avez des problèmes, il est possible de demander (toujours gentillement) à linux d'afficher les message
sur la ligne série:
- taper 'params' depuis le prompt du bootloader et repérer la ligne avec "linuxargs"
- taper "set linuxargs=copier_coller_des_paramètres_trouvés_avant" en changeant uniquement le ttySA0 par ttyS0
- taper "boot", normalement, tout s'affiche dans votre émulateur de terminal série
OpenEmbedded ou comment rentabiliser sa barette de 512
OpenEmbedded pourrait être comparer à portage de Gentoo: un ensemble de fichiers contenant des informations permettant de :
- télécharger le code source d'un programme donné
- compiler un programme donné
- faire plein de choses utiles (patch, héritage, action différentes suivant l'architecture)
Le programme qui vient lire toutes ces information est bitbake. C'est lui qui est assez gourmand en CPU et mémoire car il
va passer pas mal de temps à construire un arbre de dépendance avec toutes les informations dedans (il y a beaucoup
de paquets dans OpenEmbedded!), arbre stocké en mémoire. Pour un ordre d'idée, la construction de l'arbre pour un
arbre OpenEmbedded complet demande presque 512Mo de mémoire (c'est toujours ça de moins pour gcc et les autres
outils).
Biensûr, il existe des parades:
- Cacher les paquets dont on a pas besoin via la variable BBMASK
- réecrire bitbake: bitbake-ng, bbcow, différents patchs.
Pour peu qu'on ait suffisement de mémoire et un processeur pas trop antique, on s'en tire pas trop mal (j'ai un Athlon 1.2Ghz et 1Go de RAM).
Exemples
Concretement, voilà ce que je fais avec mon iPaq:
- gpe-go (un jeu de Go très basique, qui ne sait pas compter les points)
- gpe-contacts pour avoir l'adresse des mes contacts
- gpe-vlc pour essayer de lire des vidéos en streaming
- une télécommande wifi pour mes autres ordinateurs: quel plaisir d'avoir une console sur un si petit appareil. Il faut juste être courageux pour taper avec le stylet (faire un script "sed" ne doit pas être super drôle par exemple)
Il faut dire que ce iPaq, on me l'a donné et que je ne n'ai pas vraiment d'utiliter autre que pour découvrir le domaine de l'embarqué. Ce domaine est vraiment intéressant car il m'a permis de découvrir des projets que je ne connaissais pas avant:
- JFFS: un système de fichier qui vise les média "flash". Il évite ainsi de toujours écrire dans les même secteurs. Il est par exemple très fortement déconseillé de mettre un système de fichier journalisé sur une mémoire flash, le journal étant écrit à interval régulier, et souvent au même endroit. La chose intéressante est de voir que ce projet semble être dirigé par Axis, fabricant de matériel video utilisant linux (par exemple, des caméras IP, comme celle que j'ai eu a utilisé lors d'un développement
