8.3. Linux-2.6.32.44

Le paquet Linux contient le noyau Linux.

Temps aproximatif de construction: 1.5 - 5.0 SBU
Espace disque requis: 450 - 500 Mio

8.3.1. Installation du noyau

Construire le noyau implique un certain nombre d'étapes—la configuration, la compilation et l'installation. Lisez le fichier README contenu dans les sources du noyau pour d'autres méthodes que celle utilisée par le livre pour configurer le noyau.

Appliquez le correctif Grsecurity :

patch -Np1 -i ../grsecurity-2.2.2-2.6.32.44-201108091835.patch

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 est propre juste après avoir été déballé.

Configurez le noyau via une interface par menu. Sur des informations générales sur la configuration du noyau, voir http://lfs.traduc.org/view/astuces/kernel-configuration-fr.txt. 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 LANG=<valeur_LANG_du_hote> LC_ALL= menuconfig

Voici la signification des paramètres de make :

LANG=<valeur_LANG_du_hote> LC_ALL=

Ceci établit le paramétrage local à celui utilisé sur l'hôte. Ceci est nécessaire pour que le dessin de la ligne de l'interface de menuconfig soit correct sur la console texte de Linux en UTF-8

Assurez-vous de remplacer <valeur_LANG_du_hote> par la valeur de la variable $LANG de votre hôte. Si ce n'est pas paramétré, vous pourriez plutôt utiliser la valeur de $LC_ALL ou $LC_CTYPE de l'hôte.

Sinon, make oldconfig peut ê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.32.44 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.

Compilez l'image du noyau et les modules :

make CC="gcc -fno-PIE -no-fatal-warnings"

Si vous utilisez des modules du noyau, il peut être nécessaire de configurer les modules dans le fichier /etc/modprobe.d. Des informations au sujet de la configuration du noyau et des modules se trouvent sur Section 7.9, « Gestion des périphériques et modules sur un système LFS » et dans la documentation du noyau, dans le répertoire linux-2.6.32.44/Documentation. De plus, modprobe.conf(5) pourrait aussi avoir de l'intérêt.

Installez les modules si la configuration du noyau les utilise :

make modules_install

Déballez, construisez et installez le module Frandom :

tar xf ../frandom-1.1.tar.gz
cd frandom-1.1
make CC="gcc -fno-PIE -no-fatal-warnings"
install -m 644 frandom.ko /lib/modules/2.6.32.44-grsec/kernel/drivers/char/
depmod -a
cd ../

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. Vous pouvez changer le nom du fichier ci-dessous selon votre goût, mais le schéma du nom de fichier devrait ressembler à vmlinux pour être compatible avec le paramétrage automatique du processus de démarrage décrit dans la section suivante. La commande suivante suppose qu'on se trouve sur une architecture x86 :

cp -v arch/x86/boot/bzImage /boot/vmlinux-2.6.32.44-hlfs-SVN-20110821

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. Il sert de ressource lors d'une enquête sur des problèmes de noyau. Lancez la commande suivante pour installer le fichier carte :

cp -v System.map /boot/System.map-2.6.32.44

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 -v .config /boot/config-2.6.32.44

Installez la documentation du noyau Linux :

install -d /usr/share/doc/linux-2.6.32.44
cp -r Documentation/* /usr/share/doc/linux-2.6.32.44

Il est important de noter que les fichiers dans le répertoire des sources du noyau n'appartiennent pas à root. Chaque fois qu'un paquet est déballé en tant qu'utilisateur root (comme on a fait dans chroot), les fichiers ont les ID de l'utilisateur et du groupe où ils étaient sur l'ordinateur du paquet. En principe cela n'est pas un problème pour tout autre paquet lorsqu'il est installé car l'arborescence des sources est supprimée après l'installation. Par contre, l'arborescence de Linux est souvent longtemps conservée. Du coup, il y a des chances que tout ce que l'ID de l'utilisateur ayant déballé le paquet a utilisé ne soit affecté à quelqu'un sur la machine. Cette personne pourrait alors avoir un droit d'écriture sur les sources du noyau.

Si vous allez conserver l'arborescence des sources du noyau, lancez chown -R 0:0 sur le répertoire linux-2.6.32.44 pour vous assurer que tous les fichiers appartiennent à root.

[Avertissement]

Avertissement

Certaines documentations du noyau recommandent de créer un lien symbolique à partir de /usr/src/linux pointant 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 souhaiter construire une fois que votre système LFS de base est complet.

[Avertissement]

Avertissement

Les en-têtes compris dans le répertoire 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 ou par d'autres en-têtes nettoyées du noyau.

8.3.2. Configuration de l'ordre de chargement des modules Linux

Vous devez créer le fichier /etc/modprobe.d/usb.conf afin que, si les pilotes USB (ehci_hcd, ohci_hcd et uhci_hcd) ont été construits en module, ils seront chargés dans le bon ordre ; ehci_hcd doit être chargé avant ohci_hcd et uhci_hcd afin d'éviter un avertissement qui sort au moment du démarrage.

Créez un nouveau /etc/modprobe.d/usb.conf en lançant ce qui suit :

install -v -m755 -d /etc/modprobe.d
cat > /etc/modprobe.d/usb.conf << "EOF"
# Begin /etc/modprobe.d/usb.conf

install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true

# Fin de /etc/modprobe.d/usb.conf
EOF

8.3.3. Contenu de Linux

Fichiers installés: config-2.6.32.44, vmlinux-2.6.32.44-lfs-SVN-20110821-2.6.32.44 et System.map-2.6.32.44
Répertoires installés: /lib/modules, /usr/share/doc/linux-2.6.32.44

Descriptions courtes

config-2.6.32.44

Contient toutes les sélections de la configuration pour le noyau

vmlinux-2.6.32.44-lfs-SVN-20110821

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 disponible les 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.

System.map-2.6.32.44

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