4.4. Configurer l'environnement

Définissez un bon environnement de travail en créant deux nouveaux fichiers de démarrage pour le shell bash. En étant connecté en tant qu'utilisateur lfs, lancez la commande suivante pour créer un nouveau .bash_profile :

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

Lorsque vous êtes connecté en tant que lfs, le shell initial est habituellement un shell de connexion qui lit le fichier /etc/profile de l'hôte (contenant probablement quelques paramètrages et variables d'environnement), puis .bash_profile. La commande exec env -i.../bin/bash dans le fichier .bash_profile remplace le shell en cours par un nouveau avec un environnement entièrement vide, à l'exception des variables HOME, TERM et PS1. Cette technique nous assure un environnement prore en empêchant les variables d'environnement du système hôte de s'inviter dans le système LFS, au risque d'y faire des dégats.

La nouvelle instance du shell est un shell sans connexion, qui ne lit donc pas les fichiers /etc/profile et .bash_profile mais plutôt le fichier .bashrc. Créez le fichier .bashrc maintenant :

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF

La commande set +h désactive la fonction de hachage de bash. D'habitude, le hachage est une fonctionnalité utile que bash utilise pour se souvenir du chemin d'accès aux fichiers exécutables, évitant ainsi de reparcourir le PATH quand un exécutable est lancé une seconde fois. Cependant, nous voulons utiliser les nouveaux outils dès leur installation. En désactivant la fonction de hachage, le shell parcourt le PATH à chaque appel d'un programme. Ainsi, le shell utilisera les nouveaux outils présents dans $LFS/tools au fur et à mesure de leur apparition, au lieu de réutiliser sans cesse les versions originales de ces programmes dont la fonction de hachage garderait la trace.

Attribuer la valeur 022 au masque de création de fichier (umask) nous assure que les nouveaux fichiers et répertoires créés ne seront modifiables que par leurs propriétaires, mais lisibles et exécutables par tout le monde (en supposant que les modes par défaut sont utilisés par l'appel système open(2), les nouveaux fichiers finiront avec les droits 644 et les répertoires avec les droits 755).

La variable LFS devrait pointer sur le point de montage choisi.

La variable LC_ALL contrôle la localisation de certains programmes, adaptant leurs messages aux conventions du pays spécifié. Si le système hôte utilise une version de Glibc plus ancienne que la 2.2.4, avoir LC_ALL initialisée à quelque chose d'autre que « POSIX » ou « C » (pendant ce chapitre) pourrait poser des problèmes si vous quittez l'environnement chroot et souhaitez y retourner plus tard. Initialiser LC_ALL à « POSIX » ou « C » (les deux sont équivalents) nous assure que tout fonctionnera comme prévu dans l'environnement chroot.

En plaçant /tools/bin au début du PATH standard, tous les programmes installées dans Chapitre 5 sont utilisés par le shell immédiatement après leur installation. Ceci, combiné avec la désactivation du hachage, limite le risque que d'anciens programmes de l'hôte soient utilisés alors que les mêmes programmes sont disponibles depuis l'environnement du chapitre 5.

Enfin, pour terminer la préparation de l'environnement en vue de la construction des outils temporaires, chargez le profil de l'utilisateur tout juste créé :

source ~/.bash_profile