Le paquet Linux contient le noyau et les fichiers d'en-têtes.
Construire le noyau implique un certain nombre d'étapes :
configuration, compilation et installation. Lisez le fichier
README
contenu dans les sources du noyau pour d'autres
méthodes.
Préparez la compilation en lançant la commande suivante :
make mrproper
Ceci nous assure que le répertoire du noyau est complètement nettoyé. L'équipe du noyau recommande que cette commande soit lancée avant chaque compilation du noyau. Vous ne devez pas penser que le répertoire des sources soit propre juste après avoir été déballé.
De plus, assurez-vous que le noyau n'essaie pas de passer les événements de montage à chaud dans l'espace utilisateur jusqu'à ce que ce dernier spécifie qu'il est prêt :
sed -i 's@/sbin/hotplug@/bin/true@' kernel/kmod.c
Si il a été décidé dans la section intitulée « Configurer la console Linux » de compiler le plan de codage dans le noyau, lancez la commande ci-dessous :
loadkeys -m /usr/share/kbd/keymaps/[path to keymap] > \ drivers/char/defkeymap.c
Par exemple, pour utiliser un clavier hollandais, utilisez
/usr/share/kbd/keymaps/i386/qwerty/nl.map.gz
.
Configurez le noyau via une interface par menu :
make menuconfig
Sinon, make oldconfig peut être plus approprié dans
certaines situations. Voir le fichier README
pour plus
d'informations.
Sinon, make oldconfig pourrait être plus approprié
dans certaines situations. Voir le fichier README
pour
plus d'informations.
Lors de la configuration du noyau, assurez-vous d'activer l'option
« Support for hot-pluggable devices » dans le menu
« General Setup ». Ceci active les événements de montage à chaud qui
sont utilisés par udev pour peupler le répertoire /dev
avec les n½uds de périphériques.
Si désiré, passez la configuration du noyau en copiant le fichier de
configuration, .config
, à partir du système hôte
(en supposant qu'il est disponible) dans le répertoire linux-2.6.8.1
tout juste déballé.
Néanmoins, nous ne recommandons pas cette option. Il est souvent mieux
d'explorer tous les menus de configuration et de créer la configuration du
noyau à partir de rien.
Pour le support de la mémoire partagée POSIX, assurez-vous que l'option de configuration du noyau « Virtual memory file system support » est activée. Elle réside dans le menu « File systems » et est normalement activée par défaut.
Les scripts de démarrage LFS supposent que soit « Support for Host-side USB » et « USB device filesystem » ont été compilées directement dans le noyau soit aucune des deux ne l'a été. Les scripts de démarrage ne fonctionnent pas correctement s'il s'agit d'un module (usbcore.ko).
NPTL requiert que le noyau soit compilé avec GCC 3.x, dans ce cas 3.4.1. Compiler avec 2.95.x est connu pour causer des échecs dans la suite de tests de glibc, donc il n'est pas recommandé de compiler le noyau avec gcc 2.95.x.
Compilez l'image du noyau et les modules :
make
Si vous utilisez des modules avec le noyau, un fichier
/etc/modprobe.conf
pourrait être nécessaire. Les
Informations concernant les modules et la configuration du noyau sont situées
dans la documentation du noyau disponible dans le répertoire linux-2.6.8.1/Documentation
.
La page man modprobe.conf pourrait aussi avoir de
l'intérêt.
Faites attention lors de la lecture d'autres documentations parce qu'elle
s'applique généralement seulement aux noyaux 2.4.x. D'après nos connaissances,
les problèmes spécifiques de configuration du noyau pour Hotplug (le montage à
chaud) et Udev se sont pas documentés. Le problème est que Udev créera un
n½ud de périphérique seulement si Hotplug ou un script écrit par
l'utilisateur insère le module correspondant dans le noyau et tous les modules
ne sont pas détectables par Hotplug. Notez que les instructions comme celle
ci-dessous, compris dans le fichier /etc/modprobe.conf
, ne
fonctionnent pas avec Udev :
alias char-major-XXX some-module
À cause des complications avec Hotplug, Udev et les modules, nous recommandons fortement de commencer avec une configuration complètement non modulaire du noyau, spécialement si c'est la première fois que vous utilisez Udev.
Installez les modules si la configuration du noyau les utilise :
make modules_install
S'il y a beaucoup de modules et peu de place, considérez la possibilité de réduire leur taille et de compresser les modules. Pour la plupart des utilisateurs, une telle compression n'est pas utile mais si le système dispose de vraiment peu d'espaces, jetez un ½il à http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html.
Une fois la compilation du noyau terminée, des étapes supplémentaires
sont requises pour terminer l'installation. Certains fichiers ont besoin d'être
copiés dans le répertoire /boot
.
Le chemin vers l'image du noyau pourrait varier suivant la plateforme d'utilisation. Lancez la commande suivante pour installer le noyau :
cp arch/i386/boot/bzImage /boot/lfskernel-2.6.8.1
System.map
est un fichier de symboles pour le noyau.
Il cartographie les points d'entrées de chaque fonction dans l'API du noyau,
ainsi que les adresses des structures de données du noyau pour le noyau en cours
d'exécution. Lancez la commande suivante pour installer le fichier carte :
cp System.map /boot/System.map-2.6.8.1
Le fichier de configuration du noyau .config
produit
à l'étape make menuconfig ci-dessus contient toutes les
sélections de configuration pour le noyau tout juste compilé. Conserver ce fichier
est une bonne idée pour pouvoir s'y référer plus tard :
cp .config /boot/config-2.6.8.1
Il est important de noter que les fichiers du répertoire des sources du noyau n'appartiennent pas à root. À chaque fois qu'un paquet est déballé par l'utilisateur root (comme nous l'avons fait à l'intérieur du chroot), les fichiers conservent les identifiants utilisateur et groupe de celui qui a préparé le paquet. Ceci n'est habituellement pas un problème pour tout autre paquet installé car le répertoire des sources est supprimé après installation. Néanmoins, le répertoire des sources de Linux est souvent conservé assez lontemps. À cause de cela, il existe une chance pour que l'identifiant utilisateur soit affecté à quelqu'un sur la machine. Cette personne aurait alors les droits d'écriture sur les sources du noyau.
Si le répertoire des sources du noyau est conservé, lancez
chown -R 0:0 sur le répertoire linux-2.6.8.1
pour vous assurez que tous
les fichiers sont bien possédés par l'utilisateur root.
noyau
Le moteur du système Linux. Au démarrage de l'ordinateur, le noyau est la première partie du système d'exploitation à être chargée. Il détecte et initialise tous composants matériels de l'ordinateur, puis rend disponibles ces composants par un ensemble de fichiers pour les logiciels qui en ont besoin, et transforme un CPU unique en une machine multitâches capable 'exécuter des bouts de programmes quasiment au même moment.
En-têtes du noyau
Définit l'interface des services que fournit le noyau. Les en-têtes du
répertoire include
du système devraient
toujours être ceux avec lesquels Glibc a été compilé et,
du coup, ne devraient pas être remplacées lors de la mise
à jour du noyau.
System.map
Une liste d'adresses et de symboles ; il fait correspondre les points d'entrées et les adresses de toutes les fonctions et structures de données dans le noyau