Le paquet Linux contient le noyau Linux.
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é.
S'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. BLFS a quelques informations concernant les besoins particuliers du noyau en terme de configuration pour les paquetages en dehors de LFS sur http://www.linuxfromscratch.org/blfs/view/svn/longindex.html#kernel-config-index :
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.
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.11.12
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.
NPTL requiert que le noyau soit compilé avec GCC 3.x, dans ce cas 3.4.3. Il n'est pas recommandé de compiler le noyau avec GCC-2.95.x car ceci est la cause d'échec dans la suite de tests de Glibc. Normalement, ceci ne devrait pas être mentionné car LFS ne construit pas GCC-2.95.x. Malheureusement, la documentation du noyau est obsolète et indique toujours que GCC-2.95.3 est le compilateur recommandé.
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.11.12/Documentation
. De plus,
la page man modprobe.conf(5)
pourrait aussi avoir de
l'intérêt.
Faites attention lors de la lecture d'autres documentations relatives aux
modules du noyau parce qu'elles s'appliquent 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 un-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
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. La commande suivante suppose qu'elle se trouve sur une architecture x86 :
cp arch/i386/boot/bzImage /boot/lfskernel-2.6.11.12
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.11.12
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.11.12
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 identifieurs 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'identifieur 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.11.12
pour vous assurez que tous
les fichiers sont bien possédés par l'utilisateur root.
Certaines documentation du noyau recommandent de créer un lien
symbolique à partir de /usr/src/linux
vers
le répertoire des sources du noyau. Ceci est spécifique aux noyaux antérieurs
à la série 2.6 et ne doit pas être réalisé sur un système
LFS car il peut poser des problèmes pour les paquetages que vous souhaitez
construire une fois que votre système LFS de base est complet.
De plus, les en-têtes compris dans le répertoire système
include
devraient
toujours être ceux avec lesquels Glibc a été compilé et,
du coup, ne devraient jamais être remplacés par les
en-têtes du noyau.