Configurer l'environnement

Nous allons maintenant configurer un bon environnement de travail en créant deux nouveaux fichiers de démarrage pour le shell bash. En étant connecté 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

Normalement, lorsque vous vous connectez en tant qu'utilisateur lfs, le shell initial est un shell de connexion qui va lire le fichier /etc/profile de votre hôte (contenant probablement quelques configurations de variables d'environnement) puis le fichier .bash_profile. La commande exec env -i ... /bin/bash dans le premier fichier remplace le shell en cours d'exécution par ce nouveau avec un environnement complètement vide sauf en ce qui concernent les variables HOME, TERM et PS1. Ceci nous assure qu'aucune variable d'environnement non souhaitée du système hôte ne parvienne à notre environnement de construction. La technique utilisée ici est un peu étrange mais elle réalise notre but d'environnement propre.

La nouvelle instance de shell est un shell sans connexion, qui ne lit pas les fichiers /etc/profile et/ou .bash_profile mais lit à la place le fichier .bashrc.Créez ce dernier fichier 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 ligne set +h désactive la fonction de hachage de bash. Normalement, le hachage est une fonctionnalité utile : bash utilise une table de hachage pour se rappeler les chemins complets des exécutables et éviter d'avoir à chercher à chaque fois dans les chemins de PATH pour trouver le même exécutable. Néanmoins, nous souhaitons utiliser les nouveaux outils dès leur installation. En désactivant la fonction de hachage, nos commandes « interactives » (make, patch, sed, cp et ainsi de suite) utiliseront toujours la version la plus récente lors du processus de construction.

Configurer le masque de création de fichier de l'utilisateur à 022 nous assure que les fichiers nouvellement créés sont modifiables uniquement par leur propriétaire mais lisible et exécutable par tout le monde.

La variable LFS devrait bien sûr être initialisée avec le point de montage que vous avez choisi.

La variable LC_ALL contrôle la traduction de certains programmes, en faisant que leur messages suivent les conventions du pays spécifié. Si votre système hôte utilise une version de Glibc plus ancienne que la 2.2.4, avoir LC_ALL configuré avec autre chose que « POSIX » ou « C » dans ce chapitre pourrait poser des problèmes si vous quittez l'environnement chroot et souhaitez y revenir plus tard. En initialisant LC_ALL à « POSIX » (ou « C », les deux sont équivalents), nous nous assurons que tout fonctionnera comme attendu dans l'environnement chroot.

Nous supposons que /tools/bin est le chemin (PATH) standard qui sera utilisé pendant tout le processus de construction par les outils que nous construisons tout au long de ce chapitre.

Enfin, pour que notre environnement soit fin prêt à construire les outils temporaires, utilisez source avec le fichier profile tout juste créé :

source ~/.bash_profile