Page suivante Page précédente Table des matières

7. Installer les applications de base

Dans ce chapitre, nous installerons toutes les applications qui constituent un système Linux de base. Au terme de ce chapitre vous disposerez d'un système Linux pleinement opérationnel. Les chapitres suivants traitent de sujets facultatifs comme par exemple la configuration du réseau, des serveurs et clients Internet (telnet, ftp, http, email) et du système X Window. Vous êtes libre d'ignorer autant de chapitres qu'il vous plaira. Ainsi si vous ne souhaitez pas vous connecter à Internet, vous n'aurez que peut d'intérêt à consulter le chapitre dédié.

Il y a un certain nombre de paquetages que vous devez impérativement installer avant de pouvoir mettre en place les applications de base. En effet un script typique aura besoin de programmes comme rm, grep, sed, mv, cat, cp, diff. Vous devez également pouvoir décompresser des archives, compiler et éditer les liens des applications. Tous les outils correspondants doivent être installés avant toute chose. Ils seront de plus liés statiquement. En effet votre système Linux utilise peut-être une version de bibliothèque C différente de celle qui sera utilisée par le système LFS. Or les applications que vous allez installer dans cette section seraient théoriquement liées avec la bibliothèque C de votre système normal. Ceci pourrait engendrer des conflits de bibliothèque si vous exécutez ces applications sous le système LFS. C'est pourquoi nous devons les lier statiquement dans un premier temps. Puis au cours de la mise en place du système LFS nous lierons à nouveau ces applications avec la bibliothèque C utilisée par le système LFS.

7.1 A propos des symboles de débogage

