13.2. Linux-4.9.21

Le paquet Linux contient le noyau Linux.

13.2.1. Installation de the kernel

La construction du noyau contient plusieurs étapes — configuration, compilation et installation. Lisez le fichier README dans l'arborescence des sources du noyau pour trouver des méthodes alternatives à la manière dont ce livre configure le noyau.

Appliquez le dernier correctif du noyau Linux :

xzcat ../patch-4.9.21.xz | patch -Np1 -i -

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

make mrproper

Cela s'assure que l'arborescence du noyau est absolument propre. L'équipe du noyau recommande de lancer cette commande avant chaque compilation du noyau. Ne comptez pas sur les sources pour être propres après les avoir décompressés.

[Note]

Note

Un bon point de départ pour configurer le noyau est de lancer make defconfig. Cela initialisera une configuration de base à un état sain qui prend l'architecture de votre système en compte.

Assurez-vous de configurer les options suivantes telles que montrées, ou le système pourrait ne pas fonctionner ou démarrer du tout. Reportez-vous à /usr/share/doc/systemd-233/README :

General setup  --->
  [*] open by fhandle syscalls (CONFIG_FHANDLE)
  [ ] Auditing support (CONFIG_AUDIT)
  [*] Control Group support (CONFIG_CGROUPS)
Processor type and features  --->
  [*] Enable seccomp to safely compute untrusted bytecode (CONFIG_SECCOMP)
Networking support  --->
  Networking options  --->
    <*> The IPv6 protocol (CONFIG_IPV6)
Device Drivers  --->
  Generic Driver Options  --->
    ()  path to uevent helper (CONFIG_UEVENT_HELPER_PATH)
    [*] Maintain a devtmpfs filesystem to mount at /dev (CONFIG_DEVTMPFS)
    [ ] Fallback user-helper invocation for firmware loading (CONFIG_FW_LOADER_USER_HELPER)
File systems  --->
  [*] Inotify support for userspace (CONFIG_FSNOTIFY)
  <*> Kernel automounter version 4 support (also supports v3) (CONFIG_AUTOFS4_FS)
  Pseudo filesystems  --->
    [*] Tmpfs POSIX Access Control Lists (CONFIG_TMPFS_POSIX_Acl)
    [*] Tmpfs extended attributes (CONFIG_TMPFS_XATTR)
Firmware Drivers --->
  EFI (Extensible Firmware Interface) Support --->
    <*> EFI Variable Support via sysfs (CONFIG_EFI_VARS)
-*- Enable the block layer ---> (CONFIG_BLOCK)
  Partition Types --->
    [*] Advanced partition selection (CONFIG_PARTITION_ADVANCED)
    [*]   EFI GUID Partition support (CONFIG_EFI_PARTITION)
Kernel Hacking --->
  [*] Collect scheduler debugging info (CONFIG_SCHED_DEBUG)
  [*] Collect scheduler statistics (CONFIG_SCHEDSTATS)
[Note]

Note

Tandis que « le Protocol IPv6 » n'est pas strictement nécessaire, il est hautement recommandé par les développeurs de Systemd. « EFI Variables support » et « EFI GUID Partition support » sont faits pour les système UEFI. « Collect scheduler debugging info » et « Collect scheduler statistics » sont faits pour systemd-bootchart.

Configurez le noyau via une interface à menu. CBLFS a des informations concernant les prérequis de configuration du noyau pour les paquets hors de CLFS sur http://cblfs.clfs.org/ :

make menuconfig

Autrement, make oldconfig peut être plus approprié dans certaines situations. Regardez le fichier README pour plus de détails.

Si vous le souhaitez, sautez la configuration du noyau en copiant le fichier de configuration du noyau, .config, depuis le système hôte (en supposant qu'il est disponible) dans le répertoire racine des sources déballées du noyau. Cependant, nous ne recommandons pas cette option. Il est souvent préférable d'explorer tous les menus et de créer la configuration de noyau de zéro.

Compilez l'image noyau et ses modules :

make

Si vous utilisez des modules du noyau, un fichier de configuration dans /etc/modprobe.d peut être requis. Des informations à propos des modules et de la configuration du noyau se trouve dans la documentation du noyau, dans le répertoire Documentation des sources. modprobe.d(5) peut aussi être intéressant.

Installez les modules, si la configuration du noyau en utilise :

make modules_install

Installez les microprogrammes, si la configuration du noyau en utilise :

make firmware_install

Après la compilation du noyau, des étapes supplémentaires sont requises pour compléter l'installation. Certains fichiers ont besoin d'être copiés dans le répertoire /boot.

Lancez la commande suivante pour installer le noyau :

cp -v arch/x86_64/boot/bzImage /boot/vmlinuz-clfs-4.9.21

System.map est un fichier de symboles pour le noyau. Il contient tous 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 courant. Lancez la commande suivante pour installer le fichier :

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

Le fichier de configuration du noyau .config produit par l'étape make menuconfig précédente contient toute la configuration du noyau qui vient d'être compilé. C'est une bonne idée de garder ce fichier pour plus tard 

cp -v .config /boot/config-4.9.21

Il est important de noter que les fichiers du répertoire des sources du noyau n'appartiennent pas à root. Lorsqu'un paquet est décompressé par root (comme nous le faisons dans l'environnement de construction du système final), les fichiers gardent les ID de l'utilisateur et du groupe telles qu'ils étaient sur l'ordinateur de l'emballeur. Ce n'est généralement pas un problème pour les autres paquets parce que les sources sont supprimées après installation. Cependant, l'arborescence des sources du noyau Linux est souvent gardée pendant un long moment. À cause de cela, il est possible que l'ID de l'utilisateur de l'emballeur soit utilisé par quelqu'un sur la machine. Cette personne pourrait alors accéder en écriture aux sources du noyau.

Si les sources du noyau vont être gardées, lancez chown -R 0:0 dans le répertoire linux-4.9 pour s'assurer que tous les fichiers appartiennent à l'utilisateur root.

[Avertissement]

Avertissement

Certaines documentation du noyau recommandent de créer un lien symbolique de /usr/src/linux vers le répertoire des sources. Cela est spécifiques aux noyau avant les 2.6 et ne doit pas être créé sur un système CLFS comme cela causerait des problème avec des paquets que vous pourriez vouloir construire une fois le système CLFS de base terminé.

Aussi, les en-têtes dans le répertoire include du système devraient toujours être celles avec lesquelles Glibc a été compilé, et ne devraient jamais être remplacées par des en-têtes d'une version différente du noyau.

13.2.2. Contenu de Linux

Fichiers installés: config-[linux-version], clfskernel-[linux-version] et System.map-[linux-version]
Répertoire installé: /lib/modules

Descriptions courtes

config-[linux-version]

Contient toute la configuration du noyau

clfskernel-[linux-version]

Le moteur du système Linux. Lorsque vous démarrez votre ordinateur, le noyau est la première partie du système d'exploitation qui est chargée. Il détecte et initialise tous les composants du matériel de l'ordinateur, puis les rend disponibles dans un arbre de fichiers aux logiciels et transforme un simple CPU en une machine multi-tâche capable de lancer des tonnes de programmes apparemment en même temps.

System.map-[linux-version]

Une liste d'adresses et de symboles. Elle liste les points d'entrées et les adresses de toutes les fonctions et des structures de données du noyau.