====== X window system ====== Installation et configuration de base du système de fenêtres X. ===== À propos ===== Ce chapitre décrit l'installation et la configuration du système X window sur SliTaz. Nous allons installer les bibliothèques pour les polices, expat, XML, un serveur graphique (Xvesa), un émulateur de terminal (XTerm), divers petits outils, et un gestionnaire de fenêtres (JWM). Nous vous proposons aussi d'installer les bibliothèques JPEG et le navigateur web Links (en français). ==== Variable d'environnement ($fs) ==== Pour ne pas spécifier tout le chemin vers le répertoire rootfs, export de la variable d'environnement: # export fs=$PWD/rootfs Pour vérifier: # echo $fs ===== expat-2.0.0 - XML parser library ===== Expat ([[http://expat.sourceforge.net/|http://expat.sourceforge.net/]]) contient des bibliothèques d'analyse XML: # cd .. # wget http://switch.dl.sourceforge.net/sourceforge/expat/expat-2.0.0.tar.gz # tar xzf expat-2.0.0.tar.gz # cd expat-2.0.0 # ./configure --sysconfdir=/etc --prefix=/usr \\ --mandir=/usr/share/man # make # make DESTDIR=$PWD/_pkg install # strip -v _pkg/usr/lib/* # strip -v _pkg/usr/bin/* Par la suite nous allons installer 'xterm' qui a besoin de libexpat.so.0, il suffit de créer un lien symbolique sur libexpat.so.1.5.0, et le tour est joué. Ensuite vous pouvez installer les bibliothèques, et l'application 'xmlwf' dans le rootfs: # cd _pkg/usr/lib # ln -s libexpat.so.1.5.0 libexpat.so.0 # cp -a *.so* $fs/usr/lib # cd .. # cp -a bin/* $fs/usr/bin # cd ../.. ==== libs ==== Bibliothèques utilisées par xmlwf: libexpat.so.1 => /usr/lib/libexpat.so.1 (0x40021000) libc.so.6 => /lib/tls/libc.so.6 (0x40041000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) ===== freetype-2.3.1 - Bibliothèques de police sytème ===== Le paquet freetype ([[http://www.freetype.org/|http://www.freetype.org/]]) contient des bibliothèques utilisées par X pour la configuration des polices du système: # cd .. # wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.1.tar.bz2 # tar xjf freetype-2.3.1.tar.bz2 # cd freetype-2.3.1 # ./configure --sysconfdir=/etc --prefix=/usr \\ --mandir=/usr/share/man # make # make DESTDIR=$PWD/_pkg install # strip -vs _pkg/usr/lib/* # cp -a _pkg/usr/bin/* $fs/usr/bin # cp -a _pkg/usr/lib/*.so* $fs/usr/lib ===== fontconfig 2.4.2 - Outils de gestion des polices ===== Le paquet fontconfig ([[http://www.fontconfig.org/wiki/|www.fontconfig.org/wiki/]]) fourni la bibliothèque libfontconfig, utilisée par de nombreux programme sous X. Note: XFree86 fournit aussi ces bibliothèques, et les utilitaires. Nous avons choisi d'utiliser le paquet original, car il fonctionne mieux avec JWM: # cd .. # wget http://fontconfig.org/release/fontconfig-2.4.2.tar.gz # tar xzf fontconfig-2.4.2.tar.gz # cd fontconfig-2.4.2 # ./configure --sysconfdir=/etc --prefix=/usr \\ --mandir=/usr/share/man --localstatedir=/var # make # make DESTDIR=$PWD/_pkg install # strip -v _pkg/usr/bin/* # strip -v _pkg/usr/lib/* # cp -a _pkg/usr/bin/* $fs/usr/bin # cp -a _pkg/usr/lib/*.so* $fs/usr/lib # cp -a _pkg/etc $fs # cp -a _pkg/var $fs ==== libs ==== Un 'ldd' sur fc-cache donne, le bibliothèques ci-dessous. Vous pouvez utiliser libfreetype d'Xfree86: libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7f12000) libz.so.1 => /usr/lib/libz.so.1 (0xb7eff000) libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7edf000) libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb7eb0000) libc.so.6 => /lib/tls/libc.so.6 (0xb7d7b000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7f8c000) ===== Xserver - Serveur graphique Xvesa d'Xfree86 ===== Nous allons utiliser la versions binaires du serveur Xvesa et les polices distribuée par Xfree86.org ([[http://www.xfree86.org/|www.xfree86.org/]]). Nous allons par contre, copier les bibliothèques d'Xorg depuis le système hôte, car elle seront utilisées par la compilation des applications X, Xvesa fonctionne très bien comme ça et cela simplifie les choses. Vous pouvez aussi [[xorg|recompiler les paquets d'Xorg]] sur votre système de développement. ==== Xtinyx server - Xvesa ==== Le serveur Xvesa est très léger, et utilise peu de bibliothèques, il se trouve dans l'archive Xtinyx.tgz. Téléchargement et installation dans /usr/bin du rootfs de SliTaz: # cd .. # mkdir -p XFree86-4.6.0 && cd XFree86-4.6.0 # wget http://ftp.xfree86.org/pub/XFree86/4.6.0/binaries/Linux-ix86-glibc23/Xtinyx.tgz # tar xzf Xtinyx.tgz # cp bin/Xvesa $fs/usr/bin # strip $fs/usr/bin/Xvesa # chmod 4711 $fs/usr/bin/Xvesa ==== libs pour Xvesa ==== libz.so.1 => /usr/lib/libz.so.1 (0xb7ed6000) libm.so.6 => /lib/tls/libm.so.6 (0xb7eb1000) libc.so.6 => /lib/tls/libc.so.6 (0xb7d7e000) /lib/ld-linux.so.2 (0xb7ef8000) ==== rgb.txt - Les couleurs RGB sous X ==== Le fichier de configuration des couleurs utilisée par le serveur X se nomme "rgb.txt", nous vous proposons de copier celui du système hôte. La bibliothèque libX11.so d'Xorg va chercher les fichiers de configuration dans /usr/share/X11, et le serveur Xvesa dans /usr/X11R6/lib/X11, nous allons créer un lien dans /usr/share/X11 afin de satisfaire cela: # mkdir -p $fs/usr/share/X11 # cp /usr/share/X11/rgb.txt $fs/usr/share/X11 # chroot $fs /bin/ash /# mkdir -p /usr/X11R6/lib/X11/ /# ln -s /usr/share/X11/rgb.txt /usr/X11R6/lib/X11/rgb.txt /# exit ==== Xfnts - Les polices ==== Pour que le serveur fonctionne il nous faut les polices de base, que vous pouvez télécharger depuis xfree86.org, les compiler depuis les paquets d'Xorg, ou les copier depuis votre système hôte. Les polices du système peuvent se mettre dans différents dossiers, et une fois installées pour devez lancer "lc-cache" pour mettre à jour le cache. Attention les polices prennent de la place, vous pouvez ne copier que le minimum. Le répertoire /usr/share/fonts contient les polices truetype tels que biststream-vera: # wget http://ftp.xfree86.org/pub/XFree86/4.6.0/binaries/Linux-ix86-glibc23/Xfnts.tgz # tar xzf Xfnts.tgz # mkdir -p $fs/usr/X11R6/lib/X11/fonts # mkdir -p $fs/usr/share/fonts/truetype Copie des polices... (# cp -a lib/X11/fonts/* $fs/usr/X11R6/lib/X11/fonts) (# cp -a /usr/share/fonts/truetype/* $fs/usr/share/fonts/truetype Pour regénérer le fichier fonts.dir, il vous faut lancer mkfontdir sur le répertoire en question: # mkfontdir $fs/usr/X11R6/lib/X11/fonts/75dpi Les fichiers de configuration de fontconfig, se trouvent dans /etc/fonts, fourni par le paquet fontconfig. Vous pouvez maintenant lancer 'fc-cache', et pour connaître la liste des polices vous pouvez utiliser 'fc-list'. Vous pouvez faire cela avec un chroot dans le rootfs: # chroot $fs /bin/ash # fc-cache -v # fc-list # exit ==== Xlib locale - Les fichiers de localisation ==== Sur SliTaz nous avons installé que 4 locales, C, iso8859-1, iso8859-15, et iso8859-2 provenant de la [[xorg|compilation d'Xorg]]. Vous pouvez copier les fichiers depuis le système hôte ou utiliser les fichiers distribuées par XFree86. Exemple de copie de toutes les locales depuis le système hôte: # mkdir -p $fs/usr/share/X11/locale # cp -a /usr/share/X11/locale/* $fs/usr/share/X11/locale ==== Utilisation de X ==== À noter que vous pouvez déjà utiliser Xvesa comme terminal X, si vous avez une machine sur le réseau acceptant les connexions Xdmcp. Pour cela vous pouvez lancer le server avec l'option "-query", exemple: # Xvesa -ac -shadow -screen 1024x768x24 -query 192.168.0.2 ===== xterm - Emulateur de terminal ===== Le paquet Xterm ([[http://invisible-island.net/xterm/|invisible-island.net/xterm/]])fournit un émulateur de terminal pour X: # wget ftp://invisible-island.net/xterm/xterm-223.tgz # tar xzf xterm-223.tgz # cd xterm-223 # ./configure --prefix=/usr --sysconfdir=/etc \\ --mandir=/usr/share/man --localstatedir=/var \\ --with-app-defaults=/usr/share/X11/app-defaults \\ --build=i486-pc-linux-gnu --host=i486-pc-linux-gnu # make # make DESTDIR=$PWD/_pkg install # strip _pkg/usr/bin/* # cp _pkg/usr/bin/* $fs/usr/bin # cp -a _pkg/usr/share/X11/* $fs/usr/share/X11 ==== libs ==== Un ldd sur XTerm, nous fait copier les bibliothèques manquantes depuis le système hôte et n'oubliez pas de stripper le tout à la fin: libXft.so.2 => /usr/lib/libXft.so.2 (0xb7f09000) libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb7f00000) libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb7ed5000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7e68000) libz.so.1 => /usr/lib/libz.so.1 (0xb7e54000) libX11.so.6 => /usr/lib/libX11.so.6 (0xb7d68000) libXaw.so.7 => /usr/lib/libXaw.so.7 (0xb7d0f000) libXmu.so.6 => /usr/lib/libXmu.so.6 (0xb7cfa000) libXext.so.6 => /usr/lib/libXext.so.6 (0xb7cec000) libXt.so.6 => /usr/lib/libXt.so.6 (0xb7c9e000) libSM.so.6 => /usr/lib/libSM.so.6 (0xb7c96000) libICE.so.6 => /usr/lib/libICE.so.6 (0xb7c7f000) libncurses.so.5 => /lib/libncurses.so.5 (0xb7c3c000) libc.so.6 => /lib/libc.so.6 (0xb7b2c000) libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7b0b000) libXau.so.6 => /usr/lib/libXau.so.6 (0xb7b08000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7b03000) libdl.so.2 => /lib/libdl.so.2 (0xb7aff000) libXpm.so.4 => /usr/lib/libXpm.so.4 (0xb7aee000) ===== libpng-1.2.18 - Bibliothèques PNG ===== Les bibliothèques PNG ([[http://libpng.org/pub/png/libpng.html|http://libpng.org/pub/png/libpng.html]])permettent de manipuler et d'utiliser les images au format .png: # wget http://puzzle.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.18.tar.bz2 # tar xjf libpng-1.2.18.tar.bz2 # cd libpng-1.2.18 # ./configure --enable-shared --prefix=/usr \\ --mandir=/usr/share/man # make # make DESTDIR=$PWD/_pkg install # strip _pkg/usr/lib/*.so* # cp -a _pkg/usr/lib/libpng12.so* $fs/usr/lib # cp -a _pkg/usr/bin/libpng12* $fs/usr/bin ===== jwm-2.0 - Gestionnaire de fenêtres ===== Joe's Window Manager ([[http://www.joewing.net/programs/jwm/|http://www.joewing.net/programs/jwm/]]) est un gestionnaire de fenêtres ultra léger, et convivial. C'est le window manager par défaut de SliTaz. Le fichier de configuration principal est dans /etc/jwm/system.jwmrc, comprenant la config du menu et du style: # cd .. # wget http://www.joewing.net/programs/jwm/releases/jwm-2.0.tar.bz2 # tar xjf jwm-2.0.tar.bz2 # cd jwm-2.0 # ./configure --prefix=/usr --mandir=/usr/share/man \\ --sysconfdir=/etc/jwm --disable-xinerama # make # strip src/jwm # cp src/jwm $fs/usr/bin # mkdir $fs/etc/jwm # cp example.jwmrc $fs/etc/jwm/system.jwmrc ==== libs ==== Les bibliothèques que ldd nous aura fourni: libX11.so.6 => /usr/lib/libX11.so.6 (0xb7e35000) libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb7e12000) libXft.so.2 => /usr/lib/libXft.so.2 (0xb7e00000) libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb7df7000) libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb7dcc000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb7d5f000) libz.so.1 => /usr/lib/libz.so.1 (0xb7d4a000) libXpm.so.4 => /usr/lib/libXpm.so.4 (0xb7d3a000) libXext.so.6 => /usr/lib/libXext.so.6 (0xb7d2c000) libc.so.6 => /lib/libc.so.6 (0xb7c1c000) libXau.so.6 => /usr/lib/libXau.so.6 (0xb7c19000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7c14000) libdl.so.2 => /lib/libdl.so.2 (0xb7c0f000) libm.so.6 => /lib/libm.so.6 (0xb7bea000) libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7bc9000) Vous pouvez démarrer le serveur X et JWM avec la commande ci-dessous, ou en créant un script, tel que /usr/bin/startx avec pour contenu: Xvesa -ac -shadow -screen 1024x768x24 & exec jwm ==== Sur SliTaz ==== SliTaz utilise le fichier ~/.xsession pour lancer un session graphique. La commande 'startx' vérifie si il existe, si oui il le lance, sinon il lance le script 'tazx' pour configurer le système X. La page du guide de l'utilisateur au sujet d'X window est dans: /usr/share/doc/slitaz/user-guide/x-window.html, et sur le site web. Nous avons choisi d'utiliser les icons du thème Tango: [[http://tango.freedesktop.org/|http://tango.freedesktop.org/]], que nous n'avons pas compilé. Nous utilisons seulement le minimum, et des images au format 16x16 que nous mettons dans /usr/share/icons. Pour tester JWM, avec une ISO en cuisson: # Xvesa -ac -shadow -screen 800x600x24 & exec jwm ===== jpeg-6b - Bibliothèques JPEG ===== Les bibliothèques de manipulation des images JPEG, et quelques petits utilitaires: # wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz # tar xzf jpegsrc.v6b.tar.gz # cd jpeg-6b # ./configure --enable-shared --prefix=/usr \\ --mandir=/usr/share/man # make # strip .libs/* # cp -a .libs/*.so* $fs/usr/lib # cp .libs/{cjpeg,djpeg,jpegtran} $fs/usr/bin ===== tiff-3.8.2 - Bibliothèques et utilitaires TIFF ===== Les bibliothèques de manipulation des images TIFF, et quelques petits utilitaires en option: # wget ftp://ftp.remotesensing.org/pub/libtiff/tiff-3.8.2.tar.gz # tar xzf tiff-3.8.2.tar.gz # cd tiff-3.8.2 # ./configure --prefix=/usr --mandir=/usr/share/man # make # make DESTDIR=$PWD/_pkg install # strip _pkg/usr/bin/* # strip _pkg/usr/lib/*.so* # cp -a _pkg/usr/lib/*.so* $fs/usr/lib À vous d'installer les utilitaires que vous voulez. ===== links-2.1pre29 - Navigateur web graphique et texte ===== Links ([[http://links.twibright.com/|links.twibright.com]]) est un navigateur web proposant un mode texte et un mode graphique, il est traduit dans de multiples langues, dont le français: # cd .. # wget http://links.twibright.com/download/links-2.1pre28.tar.gz # tar xzf links-2.1pre28.tar.gz # cd links-2.1pre28 # ./configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man \\ --without-directfb --without-ssl --enable-graphics --enable-javascript # make # make DESTDIR=$PWD/_pkg install # strip -v _pkg/usr/bin/* # cp -v _pkg/usr/bin/* $fs/usr/bin ==== libs ==== libtiff.so.3 => /usr/lib/libtiff.so.3 libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0xb7ede000) libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb7eba000) libz.so.1 => /usr/lib/libz.so.1 (0xb7ea7000) libX11.so.6 => /usr/lib/libX11.so.6 (0xb7dbb000) libdl.so.2 => /lib/tls/libdl.so.2 (0xb7db7000) libpcre.so.0 => /usr/lib/libpcre.so.0 (0xb7d96000) libm.so.6 => /lib/tls/libm.so.6 (0xb7d70000) libc.so.6 => /lib/tls/libc.so.6 (0xb7c3e000) libXau.so.6 => /usr/lib/libXau.so.6 (0xb7c3b000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7c36000) /lib/ld-linux.so.2 (0xb7f5d000) ===== Génération de l'initramfs, et d'une image ISO ===== Pour créer une nouvelle image ISO vous pouvez utiliser 'mktaziso' contenu dans [[http://doc.slitaz.org/fr:cookbook:slitaztools|SliTaz tools]]. Ou vous pouvez créer un nouvelle image initramfs, et la copier dans /boot de la racine de cd-rom (rootcd), et pour finir créer un image ISO avec genisoimage: # cd $fs # find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gz # cd .. # cp rootfs.gz rootcd/boot # genisoimage -R -o slitaz-cooking.iso -b boot/isolinux/isolinux.bin \\ -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \\ -V "SliTaz" -boot-info-table rootcd ==== Suite ==== La suite logique du cookbook passe par l'installation des bibliothèques GTK décrite dans le chapitre : [[gtk-libs|GTK+ libs]].