Matchbox

Bonjour à tous,

Quelqu’un aurait-il déja utilisé le display manager connu sous le nom de Matchbox (utilisé pour les systèmes embarqués) ? Quels sont ses avantages, ses inconvénients, comment on l’installe sur une machine embarquée, comment le configurer pour avoir un serveur X tout beau etc, etc…

je crois que les divers wm ont tous eu droit à leur trucs et astuces: regardes dans les post de damsss, c’est le spécialiste des wm.
Pour ce qui est de l’intègrer dans de l’embarqué, le wm importe relativement peu, c’est surtout le lancement d’Xwindows qui bouffe la ressource, donc pas de wm du tout, ou alors une interface autre qu’Xwindows.
Si c’est pour du réseau, tu n’as pas vraiment besoin d’interface, et si c’est pour de la video, tu peux afficher directement sur une console sans passer par X.
Qu’est ce que tu cherches à embarquer ?

En fait je cherche à créer un environnement graphique au look assez “sympatoche” pour une utilisation type PDA de la machine cible. Pour le moment la machine est un kit de développement avec juste un écran tactile (pas de clavier ni de souris), d’où l’utilité de pouvoir accéder au “minimum vital” depuis un simple clique et de pouvoir lancer une application.

J’utilise donc matchbox sur cette machine et j’aimerai étendre ses fonctionnalités car pour le moment c’est très austère (un simple curseur, un fond, switcher entre des applications que si lance au démarrage de mon serveur X). Cela passera sans doute par une réinstallation et une configuration minitieuse du nécessaire, et étant novice dans l’utilisation de matchbox et tout autre windows manager, j’aurais besoin d’une aide vraiment détaillée.

Je pense que c’est un wm intéressant de part son aspect PDA et surtout aussi par le fait qu’il est relativement léger (le nerf de la guerre de mon projet : l’espace de stockage), voici le site de matchbox : projects.o-hand.com/matchbox/

Vu: des capacités graphiques suffisantes pour le web, mais peu d’espace de stockage.
Bon, en fait, ça dépend aussi de nombreuses autres choses.
Par exemple, est ce que c’est pour un usage personnel (config d’une seule machine, envie de pouvoir faire des mises à jour des softs) ou industriel (on fait un “firmware”, et on vend des machines toutes identiques).
Dans le premier cas, il faut compter sur un minimum de 100 Mo de paquets pour installer X.
Il y a aussi un serveur X “allègé”, XkDrive, sans polices vectorielle, et en fb, mais il faut le compiler depuis les sources.

Dans le deuxiême cas, il est possible d’allèger X en enlevant à la main les morceaux inutiles et de le réduire à environ 10 Mo (tout de même).

Ca, c’est en utilisant X.
Par ailleurs, ça vaut pour XFree, parceque j’ai cru voir que depuis récemment, Xorg était devenu modulaire, et je ne connais pas son emprunte disque minimum, etc…

Quoi qu’il en soit, il existe aussi toute une panoplie d’applis (télé/VDO, browser, visualiseur de photos, etc) qui tournent en graphique sur une console, soit avec la svgalib, soit avec le framebuffer, mais en se passant de X.

Mais sinon, tu as raison, je n’avais pas vu que c’etait ce qui etait utilisé sur le Nokia 770, donc ça doit être adapté.
Il y a ion3 aussi.

Sinon, Damn Small Linux fait tenir une debian sur 60Mo, avec X, alors tout est possible…

Tu as quoi comme limitation en mêmoire et en disque, grossièrement ?

Ma limitation en espace mémoire est vraiment très réduite, j’ai à peine 32 Mo d’espace de stockage (sur un composant de type mémoire Flash). Je dois faire tenir dessus mon système d’exploitation, mon application, et des données générées par mon application, autant dire que c’est un défi assez sympa (l’autre clampin à côté qui a ouvert la mer en deux c’est un rigolo ^^).

