Installer des entêtes de Linux-2.4.22

Estimation du temps de construction :           0,1 SBU
Estimation de l'espace disque requis :  186 Mo

Contenu de Linux

Le noyau Linux kernel est au coeur de chaque système Linux. C'est ce qui fait tourner Linux. Lorsqu'un ordinateur est allumé et lance un système Linux, la première pièce de logiciel Linux à être chargé est le noyau. Celui-ci initialise les composants matériels du système: ports séries, ports parallèles, cartes son, cartes réseaux, contrôleurs IDE, contrôleurs SCSI et beaucoup plus encore. EN bref, le noyau rend le matériel disponible aux logiciels exécutés.

Fichiers installés : le noyau et ses en-têtes.

Dépendances d'installation de Linux

Linux dépend de Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, Sed.

Installation des en-têtes du noyau

Nous n'allons pas encore compiler un nouveau noyau -- nous le ferons quand nous aurons terminé l'installation de tous les paquets. Mais comme certains paquets ont besoin des fichiers d'en-têtes, nous allons déballer l'archive du noyau maintenant, le configurer et copier les fichiers d'en-têtes de façon à ce qu'ils soient disponibles pour ces paquets.

Il est important de noter que les fichiers du répertoire source du noyau n'appartiennent pas à root. Quand vous déballez un package en tant qu'utilisateur root (comme nous le faisons ici dans le chroot), les fichiers ont l'identifiant de l'utilisateur et du groupe du mainteneur du package sur son propre ordinateur. Ce n'est pas habituellement un problème pour tous les autres paquets que vous installez parce que vous supprimez le répertoire des sources après l'installation. Mais le répertoire des sources du noyau est souvent conservé un long moment, donc il existe une chance pour que l'identifiant utilisateur du mainteneur soit affecté à un utilisateur sur votre machine. Du coup, cette personne aurait le droit d'écriture sur les sources du noyau.

A la lumière de ceci, il est préférable de lancer chown -R 0:0 sur le répertoire linux-2.4.22 pour vous assurer que tous les fichiers appartiennent bien à l'utilisateur root.

Préparez l'installation des en-têtes :

make mrproper

Ceci nous assure que le répertoire des sources du noyau est totalement propre. L'équipe du noyau recommande que cette commande soit exécutée avant chaque compilation du noyau. Vous ne devez pas vous reposer sur un répertoire non nettoyé après son déballage.

Créez le fichier include/linux/version.h :

make include/linux/version.h

Créez le lien symbolique include/asm spécifique à la plateforme :

make symlinks

Installez les fichiers d'en-têtes spécifiques à la plateforme :

cp -HR include/asm /usr/include
cp -R include/asm-generic /usr/include

Installez les fichiers d'en-têtes inter-plate-forme :

cp -R include/linux /usr/include

Il existe quelques fichiers d'en-têtes du noyau utilisant le fichier d'en-tête autoconf.h. Comme nous n'avons pas encore configuré le noyau, nous avons besoin de créer ce fichier nous-même pour éviter des échecs de compilation. Créez un fichier autoconf.h vide :

touch /usr/include/linux/autoconf.h

Pourquoi nous copions les en-têtes du noyau et pourquoi nous ne créons pas de liens

Auparavant, une pratique commune consistait à créer des liens symboliques pour les répertoires /usr/include/{linux,asm} vers respectivement /usr/src/linux/include/{linux,asm}. Ceci est une mauvaise idée d'après cet extrait d'un message 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 entêtes du noyau 2.2.13, même si je n'ai pas lancé cette version du
noyau 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 essentielle se trouve là où Linus indique que les fichiers d'entête doivent être ceux avec lesquels gblic a été compilé. Ces entêtes doivent être utilisés plus tard lorsque vous compilerez d'autres packages, car ce sont eux qui représentent les fichiers de bibliothèques. En copiant les entêtes, nous nous assurons qu'ils restent disponibles plus tard lors d'une mise à jour du noyau.

Notez qu'il est parfaitement normal d'avoir les sources du noyau dans /usr/src/linux, aussi longtemps que vous n'avez pas les liens symboliques /usr/include/{linux,asm}.