====== Applications de base ====== Installation et configuration des bibliothèques et des applications de base. ===== À propos ===== Ce chapitre décrit l'installation des bibliothèques 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 affecter 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 ([[http://www.gnu.org/software/bc/|www.gnu.org/software/bc/]]) fournit 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 disponible avec Busybox. Pour la copie de dc, il faut supprimer le liens de dc vers BusyBox s'ils existent. Nous utilisons 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/|http://www.zlib.net/]]) fournit des fonctions de compression et de décompression, utilisées entre autres, 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 compatibles perl ===== Le paquet pcre ([[http://www.pcre.org/|http://www.pcre.org/]]) fournit les bibliothèques des fonctions d'expressions régulières compatibles Perl PCRE, utilisées entre autres 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/|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 gagner 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/* Installation 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|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 publiques. Dropbear fournit aussi une version de scp, qu'il faut compiler avec 'make 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/* Installation du client, et des outils associés dans /usr/bin, et installation du serveur 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 serveur Dropbear sont par défaut dans /etc/dropbear : # mkdir $fs/etc/dropbear Pour que le serveur fonctionne, 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 ([[http://www.lighttpd.net/|www.lighttpd.net]]) est un serveur web puissant, léger, et sécurisé. Le projet est très actif, et la configuration du serveur est 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 copier 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 voir ce que vous voulez 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 fourni par SliTaz est autodocumenté, 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 ([[http://www.netfilter.org/|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 parefeu 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*" ([[http://www.sqlite.org/|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 ([[http://www.cdrkit.org/|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/|http://www.gnu.org/software/cpio/]]) fournit des outils de manipulation des archives au format cpio. Ce format d'archive est utilisé pour les paquets SliTaz et l'image initramfs du CDROM. À 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 plupart des fonctions de base fournies par le puissant langage qu'est Perl. Vous trouverez plus d'infos dans l'archive source et le fichier "README.micro". Nous appliquons 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 [[http://ftp.kernel.org/pub/linux/utils/kernel/module-init-tools/|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 supportte 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 été 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 cherchons 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 [[http://www.slitaz.org/get/tools.html|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|Base ncurses.]] Il décrit l'installation et la configuration des bibliothèques et d'applications ncurses.