Voici quelques informations sur ma cible grâce à uname -a :
Linux viper 2.6.11.11-arcom1-1-viper #1 Wed Jun 8 09:44:26 BST 2005 armv5tel unknown

L’architecture est de type ARM (très utilisé pour les PDA), c’est un kit de développement ARCOM possédant une carte viper avec un espace de stockage de 32 Mo. Concernant l’OS déjà présent, je ne pense pas qu’il soit utile de le remplacer, sa taille étant déjà extrèmement réduite. Il y a un matchbox 0.9.2 installé dessus et je pense qu’il faudrait le supprimer pour le réinstaller, ou ajouter le contenu manquant pour étoffer l’affichage.

[code]root@viper root# matchbox --version
usage: matchbox 0.9.2 [options …]
-display
-theme
-use_titlebar <yes|no>
-use_cursor <yes|no>
-use_lowlight <yes|no>
-use_dialog_mode <free|static|const-horiz>
-use_desktop_mode <decorated|plain>
-force_dialogs
-titlebar_panel

Compile time options:
debug build no
XFT support no
Startup Notification support no
Expat support no
XSettings support no
PNG support no
JPG support no
pango support no
Theme support no
gconf support no
composite support no
ping protocol support yes
XRM support no

Visit http://projects.o-hand.com/matchbox for more info.
© 2004 OpenedHand Ltd[/code]

le matchbox que tu as est compilé avec un max d’options desactivées. Si tu en ramène un de distrib, AMA, son emprunte, avec toutes les option, va exploser.
Mais si tu veux en réinstaller un autre, tu peux préparer le paquet sur une autre machine. Au lieu de simplement recompiler le paquet pour ARM, tu t’arrètes à l’étape de déploiment des sources, tu desactives les options inutiles, et tu termines le réempaquetage.
Regardes ici comment se compile un paquet:
us.debian.org/doc/manuals/re … ourcebuild
sinon, je n’ai pas trop le temps de reflechir, là, dc je reflechirais cet AM à ton pb et aux autres idées qui me viennent…

Ok merci de m’aider c’est très gentil, je bosse tout seul sur mon projet et n’étant pas vraiment encore un utilisateur chevronné de Linux et des window manager, ton aide m’est très utile.

J’aime l’embarqué, mais je n’ai jamais l’occasion d’en faire :wink:

Sinon, si tu as un peu d’argent à dépenser, va sur le site de GLMF ( gnulinuxmag.com/ ), regardes les articles qui peuvent t’interresser et eventuellement commandes les anciens numeros.
Leurs préoccupations sont proches des tiennes en ce moment.

Merci du tuyau concernant gnulinuxmag, je possède déja quelque numéro ^^.
J’ai regardé les paquets disponibles et selon moi, les paquets nécessaire sont, corrige moi si je me trompe :

  • libmatchbox
  • matchbox-common
  • matchbox-desktop
  • matchbox-keyboard (génère un clavier virtuel)
  • matchbox-panel
  • matchbox-window-manager

Apparement le clavier virtuel n’est disponible qu’avec la version svn repository, je n’ai pas encore compris ce que c’est. Concernant comment mettre en oeuvre l’installation, j’avoue que je ne vois pas trop par où commencer et comment m’y prendre, la documentation me paraît peut explicite sur le sujet. Il y a comme problème aussi la cross compilation, quand dois-je la faire intervenir, sur tout les paquets (j’utilise pour cross compiler l’argument --host=arm-linux aau ./configure) ? J’ai commencé à tenter d’installer et je me trouve vite perdu sous les erreurs et je me demande toujours comment rendre disponible les options inactives.

Pourrais-tu m’expliquer la démarche d’installation pas à pas s’il te plaît si tu as le temps et surtout la patience ?

Installer matchbox sur un PDA, c’est la dernière étape de l’installation de Linux sur PDA.
C’est comme vouloir installer une nouvelle roue sur un VTT, l’essentiel, c’est débord d’avoir le cadre, le guidon, et tout ce qui va avec. :laughing:
Bref, il faut d’abord installer Linux sur le PDA. Ensuite, si tu arrives jusqu’à la console Linux, tu pourras installer Matchbox, via un serveur X (Xfree86, Xorg).
J’imagine qu’en pratique, il faut racorder le PDA à un PC, et faire des installations à distance.
Tu devrais trouver comment installer Linux sur un PDA en fouillant sur le net.

