Avant de pouvoir entrer dans le chroot, nous devons nous assurer
que le système est dans un état acceptable. À partir de maintenant,
la variable d'environnement ${CLFS_TARGET}
n'existera plus, donc elle n'aura
aucune influence sur le reste du livre — la plupart des paquets
s’appuieront sur config.guess, fournit par
Section 10.38,
« Automake-1.15 ». Les paquets qui n'utilisent pas
autotools soit se fichent de la triplette cible, soit ont leur
propre moyen de déterminer sa valeur.
Dans les deux cas, l'information sur le cpu hôte utilisée pour déterminer la triplette cible est récupérée à partir du même endroit, uname -m. L'exécution de cette commande en dehors de l'environnement chroot et à l'intérieur a exactement la même sortie.
Si vous n'êtes pas sûr que votre hôte et votre cible ont la même triplette cible, vous pouvez utiliser ce test pour déterminer la triplette cible de l'hôte et si vous aurez besoin d'une étape supplémentaire pour s'assurer que vous ne construisez pas pour la mauvaise architecture. Extrayez l'archive Section 10.38, « Automake-1.15 » et déplacez-vous dans le répertoire créé. Ensuite, exécutez ce qui suit pour voir la triplette cible détectée par config.guess :
lib/config.guess
Si la sortie de cette commande n'est pas égale à ce qui se trouve
dans ${CLFS_TARGET}
vous devez continuer
à lire. Sinon, vous pouvez continuer sereinement à partir de
Section 8.4,
« Entrer dans l'environnement Chroot ».
Si votre hôte a un outil appelé setarch,, cela peut régler le problème, au moins si vous construisez sur i686. Sur une architecture comme x86_64, utiliser setarch linux32 uname -m ne donnera jamais que i686. il n'est pas possible d'avoir une autre sortie comme i486 ou i586.
Pour tester si setarch fait tout ce dont vous avez besoin, exécutez la commande suivante dans le répertoire d'Section 10.38, « Automake-1.15 » :
setarch linux32 lib/config.guess
Si la sortie de la commande est égale à ce qui se trouve dans
${CLFS_TARGET}
alors vous avez une
solution viable. Vous pouvez enrober la commande chroot de la page
suivante avec setarch
linux32. Ce qui ressemblera à ceci :
setarch linux32 chroot "${CLFS}" /tools/bin/env -i \ HOME=/root TERM="${TERM}" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ /tools/bin/bash --login +h
Si setarch fonctionne pour vous alors vous pouvez sereinement continuer par Section 8.4, « Entrer dans l'environnement Chroot ». Sinon, il y a encore une option présentée par ce livre.
Le hack uname est un module du noyau qui modifie la sortie de uname -m en changeant directement la valeur du type de machine détecté. Le module du noyau enregistrera la valeur initiale et la restaurera lorsque le module sera déchargé.
Téléchargement : http://clfs.org/files/extras/uname_hack-20080713.tar.bz2
Somme de contrôle MD5 : dd7694f28ccc6e6bfb326b1790adb5e9
Extrayez l'archive et déplacez-vous dans le répertoire créé. Pour construire le hack uname vous devrez avoir les sources du noyau en cours d'exécution à disposition. Construisez le hack uname avec la commande suivante, ou similaire :
make uname_hack_fake_machine=mips
Explication des options de make et d'intsall:
uname_hack_fake_machine=mips
Ce paramètre initialise la valeur en laquelle sera changé le type de machine uts.
Dans le répertoire de plus haut niveau du paquet Uname Hack, vous
devriez voir un fichier nommé uname_hack.ko
. Dès que ce module est chargé dans
le noyau en cours d'exécution la sortie de uname -m devrait être affectée
immédiatement sur tout le système. Chargez le module du noyau avec
la commande suivante :
insmod uname_hack.ko
Pour tester si le hack uname fonctionne correctement, exécutez la commande suivante depuis l'intérieur du répertoir d'Section 10.38, « Automake-1.15 » :
lib/config.guess
La sortie de la commande devrait être la même que la variable
d'environnement ${CLFS_TARGET}
. Si ce
n'est pas le cas, vous pouvez essayer d'obtenir de l'aide sur la
liste de diffusion de support de CLFS ou sur le canal IRC. Voyez
Section 1.7, « Help » pour plus
d'informations.