Applications de base

Install et configuration des bibliothèques et des applications de base.

A propos

Ce chapitre décrit l'installations des bibliothèque et des applications de base en mode texte, fournies avec SliTaz.

Affecter une variable d'environnement ($fs)

Une variable d'environnement permet de ne pas spécifier tout le chemin vers le répertoire, mais simplement $NomDeVariable. Nous allons afecter un variable '$fs' pour indiquer le chemin vers le système de fichier racine 'rootfs'. Pour cela vous pouvez vous placer dans le répertoire de travail de SliTaz, et tapez:

 # export fs=$PWD/rootfs

Pour vérifier:

 # echo $fs

bc-1.06 - Calculatrice en mode texte

L'application bc (www.gnu.org/software/bc/) fourni une petite calculette, lors de la compilation l'utilitaire dc est aussi construit mais SliTaz ne l'installe pas. A noter que dc est aussi diponible avec Busybox. Pour la copie de dc, il faut supprimer le liens de dc vers BusyBox si il existe. Nous utilison un répertoire _pkg (package) pour l'installation. Un petit nettoyage des exécutables avec strip et copie des utilitaires:

 # cd src
 # wget http://ftp.gnu.org/pub/gnu/bc/bc-1.06.tar.gz
 # tar xzfv bc-1.06.tar.gz
 # cd bc-1.06
 # ./configure --prefix=/usr --infodir=/usr/share/info \
   --mandir=/usr/share/man
 # make
 # make DESTDIR=$PWD/_pkg install
 # strip -vs _pkg/usr/bin/*
 # cp -avi _pkg/usr/bin/bc $fs/usr/bin

libs