[edit]
Apparremment, tu as installé Linux et tu disposes d’un paquet Matchbox. Il suffirait de reinstaller le paquet Matchbox, en faisant un “apt-get install matchbox --reinstall”, en supposant que tu disposes d’un fichier /etc/apt/sources.list adéquat. Tu dois forcément avoir un serveur X aussi.

Oui j’ai déjà un Linux sur ma machine, par contre je ne dispose pas de la commande apt-get sur celui-ci, il y a vraiment le strict minimum niveau commandes disponibles donc c’est pas la peine de penser au apt-get. Je dispose aussi d’un serveur X sur ma machine, mais il n’y a pas grand chose dessus : un curseur (pilotable en touchant l’écran tactile) et un fond d’écran uni.

Avec l’installation que j’ai, le serveur X se résume plus à un support pour lancer une application graphique à son démarrage qu’à autre chose. C’est pourquoi j’aimerai étoffer son utilisation en étendant les possiblités offertes par matchbox, j’ai vu qu’il y avait des choses assez sympatique comme le clavier virtuel. Si quelqu’un savait comment installer matchbox, celà me serai très util.

Et que donne un “startx matchbox” ?
Tu as un fichier .xinitrc dans ton répertoir home ?
Tu peux quand même installer des applications non-interne, pour installer un matchbox compilé avec plus d’options, par exemple ?

En fait le .xinitrc est commun à chacun des utilisateurs, son chemin est :
/usr/X11R6/lib/X11/xinit/xinitrc

Voici son contenu :

[code]!/bin/sh

$XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/Xmodmap

merge in defaults and keymaps

if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi

if [ -x $HOME/.xinitrc ]; then
exec $HOME/.xinitrc
fi

start some nice programs

xsetroot -solid Aquamarine4
/opt/essai1 &
/opt/essai2 &
if [ -x “$X_WINDOW_MANAGER” ] ; then
exec $X_WINDOW_MANAGER
elif [ -x /usr/bin/matchbox ] ; then
exec /usr/bin/matchbox
elif [ -x /usr/X11R6/bin/twm ] ; then
exec /usr/X11R6/bin/twm
else
else
echo “No window manager found” 1>&2
fi[/code]
Celui-ci me lance bien matchbox en même temps que mon startx (vérification avec un ps aux), je me retrouvre au lancement de startx avec deux fenêtres (mes deux appli : essai1 et essai2) dont je peux switcher de l’une à l’autre en appuyant sur un bouton dans la barre de l’application (elle se lance toutes les deux en plein écran donc je switch entre les deux grâce à ce petit bouton, sans doute créé par matchbox).

Maintenant concernant le fait d’installer d’autre applications, je peux très bien le faire, j’aimerai installer un autre matchbox plus étoffé que celui présent sur cette machine. Je peux installer d’autres applications aussi tout en gardant à l’esprit la contrainte d’espace de stockage très limité.

Pour le moment j’en suis à la compilation de matchbox pour pouvoir ensuite l’envoyer vers ma cible, mais javoue que j’ai du mal avec la compilation de matchbox et que toute aide sur ce point serait la bienvenue. Merci en tout cas de la patience dont vous faites preuve.

Bon, désolé de la coupure de son, mais j’essaye désespérément de ripper un CD depuis 24h et ca ne marche pas :frowning: .
Si c’est une debian, ton linux, même si tu n’as pas apt-get, tu as forcément des outils de bas niveau pour installer les paquets.
As tu essayé d’installer un paquet avec dpkg -i ?
Parceque si ça marche, reste à améliorer la cross compil, et tu pourra préparer des paquets propres.
Malheureusement, les articles que j’ai trouvés dans GLMF ne presentent que des explications d’install “from scratch” ou des compils sur le PDA. Je n’ai rien trouvé d’interressant quand à la configuration de la cross compil pour l’instant…
Sinon, tu connais ça ?

