4.4. Configurer l'environnement

Configurez 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 hlfs, 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 hlfs, le shell initial est habituellement un shell de login qui lit le fichier /etc/profile de l'hôte (contenant probablement quelques configurations et variables d'environnement) et puis .bash_profile. La commande exec env -i.../bin/bash dans le fichier .bash_profile remplace le shell en cours avec un nouveau ayant un environnement complètement vide sauf pour les variables HOME, TERM, et PS1. Ceci nous assure qu'aucune variable d'environnement non souhaitée et potentiellement dangereuse, provenant du système hôte, ne parvienne dans l'environnement de construction. La technique utilisée ici s'assure de ce but d'environnement propre.

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

cat > ~/.bashrc << "EOF"
set +h
umask 022
HLFS=/mnt/hlfs
LC_ALL=POSIX
HLFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export HLFS LC_ALL HLFS_TGT PATH
EOF

La commande set +h désactive la fonction de hachage de bash. D'habitude, le hachage est une fonctionnalité utile—bash utilise une table de hachage pour se rappeler le chemin complet des fichiers exécutables pour éviter d'avoir à chercher dans PATH à chaque fois qu'il doit trouver le même exécutable. Néanmoins, les nouveaux outils devraient être utilisés dès leur installation. En désactivant la fonction de hachage, le shell cherchera en permanence dans PATH lorsqu'un programme doit être exécuté. Ainsi, le shell trouvera les nouveaux outils compilés dans $HLFS/tools dès qu'ils sont disponibles et sans se rappeler de la version précédente du même programme mais dans un autre emplacement.

Configurer le masque de création de fichier (umask) à 022 nous assure que les nouveaux fichiers et répertoires créés sont modifiables uniquement 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 ceux 755).

La variable HLFS devrait être configurée avec le point de montage choisi.

La variable LC_ALL contrôle la localisation de certains programmes, faisant que leurs messages suivent les conventions d'un 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é à 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 attendu dans l'environnement chroot.

La variable HLFS_TGT initialise une description de machine compatible mais par défaut lors de la construction de notre compilateur et de notre éditeur de liens croisés et lors de la compilation de notre chaîne d'outils temporaire. Vous trouverez plus d'informations dans Section 5.2, « Notes techniques sur la chaîne d'outils ».

En plaçant /tools/bin au début du PATH standard, tous les programmes installés dans Chapitre 5 sont récupéré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 avoir un environnement complètement préparé pour la construction des outils temporaires, chargez le profil de l'utilisateur tout juste créé :

source ~/.bash_profile