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
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
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/i386/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
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.