Par défaut, chaque programme et bibliothèque est compilé avec les symboles de débogage. Cela signifie que vous pouvez exécuter ce programme ou cette bibliothèque par l'intermédiaire d'un débogueur et que ce dernier produira une sortie de l'exécution plus compréhensible. Toutefois ces symboles de débogage augmentent la taille du fichier produit de manière significative. Par convention, tous les logiciels installés dans ce document incluront ces symboles (puisque je ne sais pas si la majorité des lecteurs fait ou non du débogage). Libre à vous de supprimer par la suite les symboles de débogage en utilisant le programme strip de la manière suivante : strip --strip-debug nomdufichier (le fichier doit être au format elf ou a.out). Vous pouvez utiliser des jokers si vous souhaitez traiter plusieurs fichiers d'un coup (exemple : strip --strip-debug $LFS/usr/bin/*).

Si vous vous demandez l'influence des symboles de débogage sur la taille des fichiers, voici quelques statistiques :

Ces tailles sont données à titre indicatif et dépendent grandement du compilateur et de la version de bibliothèque C utilisés, mais au final les résultats avec ou sans symboles de débogage seront comparables. Pour ma part, au terme de ce chapitre et après avoir supprimé les symboles de débogage des fichiers exécutables et bibliothèques, j'ai récupéré environ 102 Mo d'espace disque. Différence remarquable. Mais elle sera encore plus grande en réalisant cette opération au terme du document.

7.2 Préparer le système LFS pour installer les applications de base

Installer Binutils

./configure  
make -e LDFLAGS=-all-static 
make -e prefix=$LFS/usr install 
 

Installer Bzip2

make -e LDFLAGS=-static  
make -e PREFIX=$LFS/usr install 
cd $LFS/usr/bin 
mv bunzip2 bzip2 $LFS/bin 
 

Installer Diffutils

./configure  
make -e LDFLAGS=-static 
make -e prefix=$LFS/usr install 
 

Ce paquetage peut causer des erreurs relatives à l'édition statique des liens sur certaines plateformes. Si c'est votre cas, vous pouvez télécharger une version corrigée du paquetage à l'adresse : http://www.linuxfromscratch.org/download/diffutils-2.7-fixed.tar.gz

Installer Fileutils

./configure --disable-nls  
make -e LDFLAGS=-static 
make -e prefix=$LFS/usr install 
cd $LFS/usr/bin 
mv chgrp chmod chown cp dd df ln ls mkdir mknod mv rm rmdir sync $LFS/bin 
 

Installer GCC sur le système normal si nécessaire

Afin de compiler Glibc-2.1.3, le compilateur gcc-2.95.2 doit être installé sur le système Linux normal. Remarquez que n'importe quelle version supérieure ou égale à 2.8 fera l'affaire. Néanmoins de nombreux systèmes basés sur glibc-2.0 disposent de gcc-2.7.2.3. Celui-ci n'est pas apte à compiler et ne doit pas être utilisé pour compiler glibc-2.1. L'installation de la version 2.95.2 de gcc sur le système normal n'écrasera pas la version déjà en place. Avant de procéder à cette installation, assurez-vous que vous en avez réellement besoin. Vérifiez le numéro de version de votre compilateur au moyen de la commande gcc --version. S'il est supérieur ou égal à 2.8, tout va bien, vous n'avez pas besoin de faire la moindre mise à jour. Cela dit, si vous rencontrez des problèmes lors de la compilation de glibc, n'hésitez pas à installer gcc-2.95.2

mkdir $LFS/usr/src/gcc-build; cd $LFS/usr/src/gcc-build  
../gcc-2.95.2/configure --prefix=/usr/gcc2952  \    
--with-local-prefix=/usr/gcc2952 --with-gxx-include-dir=/usr/gcc2952/include/g++  \    
--enable-shared --enable-languages=c,c++ 
make bootstrap; make install 
 

Installer GCC sur le système LFS

mkdir $LFS/usr/src/gcc-build;cd $LFS/usr/src/gcc-build  
../gcc-2.95.2/configure --enable-languages=c --disable-nls 
make -e LDFLAGS=-static bootstrap 
make -e prefix=$LFS/usr local_prefix=$LFS/usr install 
 

Création des liens symboliques nécessaires

Il est nécessaire de créer quelques liens symboliques afin que chaque application puisse trouver le compilateur et le préprocesseur. Ainsi certains programmes lancent le programme cc, d'autres gcc, certains programmes supposent que cpp est dans /lib (c'est-à-dire /usr/lib sur notre système LFS) et d'autres, dans /usr/bin.

cd $LFS/lib; ln -s ../usr/lib/gcc-lib/<host>/2.95.2/cpp cpp  
cd $LFS/usr/lib; ln -s gcc-lib/<host>/2.95.2/cpp cpp 
cd $LFS/usr/bin; ln -s gcc cc 
 

Remplacez <host> par le répertoire où réside gcc-2.95.2 (i686-unknown-linux dans mon cas). Généralement, vous trouverez deux répertoires différents.

Installer Glibc

Remarque concernant le paquetage glibc-crypt:

-*-*-*-*-*-  
Glibc-crypt n'est pas inclus dans la distribution principale
 de la bibliothèque GNU C du fait de restrictions gouvernementales, principalement
 en France, Russie et Etats-Unis, concernant la diffusion et l'utilisation de
 logiciels de cryptage. Consultez la note "Legal Problems" du manuel pour plus
 d'informations.  
En particulier, les Etats-Unis interdisent l'exportation de ce logiciel
 sans licence, même par Internet. Ainsi ne le téléchargez pas sur le site FTP
 principal de la FSF (ftp.gnu.org) si vous résidez à l'extérieur des Etats-Unis.
 Ce logiciel a été complètement développé à l'extérieur des Etats-Unis.-*-*-*-*-*- 
 

"Ce logiciel" fait référence au paquetage glibc-crypt disponible sur ftp://ftp.gwdg.de/pub/linux/glibc. Cette loi n'affecte que les personnes ne résidant pas aux Etats-Unis. Il n'est pas interdit d'importer des logiciels basés sur DES, donc si vous résidez aux Etats-Unis, vous êtes libre de l'importer depuis ce site allemand.

# Begin configparms  
slibdir=/lib 
sysconfdir=/etc 
# End configparms 
 

mkdir $LFS/usr/src/glibc-build;cd $LFS/usr/src/glibc-build  
../glibc-2.1.3/configure --enable-add-ons 
make; make install_root=$LFS install 
 

mkdir $LFS/usr/src/glibc-build; cd $LFS/usr/src/glibc-build  
CC=/usr/gcc2952/bin/gcc ../glibc-2.1.3/configure --enable-add-ons 
make; make install_root=$LFS install 
 

Copier les anciens fichiers de la bibliothèque NSS

Si votre système Linux normal est basé sur glibc-2.0.x, vous devez copier les fichiers de la bibliothèque NSS sur le système LFS. Quelques programmes liés statiquement ont besoin de cette bibliothèque, notamment ceux recherchant les noms, identifiants et groupes des utilisateurs. Vous pouvez vérifier quelle est la version de bibliothèque C utilise grâce à la commande : ls -l libc.so.*

Votre système est basé sur glibc-2.0 si l'affichage produit ressemble à : /lib/libc.so.6 -> libc-2.0.7.so

Votre système est basé sur glibc-2.1 si l'affichage produit ressemble à : /lib/libc.so.6 -> libc-2.1.2.so

Si vous avez un fichier libc-2.0.x.so (où x est le numéro de micro version comme par exemple 7), copiez les fichiers de la bibliothèque NSS grâce à la commande : cp -av /lib/*nss* $LFS/lib

Installer grep

./configure --disable-nls  
make -e LDFLAGS=-static 
make -e prefix=$LFS/usr install 
 

Ce paquetage peut causer des erreurs relatives à l'édition statique des liens sur certaines plateformes. Si c'est votre cas, vous pouvez télécharger une version corrigée du paquetage à l'adresse : http://www.linuxfromscratch.org/download/grep-2.4-fixed.tar.gz

Installer gzip

./configure  
make -e LDFLAGS=-static 
make -e prefix=$LFS/usr install 
cd $LFS/usr/bin 
mv gunzip gzip $LFS/bin 
 

Ce paquetage peut causer des erreurs de compilation sur certaines plateformes. Si c'est votre cas, vous pouvez télécharger une version corrigée du paquetage à l'adresse : http://www.linuxfromscratch.org/download/gzip-1.2.4-fixed.tar.gz

Installer Make

./configure  
make -e LDFLAGS=-static 
make -e prefix=$LFS/usr install 
 

Installer Sed

./configure  
make -e LDFLAGS=-static 
make -e prefix=$LFS/usr install 
mv $LFS/usr/bin/sed $LFS/bin 
 

Ce paquetage peut causer des erreurs relatives à l'édition statique des liens sur certaines plateformes. Si c'est votre cas, vous pouvez télécharger une version corrigée du paquetage à l'adresse : http://www.linuxfromscratch.org/download/sed-3.02-fixed.tar.gz

Installer Sh-utils

./configure --disable-nls  
make -e LDFLAGS=-static 
make -e prefix=$LFS/usr install 
cd $LFS/usr/bin 
mv date echo false pwd stty su true uname hostname $LFS/bin 
 

Installer Tar

./configure --disable-nls  
make -e LDFLAGS=-static 
make -e prefix=$LFS/usr install 
mv $LFS/usr/bin/tar $LFS/bin 
 

Installer Textutils

./configure --disable-nls  
make -e LDFLAGS=-static 
make -e prefix=$LFS/usr install 
mv $LFS/usr/bin/cat $LFS/bin 
 

Installer Util-linux

./configure  
cd lib;make 
cd ../mount;make -e LDFLAGS=-static 
cp mount umount $LFS/bin 
cp swapon $LFS/sbin 
 

7.3 Installer les applications de base

L'installation de toutes les applications est franchement répétitive et vous pensez peut-être qu'il serait plus simple de donner un mode d'emploi générique et d'ajouter quelques explications concernant les paquetages qui ne suivraient pas ce mode d'emploi. Bien que je sois d'accord avec vous sur ce point, j'ai délibérément choisi d'écrire le mode d'emploi pour chaque paquetage. Cela permet d'éviter toute confusion ou erreur.

Avant d'aller plus loin dans l'installation, vous devez démarrer le système LFS. Pour ce faire, vous devez déterminer quelle partition est utilisée comme swap par votre système. Vous trouverez cette information dans le fichier /etc/fstab. La ligne concernée ressemble à : /dev/hda6 none swap sw 0 0 . Le quatrième champ de la ligne doit contenir 'sw'. Cela indique qu'il s'agit de la partition de swap. Vous devez alors noter quelque part la désignation de cette partition (comme par exemple /dev/hda6 dans notre cas). Lorsque vous avez déterminé quelle partition est celle de swap, vous pouvez redémarrer la machine.

Remonter la partition et activer le swap

Avant d'être en mesure d'installer des applications supplémentaires depuis le système LFS, vous devez remonter la partition en mode lecture/écriture. Il est également nécessaire d'activer la partition de swap de manière à éviter tout risque de saturation de mémoire au cours de compilations importantes (par exemple la compilation de gcc):

mount -o remount,rw / /  
/sbin/swapon <swap device> 
 

Installer GCC

mkdir $LFS/usr/src/gcc-build;cd $LFS/usr/src/gcc-build  
../gcc-2.95.2/configure --with-gxx-include-dir=/usr/include/g++  \    
--enable-shared --enable-languages=c,c++ 
make bootstrap; make install 
 

Installer Bison

./configure --datadir=/usr/share/bison  
make; make install 
 

Installer Mawk

./configure  
make; make install 
cd /usr/bin; ln -s mawk awk 
 

Installer Findutils

./configure  
make; make install 
 
 

Ce paquetage peut causer des erreurs de compilation sur certaines plateformes. Si c'est votre cas, vous pouvez télécharger une version corrigée du paquetage à l'adresse : http://www.linuxfromscratch.org/download/findutils-4.1-fixed.tar.gz

Installer Termcap

./configure  
make; make install 
 

Installer Ncurses

./configure --with-shared  
make; make install 
 

Installer Less

./configure  
make; make install 
mv /usr/bin/less /bin 
 

Installer Perl

./configure.gnu
make; make install 
 

Remarquez que nous sautons l'étape 'make test', car pour le moment le système n'est pas en mesure de lancer le test de Perl. Nous faisons donc confiance à la compilation.

Installer M4

./configure  
make; make install 
 

Installer Texinfo

./configure  
make; make install 
 

Installer Autoconf

./configure  
make; make install 
 

Installer Automake

./configure  
make install 
 

Installer Bash

./configure  
make; make install 
mv /usr/bin/bash /bin 
 

Installer Flex

./configure  
make; make install 
 

Installer Binutils

./configure  
make; make install 
 

Installer Bzip2

make; make install  
cd /usr/bin; mv bunzip2 bzip2 /bin 
 

Installer Diffutils

./configure  
make; make install 
 

Installer E2fsprogs

./configure  
make; make install 
mv /usr/sbin/mklost+found /sbin 
 

Installer File

./configure  
make; make install 
 

Installer Fileutils

./configure  
make; make install 
cd /usr/bin 
mv chgrp chmod chown cp dd df ln ls mkdir mknod mv rm rmdir sync /bin 
 

Installer Grep

./configure  
make; make install 
 

Installer Groff

./configure  
make; make install 
 

Installer Gzip

./configure  
make; make install 
cd /usr/bin; mv z* gunzip gzip /bin 
 

Installer Ld.so

cd util; make ldd ldconfig  
cp ldd /bin; cp ldconfig /sbin 
rm /usr/bin/ldd 
 

Installer Libtool

./configure  
make; make install 
 

Installer Linux86

cd as  
make; make install 
cd ../ld 
make ld86; make install 
 

Installer Lilo

make; make install  
 

Installer Make

./configure  
make; make install 
 

Installer Sh-Utils

./configure  
make; make install 
cd /usr/bin 
mv date echo false pwd stty su true uname hostname /bin 
 

Installer Shadow Password Suite

./configure   
make; make install 
cd etc 
cp limits login.access login.defs.linux shells suauth /etc 
mv /etc/login.defs.linux /etc/login.defs 
cd /usr/sbin 
mv chpasswd dpasswd groupadd groupdel groupmod logoutd mkpasswd  \    
newusers useradd userdel usermod grpck pwck vipw grpconv grpunconv  \    
pwconv pwunconv /sbin 
 

Installer Man

./configure -default  
make all; make install 
 

Installer Modutils

./configure  
make; make install 
 

Installer Procinfo

make; make install  
 

Installer Procps

gcc -O3 -Wall -Wno-unused -c watch.c  
make; make -e XSCPT="" install 
mv /usr/bin/kill /bin 
 

Installer Psmisc

make; make install  
 

Installer Sed

./configure  
make; make install 
mv /usr/bin/sed /bin 
 

Installer le démon start-stop

make start-stop-daemon  
cp start-stop-daemon /sbin 
cp start-stop-daemon.8 /usr/share/man/man8 
 

Installer Sysklogd

make; make install  
 

Installer Sysvinit

cd src  
make; make install 
 

Install Tar

./configure  
make; make install 
mv /usr/bin/tar /bin 
 

Installer Textutils

./configure  
make; make install 
mv /usr/bin/cat /bin 
 

Installer Vim

./configure  
make; make install 
 

Installer Util-linux

HAVE_PASSWD=yes  
HAVE_SLN=yes 
HAVE_TSORT=yes 
 

groupadd -g 5 tty  
./configure 
make; make install 
 

7.4 Suppression des anciens fichiers de la bibliothèque NSS

Si vous avez copié les fichiers de la bibliothèque NSS de votre système Linux normal vers le système LFS (car votre système normal utilise glibc-2.0), il est temps de les supprimer en tapant:

rm /lib/libnss*.so.1 /lib/libnss*2.0*  
 

7.5 Configurer les applications

Maintenant que toutes les applications sont installées, vous devez en configurer certaines afin qu'elles fonctionnent correctement.

Configurer Glib

Vous devez créer le fichier /etc/nsswitch.conf. Bien que glibc fournisse des valeurs par défaut si ce fichier est absent ou corrompu, celles-ci sont incompatibles avec le fonctionnement réseau du système que nous aborderons plus tard. Par ailleurs, vous devez également régler le fuseau horaire. Voici donc comment procéder :

# Begin /etc/nsswitch.conf  
passwd: files 
group: files 
shadow: files 
  
hosts: files dns 
networks: files 
  
protocols: db files 
services: db files 
ethers: db files 
rpc: db files 
  
netgroup: db files 
# End /etc/nsswitch.conf 
 

La sortie de tzselect ressemble à "EST5EDT" ou "Canada/Eastern". Le lien symbolique que vous devez créer avec cette information sera dans ce cas : ln -s /usr/share/zoneinfo/EST5EDT /etc/localtime ou ln -s /usr/share/zoneinfo/Canada/Eastern /etc/localtime

Configurer LILO

Il n'est pas nécessaire de créer le fichier de configuration de lilo de toute pièce. Utilisez plutôt le fichier de votre système Linux normal. Ce fichier est différent pour chaque machine et je ne peux donc pas vous donner de modèle. Comme il n'y a aucune raison de modifier la configuration LILO actuelle de votre système, contentez-vous de copier le fichier original sans le modifier.

cp /mnt/original/etc/lilo.conf /etc  
cp /mnt/original/boot/* /boot 
 

Si votre système Linux normal ne sauvegarde pas les images des noyaux dans le répertoire /mnt/original/boot, cherchez alors dans le fichier lilo.conf l'emplacement adéquat et copiez les images dans le répertoire où lilo s'attend à les trouver. Ainsi si lilo indique que le noyau se trouve dans /boot/kernel, vous devez copier le noyau contenu dans /mnt/original/boot/kernel vers /boot/kernel. Vous pouvez également copier le noyau dans /boot et modifier le fichier lilo.conf pour tenir compte de ce changement. Ces deux méthodes sont valables, à vous de choisir.

Configurer Sysklogd

# Begin /etc/syslog.conf  
  
auth,authpriv.* -/var/log/auth.log 
*.*;auth,authpriv.none -/var/log/sys.log 
daemon.* -/var/log/daemon.log 
kern.* -/var/log/kern.log 
mail.* -/var/log/mail.log 
user.* -/var/log/user.log 
*.emerg * 
  
# End /etc/syslog.conf 
 

Configurer Shadow Password Suite

Ce paquetage contient notamment les utilitaires nécessaires pour modifier les mots de passe des utilisateurs et ajouter ou supprimer de nouveaux groupes et utilisateurs. Je n'expliquerai pas ce que 'password shadowing' signifie. Vous trouverez toutes les informations utiles dans les fichiers de documentation et HOWTO. Il y a cependant une chose que vous devez garder à l'esprit : si vous décidez d'utiliser le support 'shadow', tous les programmes qui ont besoin de vérifier les mots de passe (xdm, les démons ftp, pop3d, etc) doivent être compatible avec ce support.

Même si vous pensez que vous n'avez pas besoin d'utiliser les 'shadowed passwords' (NDT: littéralement mots de passe masqués) (après avoir lu la documentation à ce sujet), vous devez néanmoins conserver l'archive correspondante car les outils qu'elle contient fonctionnent également sans 'shadow password'. Notez que vous pouvez choisir à tout moment d'activer ou de désactiver les mots de passe 'shadow'.

Consultez la section 5 du fichier Shadow-Password-HOWTO. Vous y apprendrez comment tester si le système 'shadow' fonctionne et si ce n'est pas le cas, comment le désactiver. S'il ne fonctionne pas et que vous n'avez effectué aucune modification, vous vous retrouverez avec un système totalement inutilisable lorsque vous vous voudrez vous connecter. Vous pouvez facilement remédier à ce problème en passant comme paramètre init=/sbin/sulogin au noyau. Il sera alors nécessaire de décompresser l'archive util-linux, d'aller dans le répertoire login-utils, de compiler le programme login et de le copier à la place de /bin/login. La situation n'est jamais vraiment désespérée, du moins pas sous Linux. Cela dit, vous pouvez vous épargner bien des désagréments en vous documentant et en effectuant les tests nécessaires. ;-)

Configurer Sysvinit

Après avoir modifié comme suit le fichier /etc/inittab, vous aurez la possibilité de vous connecter au système par l'intermédiaire de agetty ou login. Sulogin ne sera plus utilisé pour les connexions normales.

# Begin /etc/inittab  
  
id:2:initdefault: 
  
si::sysinit:/etc/init.d/rcS 
  
su:S:wait:/sbin/sulogin 
  
l0:0:wait:/etc/init.d/rc 0 
l1:1:wait:/etc/init.d/rc 1 
l2:2:wait:/etc/init.d/rc 2 
l3:3:wait:/etc/init.d/rc 3 
l4:4:wait:/etc/init.d/rc 4 
l5:5:wait:/etc/init.d/rc 5 
l6:6:wait:/etc/init.d/rc 6 
  
ft:6:respawn:/sbin/sulogin 
  
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now 
  
1:2345:respawn:/sbin/agetty /dev/tty1 9600 
2:2345:respawn:/sbin/agetty /dev/tty2 9600 
3:2345:respawn:/sbin/agetty /dev/tty3 9600 
4:2345:respawn:/sbin/agetty /dev/tty4 9600 
5:2345:respawn:/sbin/agetty /dev/tty5 9600 
6:2345:respawn:/sbin/agetty /dev/tty6 9600 
  
# End /etc/inittab 
 

Créer le fichier /var/run/utmp

Les programmes comme login, shutdown ont besoin d'écrire dans le fichier /var/run/utmp. Celui-ci contient des informations concernant les personnes actuellement connectées au système et la date du dernier arrêt du système.


Page suivante Page précédente Table des matières