Un petit ldd sur bc devrait donner:

        libc.so.6 => /lib/libc.so.6 (0x40029000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

zlib-1.2.3 - Bibliothèques de compression

Le paquet zlib (http://www.zlib.net/) fourni des fonctions de compression et de décompression, utilisées entre autre, par le serveur SSH dropbear et le serveur X:

 # cd ..
 # wget http://www.gzip.org/zlib/zlib-1.2.3.tar.bz2
 # tar xjfv zlib-1.2.3.tar.bz2
 # cd zlib-1.2.3
 # ./configure --shared --prefix=/usr
 # make
 # strip -vs libz.so*
 # cp -av libz.so* $fs/usr/lib

pcre-7.4 - Expressions régulières compatible perl

Le paquet pcre (http://www.pcre.org/) fourni les bibliothèques des fonctions d'expressions régulières compatible Perl PCRE, utilisées entre autre par le serveur web LightTPD:

 # cd ..
 # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.4.tar.gz
 # tar xzfv pcre-7.4.tar.gz
 # cd pcre-7.4
 # ./configure --prefix=/usr
 # make
 # make DESTDIR=$PWD/_pkg install
 # strip -vs _pkg/usr/bin/*
 # strip -vs _pkg/usr/lib/*
 # cp -av _pkg/usr/bin/* $fs/usr/bin
 # cp -av _pkg/usr/lib/*.so* $fs/usr/lib

e2fsprogs-1.39 - Utilitaires de gestion des systèmes de fichiers

Le paquet e2fsprogs (http://e2fsprogs.sourceforge.net/) fournit les utilitaires pour la manipulation des systèmes de fichiers ext3 et ext2. Nous n'allons pas tout prendre, car cela nous fait gangner de la place. A noter que nous utilisons fsck de Busybox:

 # cd ..
 # wget http://puzzle.dl.sourceforge.net/sourceforge/e2fsprogs/e2fsprogs-1.39.tar.gz
 # tar xzf e2fsprogs-1.39.tar.gz
 # cd e2fsprogs-1.39
 # ./configure --prefix=/usr --with-root-prefix="" \
   --enable-elf-shlibs --disable-evms --sysconfdir=/etc \
   --infodir=/usr/share/info --mandir=/usr/share/man
 # make
 # make DESTDIR=$PWD/_pkg install
 # strip -vs _pkg/sbin/*
 # strip -vs _pkg/lib/*
 # strip -vs _pkg/usr/bin/*
 # strip -vs _pkg/usr/sbin/*
 # strip -vs _pkg/usr/lib/*

Install des utilitaires, des fichiers de configuration, et des bibliothèques dans le rootfs de SliTaz. Attention si vous avez décidé d'utiliser fsck, il ne faut pas écraser un lien Busybox:

 # cp -i _pkg/sbin/{badblocks,blkid,dumpe2fs,e2fsck,e2image} $fs/sbin
 # cp -i _pkg/sbin/{e2label,findfs,logsave,mke2fs,mkfs.*} $fs/sbin
 # cp -i _pkg/sbin/{resize2fs,tune2fs} $fs/sbin
 # cp -a _pkg/lib/* $fs/lib
 # rm -rf $fs/lib/libss*
 # cp -a _pkg/etc/* $fs/etc
 # cp -a _pkg/usr/bin/* $fs/usr/bin
 # cp -a _pkg/usr/sbin/* $fs/usr/sbin
 # cp -ad _pkg/usr/lib/*.so $fs/usr/lib
 # rm -rf $fs/usr/lib/libss*

Vous pouvez aussi copier le fichier de la locale pour le français:

 # mkdir $fs/usr/share/locale
 # cp -a _pkg/usr/share/locale/fr $fs/usr/share/locale

dropbear-0.50 - Client et serveur SSH légé

Dropbear (http://matt.ucc.asn.au/dropbear/dropbear.html) est un petit client et serveur sécurisé, supportant le protocole SSH 2. Dropbear est compatible avec openSSH, et utilise ~/.ssh/authorized_keys pour la gestion des clés public. Dropbear fournit aussi une version de scp, qu'il faut compiler avec 'manke scp':

 # cd ..
 # wget http://matt.ucc.asn.au/dropbear/releases/dropbear-0.50.tar.gz
 # tar xzf dropbear-0.50.tar.gz
 # cd dropbear-0.50
 # ./configure --prefix=/usr
 # make
 # make scp
 # make DESTDIR=$PWD/_pkg install
 # strip -v scp
 # strip -v _pkg/usr/bin/*
 # strip -v _pkg/usr/sbin/*

Install du client, et des outils associés dans /usr/bin, et install du server dans /usr/sbin:

 # cp scp $fs/usr/bin
 # cp -a _pkg/usr/bin/* $fs/usr/bin
 # cp -a _pkg/usr/sbin/* $fs/usr/sbin

libs

        libutil.so.1 => /lib/libutil.so.1 (0x40025000)
        libz.so.1 => /usr/lib/libz.so.1 (0x40028000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x4003b000)
        libc.so.6 => /lib/libc.so.6 (0x40068000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Copie de la bibliothèque libutil.so.1 dans $fs/lib, si ce n'est pas déjà le cas. Les autres bibliothèques devraient être présentes, suite à la construction du système de base:

 # cp -a /lib/libutil* $fs/lib

Configurer Dropbear

Les fichiers de configuration utilisateur sont dans ~/.ssh, contenant authorized_keys et known_hosts. Les répertoire ~/.ssh et le fichier known_hosts, sont créés automatiquement la première fois que l'utilisateur lance dbclient. Les fichiers de configuration système du server Dropbear sont par défaut dans /etc/dropbear:

 # mkdir $fs/etc/dropbear

Pour que le serveur fonctionnent, il faut générer les clés sécurisées avant de démarrer le serveur sur SliTaz. Vous pouvez utiliser dropbearkey avec les commandes ci-dessous:

 # dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
 # dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key

Sur SliTaz vous pouvez démarrer le serveur SSH avec la commande :

 # /etc/init.d/dropbear start

lighttpd-1.4.18 - Serveur web HTTP

LightTPD (www.lighttpd.net) est un serveur web puissant, léger, et sécurisé. Le projet est très actif, et la configuration du serveur et simple. Il supporte les hôtes virtuels, les scripts CGI, et il permet une gestion intelligente de la charge CPU.

 # cd ..
 # wget http://www.lighttpd.net/download/lighttpd-1.4.18.tar.gz
 # tar xzf lighttpd-1.4.18.tar.gz
 # cd lighttpd-1.4.18
 # ./configure -enable-shared --disable-ipv6 --prefix=/usr \
   --libdir=/usr/lib/lighttpd --mandir=/usr/share/man
 # make
 # make DESTDIR=$PWD/_pkg install
 # strip -vs _pkg/usr/bin/*
 # strip -vs _pkg/usr/sbin/*
 # strip -vs _pkg/usr/lib/lighttpd/*

Installation du serveur, et des bibliothèques générées. Nous allons ensuite supprimer copier seulement quelques modules (9) :

 # cp _pkg/usr/bin/* $fs/usr/bin
 # cp _pkg/usr/sbin/* $fs/usr/sbin
 # mkdir $fs/usr/lib/lighttpd
 Modules :
 # cp _pkg/usr/lib/lighttpd/mod_access.so $fs/usr/lib/lighttpd
 # cp _pkg/usr/lib/lighttpd/mod_accesslog.so $fs/usr/lib/lighttpd
 # cp _pkg/usr/lib/lighttpd/mod_alias.so $fs/usr/lib/lighttpd
 # cp _pkg/usr/lib/lighttpd/mod_auth.so $fs/usr/lib/lighttpd
 # cp _pkg/usr/lib/lighttpd/mod_cgi.so $fs/usr/lib/lighttpd
 # cp _pkg/usr/lib/lighttpd/mod_compress.so $fs/usr/lib/lighttpd
 # cp _pkg/usr/lib/lighttpd/mod_rewrite.so $fs/usr/lib/lighttpd
 # cp _pkg/usr/lib/lighttpd/mod_status.so $fs/usr/lib/lighttpd
 # cp _pkg/usr/lib/lighttpd/mod_userdir.so $fs/usr/lib/lighttpd

libs

Il ne devrait vous manquer que libdl.so.2, que nous allons copier:

 # cp -a /lib/libdl* $fs/lib

/var/www - Racine des documents du serveur

Le répertoire /var/www est le répertoire racine des documents servis par défaut. Vous y avez accès via l'url http://localhost/. Ce répertoire peut contenir une page index.html s'affichant automatiquement lors d'une requête. Nous allons créer le répertoire /var/www, à vous de vois ce que vous vouleu y mettre :

 # mkdir -p $fs/var/www

lighttpd.conf - Fichier de configuration de LightTPD

Le fichier de configuration principale de LightTPD se trouve dans /etc/lighttpd, et se nomme lighttpd.conf. Le fichier de configuration fournit par SliTaz est auto documenté, il suffit de le parcourir. Vous trouverez d'autres exemples sur le site web de LightTPD. Vous trouverez aussi un exemple de configuration dans /doc de l'archive de LightTPD:

 # cp -a ../slitaz-tools-1.1/etc/lighttpd $fs/etc

Création du répertoire contenant les fichiers de log:

 # mkdir $fs/var/log/lighttpd

Utilisateur et groupe www

Nous allons ajouter un utilisateur et un groupe pour le serveur web, cela ajoute de la sécurité, et il n'y a aucune raison pour qu'il tourne sous root. L'utilisateur par défaut sur SliTaz est 'www', mais vous pouvez changer cela dans le fichier de configuration lighttpd.conf. L'application adduser de Busybox ayant des limitations nous ajoutons l'utilisateur 'www' manuellement. Nous changeons aussi les permissions sur le répertoire des logs du serveur web:

 # echo "www:x:80:80:www:/var/www:/bin/sh" >> $fs/etc/passwd
 # echo "www:*:13509:0:99999:7:::" >> $fs/etc/shadow
 # echo "www:*:13509:0:99999:7:::" >> $fs/etc/shadow-
 # chroot $fs /bin/ash
 /# addgroup -g 80 www
 /# chown www.www /var/log/lighttpd
 # exit

Pour démarrer le serveur web vous pouvez utiliser le script /etc/init.d/lighttpd fourni dans SliTaz tools, en tapant la commande /etc/init.d/lighttpd start. Vous pouvez aussi automatiser son lancement au boot avec un lien de /etc/init.d/lighttpd pointant vers /etc/rc.d/60lighttpd.

iptables-1.3.7 - Netfilter, pare-feu Linux

Netfilter (www.netfilter.org) est le module qui fournit au noyau Linux les fonctions de pare-feu, de partage de connexions internet (NAT) et d'historisation du trafic réseau. La commande iptables permet de configurer Netfilter, iptables-restore et iptables-save permettent de sauvegarder/restaurer la configuration Netfilter:

 # cd ..
 # wget http://www.netfilter.org/projects/iptables/files/iptables-1.3.7.tar.bz2
 # tar xjf iptables-1.3.7.tar.bz2
 # cd iptables-1.3.7
 # make KERNEL_DIR=../linux-2.6.20 BINDIR=/sbin \
   LIBDIR=/lib MANDIR=/usr/share/man
 # make KERNEL_DIR=../linux-2.6.20 BINDIR=/sbin \
   LIBDIR=/lib MANDIR=/usr/share/man \
   DESTDIR=$PWD/_pkg install
 # strip  _pkg/sbin/*
 # strip  _pkg/lib/iptables/*

Installation des applications iptables*, et des bibliothèques suffisantes pour un firewall basique:

 # cp -a _pkg/sbin/iptables* $fs/sbin
 # mkdir $fs/lib/iptables
 # cp -a _pkg/lib/iptables/{libipt_standard.so,libipt_conntrack.so} \
   $fs/lib/iptables
 # cp -a _pkg/lib/iptables/{libipt_tcp.so,libipt_udp.so} $fs/lib/iptables

Pour satifaire les dépendances d'iptables, il faut copier la bibliothèque libnsl*:

 # cp -va /lib/libnsl* $fs/lib/tls
 # strip $fs/lib/libnsl*

sqlite-3.5.1 - Petit moteur de base de données SQL

Ce paquet fourni sqlite3 et les bibliothèques sqlite3.so* (www.sqlite.org). SQLite est intégré directement aux programmes en utilisant des fichiers de bases de données, il est performant et rapide:

 # cd ..
 # wget http://www.sqlite.org/sqlite-3.5.1.tar.gz
 # tar xzf sqlite-3.5.1.tar.gz
 # cd sqlite-3.5.1
 # ./configure --prefix=/usr --disable-tcl
 # make
 # make DESTDIR=$PWD/_pkg install
 # strip _pkg/usr/lib/*.so*
 # strip _pkg/usr/bin/*

Installation des bibliothèques et de l'utilitaire sqlite3 dans le rootfs de SliTaz:

 # cp -a _pkg/usr/lib/*.so* $fs/usr/lib
 # cp -a _pkg/usr/bin/* $fs/usr/bin

cdrkit-1.1.5 - Outils de manipulation de cdrom et images ISO

cdrkit (www.cdrkit.org) fournit des outils de manipulation de cdrom. SliTaz installe par défaut wodim pour la gravure et genisoimage pour la création d'image ISO (c'est le paquet cdrkit-base-1.1.5). La compilation est un peu particulière (cmake), mais ne devrait pas poser trop de problèmes:

 # cd ..
 # wget http://cdrkit.org/releases/cdrkit-1.1.5.tar.gz
 # tar xzf cdrkit-1.1.5.tar.gz
 # cd cdrkit-1.1.5
 # make
 # make install PREFIX=$PWD/_pkg/usr
 # strip -v _pkg/usr/bin/*
 # strip -v _pkg/usr/sbin/*
 # cp _pkg/usr/bin/genisoimage $fs/usr/bin
 # cp _pkg/usr/bin/wodim $fs/usr/bin

Copie de la bibliothèque libcap.so.1 requise par wodim:

 # cp -a /lib/libcap.so* $fs/lib

cpio-2.8 - Archiveur

cpio (http://www.gnu.org/software/cpio/) fournit des outils de manipulation de s archives au format cpio. Ce format d'archive est utilisé pour les paquets SliTaz et l'image initramfs du cdrom. A noter que Busybox fournit aussi une version de cpio qui permet seulemnt de désarchiver:

 # cd ..
 # wget ftp://sunsite.cnlab-switch.ch/mirror/gnu/cpio/cpio-2.8.tar.gz
 # tar xzf cpio-2.8.tar.gz
 # cd cpio-2.8
 # ./configure --prefix=/usr --bindir=/bin \
   --libexecdir=/usr/bin --mandir=/usr/share/man \
   --infodir=/usr/share/info
 # make
 # make DESTDIR=$PWD/_pkg install
 # strip -v _pkg/bin/*
 # strip -v _pkg/usr/bin/*

Installation de cpio dans /bin et de rmt dans /usr/bin. Vous pouvez aussi installer les fichiers de localisation pour le français:

 # cp -a _pkg/bin/* $fs/bin
 # cp -a _pkg/usr/bin/* $fs/usr/bin
 # cp -a _pkg/usr/share/locale/fr $fs/usr/share/locale

microperl-5.8.8 - Un tout petit Perl

Microperl est une micro implémentation de Perl permettant d'utiliser la plus part des fonctions de base fournies par le puissant langage qu'est Perl. Vous trouverez plus d'infos dans l'archine source et le fichier README.micro. Nous applicaons un petit sed sur le fichier de configuration, pour que microperl cherche les modules dans /usr/lib/perl5. Nous créons aussi un lien pour que les scripts #/usr/bin/perl fonctionnent :

 # wget http://ftp.funet.fi/pub/CPAN/src/perl-5.8.8.tar.gz
 # tar xzf perl-5.8.8.tar.gz
 # cd perl-5.8.8
 # sed -i s/'usr\/local'/'usr'/ uconfig.sh
 # sed -i s/'perl5\/5.9'/'perl5'/ uconfig.sh
 # sed -i s/'unknown'/'i486-pc-linux-gnu'/ uconfig.sh
 # make -f Makefile.micro regen_uconfig
 # make -f Makefile.micro
 # strip microperl
 # cp microperl $fs/usr/bin
 # chroot $fs /bin/ash
 /# cd /usr/bin
 /# ln -s microperl perl
 /# exit

module-init-tools-3.2 - Outils de manipulation des modules du noyau

Les module-init-tools de kernel.org, modprobe, insmod, rmmod, lsmod, que BusyBox fournit aussi. Nous avons fait le choix de les utiliser car nous pouvons compiler modutils/modprobe pour qu'il support les modules compressés (.gz), afin de gagner de la place. Pour cela il faut utiliser l'option --enable-zlib. Ensuite c'est le nettoyage, et la copie des binaires. Nous ne prenons pas tout ce qui a créé, seulement ce dont nous avons besoin, depmod, insmod, modinfo, modprobe, rmmod dans /sbin, et lsmod dans /bin.

 # cd ..
 # wget http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2
 # tar xjf module-init-tools-3.2.tar.bz2
 # cd module-init-tools-3.2
 # ./configure --enable-zlib --prefix=/usr --sbindir=/sbin --bindir=/bin \
   --sysconfdir=/etc --infodir=/usr/share/info --mandir=/usr/share/man
 # make
 # make DESTDIR=$PWD/_pkg install
 # strip -v _pkg/sbin/{depmod,insmod,modinfo,modprobe,rmmod}
 # strip -v _pkg/bin/lsmod
 # cp -i _pkg/sbin/{depmod,insmod,modinfo,modprobe,rmmod} $fs/sbin
 # cp -i _pkg/bin/lsmod $fs/bin
 # cd ..

Copie des modules du kernel

Copie des fichier depuis linux-2.6.20/_pkg.

 # cp -a linux-2.6.20/_pkg/lib/* $fs/lib

Compression des modules du kernel

Compression des modules, cette opération permet de ganger 50% de place environ, nous commençons par nous déplacer dans le rootfs , puis nous chercons tous les fichiers portant l'extension .ko pour les compresser. Vous pouvez aussi faire cela avec le script 'gzmodtaz.sh' contenu dans SliTaz tools:

 # cd $fs

Avec 'gztazmod.sh':

 # cp -v ../src/slitaz-tools-1.1/utils/gztazmod.sh sbin
 # ./sbin/gztazmod.sh lib/modules/2.6.20-slitaz

Ou à la main:

 # cd lib/modules/2.6.20-slitaz
 # find . -name "*.ko" -exec gzip '{}' \;
 # sed 's/\.ko/.ko.gz/g' modules.dep > tmp.dep
 # rm modules.dep
 # mv tmp.dep modules.dep

Génération de l'initramfs, et d'une image ISO

Pour créer une nouvelle image ISO vous pouvez utiliser 'mktaziso' contenu dans 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-test.iso -b boot/isolinux/isolinux.bin \
   -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
   -V "SliTaz" -input-charset iso8859-1 -boot-info-table rootcd

Test iso image:

 # qemu -cdrom slitaz-test.iso

Suite

Le prochain chapitre se nomme Base ncurses. Il décrit l'installation et la configuration des bibliothèques et d'applications ncurses.

Copyright © SliTaz - GNU General Public License;
Documentation publiées sous GNU Free Documentation License et codée en xHTML 1.0 valide.