emdebian.org/

Le dpkg -i fonctionne très bien sur ma cible, je l’ai d’ailleurs utilisé pour installer différents petits trucs. Concernant emdebian j’ai eu connaissance du projet et je dois dire qu’il semble intéressant, mais il semble encore trop imposant pour une utilisation sur ma cible.

Je bloque vraiment à la base pour le moment, je ne vois pas trop comment faire pour pouvoir faire mes compilations à partir des fichiers que j’ai récupéré sur le site. Est-ce que ça se compile tout ensemble ? Comment pouvoir sélectionner les options que je souhaite…

En clair je sais pas trop comment mettre en oeuvre tout ceci. Si vous voyez la démarche à suivre, j’aimerai bien si possible que vous m’expliquiez comment me débrouiller, si possible même m’indiquer les lignes de commandes à mettre en oeuvre, je sais que j’en demande beaucoup.

as tu reussi à cross-compiler un “hello world” qui fonctionne sur ton kit, déjà ?
sinon, si tu veux qu’on t’aide à corriger tes erreurs dans la compil MatchBox, il serait souhaitable que tu donnes quelques erreurs que tu juges “symptomatiques”, ou au moins la dernière pile d’erreur (le dernier message d’'erreur, et les sorties suivantes).
Et enfin, si tu veux faire propre, autant recompiler matchbox depuis les sources debian, pour rester homogéne sur ta distrib, non ?

Oui j’ai déjà cross compilé
plusieurs programmes qui tourne bien sur ma cible.

Ensuite concernant ma compilation de matchbox , que j’effectue sur mon pc, pas sur ma cible :

  • Je decompresse tout les paquet à installer
  • Je commence par libmatchbox : (voici les commandes que je saisi)

./configure --prefix=/usr --host=arm-linux --enable-pango --enable-jpeg make make install-strip DESTDIR=/tmp/libmatch-box1.8

  • Au tour de match-box-common-0.9.1 :

Je tombe sur l’erreur suivante :

checking for libmb >= 1.1... Package libmb was not found in the pkg-config search path. Perhaps you should add the directory containing `libmb.pc' to the PKG_CONFIG_PATH environment variable No package 'libmb' found configure: error: *** libmb required and not found ***

Lors de l’installation de libmatchbox j’ai aperçu ce message :

[code]Libraries have been installed in:
/usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR’
flag during linking and do at least one of the following:

  • add LIBDIR to the `LD_LIBRARY_PATH’ environment variable
    during execution
  • add LIBDIR to the `LD_RUN_PATH’ environment variable
    during linking
  • use the `-Wl,–rpath -Wl,LIBDIR’ linker flag
  • have your system administrator add LIBDIR to `/etc/ld.so.conf’[/code]

J’ai essayé aussi d’installer la libmatchbox sur mon pc en faisant :
./configure
make
make install

J’ai essayé aussi d’ajouté à LIBDIR le path de ma librairie mais je n’ai pas réussi.

Pour l’erreur “libmb”, as tu vu si il y a moyen de passer un path au linker avec ./configure --help, pour lui dire ou se trouve la lib matchbox ?
Je vais aller sur le site matchbox pour voir comment ils font leurs compil, mais si ta machine de compil est une debian, je ne sais pas si ca ne serait pas plus simple de regarder dans le maintainer guide comment on fait une cross compil de paquet, parcequ’AMA, ca doit être nettement plus simple.[/code]

Je n’ai pas vu de moyen de passer un path au linker lors du ./configure. Je précise aussi, j’ai oublié de le faire, ma machine de compilation n’est pas une debian, c’est une aurox. En tout cas je ne pense pas que mes soucis viennent de la cross compilation, je pense plutôt que cela vient de ma démarche de compilation qui ne doit pas être bonne.