8.3. Linux-3.13.3

Le paquet Linux contient le noyau Linux.

Temps de construction approximatif: 3.0 - 49.0 SBU (en général environ 6 SBU)
Espace disque requis: 700 - 6800 Mo (en général environ 800-900 Mo)

8.3.1. Installation du noyau

Construire le noyau implique un certain nombre d'étapes — configuration, compilation et installation. Pour connaître les autres méthodes que celle employée par ce livre pour configurer le noyau, lisez le fichier README contenu dans les sources du noyau.

Préparez la compilation en lançant la commande suivante :

make mrproper

Ceci nous assure que le répertoire du noyau est propre. L'équipe du noyau recommande le lancement de cette commande avant chaque compilation du noyau. Vous ne devez pas supposer que le répertoire des sources est propre juste après avoir été déballé.

Configurez le noyau via l'interface par menu. Pour des informations d'ordre général sur la configuration du noyau, consultez http://lfs.traduc.org/view/astuces/kernel-configuration-fr.txt. BLFS offre aussi quelques informations complémentaires concernant les besoins particuliers de configuration pour les paquets en dehors de LFS : http://lfs.traduc.org/view/blfs-svn/longindex.html#kernel-config-index. Vous pouvez trouver des informations supplémentaires sur la configuration et la construction du noyau sur http://www.kroah.com/lkn/

[Note]

Note

Un bon point de départ pour effectuer la configuration du noyau est de lancer make defconfig. Cela opérera une configuration de base de bonne qualité en prenant en compte l'architecture actuelle de votre système.

Suite à de récents changements dans udev, assurez-vous de sélectionner :

Device Drivers  --->
  Generic Driver Options  --->
     Maintain a devtmpfs filesystem to mount at /dev
make LANG=<valeur_LANG_du_hote> LC_ALL= menuconfig

Voici la signification des paramètres de make :

LANG=<valeur_LANG_de_l_hote> LC_ALL=

Ceci rend identique les paramétrages régionaux à ceux utilisés sur l'hôte. C'est indispensable pour que l'interface de menuconfig soit correctement dessinée sur la console texte de Linux en UTF-8.

Assurez-vous de remplacer <valeur_LANG_de_l_hote> par la valeur de la variable $LANG de votre hôte. Si elle n'est pas paramétrée, vous pouvez utiliser à la place les valeurs $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 vous le désirez, vous pouvez sauter la configuration du noyau en copiant le fichier de configuration, .config, du système hôte (en supposant qu'il est disponible) dans le répertoire linux-3.13.3 tout juste déballé. Néanmoins, nous ne recommandons pas cette option. Il est souvent meilleur d'explorer tous les menus de configuration et de créer la configuration du noyau à partir de zéro.

Compilez l'image du noyau et les modules :

make

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

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 encore nécessaires 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 utilisée. Vous pouvez changer le nom du fichier ci-dessous selon votre goût, mais la nomenclature du nom de fichier devrait ressembler à vmlinuz pour être compatible avec le paramétrage automatique du processus de démarrage décrit dans la section à venir. La commande suivante présuppose une architecture x86 :

cp -v arch/x86/boot/bzImage /boot/vmlinuz-3.13.3-lfs-7.5

System.map est un fichier de symboles pour le noyau. Il cartographie les points d'entrée de chaque fonction dans l'API du noyau, ainsi que les adresses de ses structures de données pendant l'exécution. Il sert de référence lors des investigations sur les problèmes de noyau. Lancez la commande suivante pour installer le fichier de symboles :

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

Le fichier de configuration du noyau .config produit à l'étape make menuconfig ci-dessus contient toutes les options de configuration choisies pour le noyau qui vient d'être compilé. Conserver ce fichier est une bonne idée pour pouvoir s'y référer plus tard :

cp -v .config /boot/config-3.13.3

Installez la documentation du noyau Linux :

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

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é par l'utilisateur root (comme on a fait dans chroot), les fichiers ont les ID de l'utilisateur et du groupe de l'empaqueteur sur son système hôte. En principe ce n'est pas un problème car l'arborescence des sources est supprimée après l'installation. En revanche, l'arborescence de Linux est souvent conservée longtemps. 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 d'autre sur la machine. Cette personne pourrait alors avoir un droit d'écriture sur les sources du noyau.

Si vous conservez l'arborescence des sources du noyau, lancez chown -R 0:0 sur le répertoire linux-3.13.3 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 paquets que vous souhaitez construire une fois votre système LFS de base complet.

[Avertissement]

Avertissement

Les en-têtes du répertoire système include (/usr/include) devraient toujours être celles avec lesquelles Glibc a été compilé, à savoir, les en-têtes de santé installées au Section 6.7, « Linux-3.13.3 API Headers ». Donc, elles ne devraient jamais être remplacées par les en-têtes du noyau brut ou par d'autres en-têtes de santé expurgées du noyau.

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

La plupart du temps, les modules Linux sont chargés automatiquement, mais il faut parfois des directives supplémentaires. Le programme qui charge les modules, modprobe ou insmod, utilise /etc/modprobe.d/usb.conf à cette fin. Il faut créer ce fichier afin que, si les pilotes USB (ehci_hcd, ohci_hcd et uhci_hcd) ont été construits en module, ils soient chargés dans le bon ordre ; ehci_hcd doit être chargé avant ohci_hcd et uhci_hcd afin d'éviter un avertissement 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-3.13.3, vmlinuz-3.13.3-lfs-7.5 et System.map-3.13.3
Répertoires installés: /lib/modules, /usr/share/doc/linux-3.13.3

Descriptions courtes

config-3.13.3

Contient toutes les options de configuration choisies pour le noyau.

vmlinuz-3.13.3-lfs-7.5

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 dans une arborescence de fichiers pour les logiciels qui en ont besoin, et transforme une machine monoprocesseur en une machine multitâches capable d'exécuter plusieurs programmes quasi simultanément.

System.map-3.13.3

Une liste d'adresses et de symboles donnant la correspondance entre les points d'entrée, et les adresses de toutes les fonctions et structures de données du noyau.