Estimation du temps de construction: 1 minute Estimation de l'espace disque requis: 132 MB |
Nous n'allons pas encore compiler une nouvelle image du noyau. Nous le ferons après avoir fini l'installation des logiciels du système de base dans ce chapitre. Mais, parce que certains logiciels ont besoin des fichiers d'en-tête du noyau, nous allons désarchiver le noyau maintenant et le configurer pour pouvoir compiler les packages ayant besoin du noyau.
Le fichier de configuration du noyau est créé en exécutant la commande suivante:
make mrproper && make include/linux/version.h && make symlinks && mkdir $LFS/usr/include/asm && cp include/asm/* $LFS/usr/include/asm && cp -R include/linux $LFS/usr/include && touch $LFS/usr/include/linux/autoconf.h |
make mrproper: Ceci s'assure que l'arborescence du noyau est parfaitement propre. Nous faisons ceci parce que l'équipe de développement du noyau recommande que ceci soit fait avant chaque compilation du noyau, et que nous ne devons pas supposer que l'arborescence des sources soit propre après l'avoir déballé.
make include/linux/version.h et make symlinks: Ceci crée le fichier include/linux/version.h, ainsi que le lien symbolique include/asm symlink.
mkdir $LFS/usr/include/asm and cp include/asm/* $LFS/usr/include/asm: Ceci commande copie les fichiers d'entête assembleur du kernel dans $LFS/usr/include/asm.
cp -R include/linux $LFS/usr/include: Cette commande copie les fichiers d'entête pour la cross-compilation du kernel dans $LFS/usr/include.
touch $LFS/usr/include/linux/autoconf.h: Quelque fichiers d'entête du kernel incluent le fichier autoconf.h, mais en dehors de la hiérarchie des fichiers source du noyau Linux, ce fichier n'apporte rien donc nous en créons un vide de manière à ne pas avoir d'erreurs de compilation lorsqu'il est une dépendance pour un autre fichier d'entête du noyau.
Auparavant, une pratique commune consistait à créer des liens symboliques pour les répertoires /usr/include/linux et asm vers respectivement /usr/src/linux/include/linux et asm. Ceci est une mauvaise idée d'après cet extrait d'un envoi de Linus Torvalds sur la liste de diffusion du noyau Linux:
Je suggère que les personnes qui compilent des noyaux devraient: - ne pas créer un seul lien symbolique (sauf celui créé lors de la construction du noyau, "linux/include/asm" qui est utilisé pour la compilation du noyau lui-même) Et oui, c'est ce que je fais. Mon répertoire /usr/src/linux a toujours les anciens en-têtes du kernel 2.2.13, même si je n'ai pas lancé cette version du kernel depuis un _loong_ moment. Mais glibc a été compilé avec, donc ces entêtes correspondent aux objets de la bibliothèque. Et cela correspond à l'environnement suggéré depuis au moins les cinq dernières années. Je ne sais pas pourquoi l'idée du lien symbolique est toujours vivante, comme un mauvais zombie. Pratiquement toutes les distributions conservent l'idée du lien et tout le monde se souvient que les sources du noyau doivent aller sous "/usr/src/linux" même si ce n'est plus vrai depuis _trèès_ longtemps. |
La partie importante là-dedans correspond au moment où il indique que les en-têtes doivent être ceux avec lesquels glibc a été compilé. Ces en-têtes doivent rester accessibles et en les copiant, nous nous assurons de suivre ces recommandations. Notez aussi que tant que ces liens symboliques ne sont pas créés, il est tout à fait correct d'avoir les sources du noyau sous /usr/src/linux.
Le noyau linux et les entêtes du noyau linux
Le noyau de Linux est au coeur de chaque système Linux. C'est lui qui fait tourner Linux. Quand vous allumez votre ordinateur et démarrez un système Linux, la toute première partie de logiciel Linux qui est chargée est le noyau. Le noyau initialise les composants matériels du système comme les ports série, les ports parallèles, les cartes son, les cartes réseau, les contrôleurs IDE, les contrôleurs SCSI et beaucoup d'autres choses. En bref, le noyau rend le matériel disponible pour que le logiciel puisse fonctionner.
Nous copions ces fichiers dans /usr/include/(linux,asm) lors du chapitre 5. Ils doivent correspondre à ceux avec lesquels glibc a été compilé et ne doivent pas être remplacé lors d'une mise à jour du kernel. Ils sont essentiels pour compiler un grand nombre de logiciels.
Linux-2.4.17 nécessite que les programmes suivants soient installés:
bash: sh
binutils: ar, as, ld, nm, objcopy
fileutils: cp, ln, mkdir, mv, rm, touch
findutils: find, xargs
gcc: cc1, collect2, cpp0, gcc
grep: grep
gzip: gzip
make: make
gawk: awk
modutils: depmod, genksyms
net-tools: dnsdomainname, hostname
sed: sed
sh-utils: basename, date, expr, pwd, stty, uname, whoami, yes
textutils: cat, md5sum, sort, tail