+++ Title = "đŸŒœ Compilez et installez le noyau Linux Ă  partir des sources" Date = 2024-09-01 Description = "Conseils gĂ©nĂ©raux sur la façon de compiler Linux pour des ordinateurs Ă  usage gĂ©nĂ©ral, utiles pour rĂ©soudre des problĂšmes ou obtenir des fonctionnalitĂ©s spĂ©ciales." Featured_Image = "@/Media/Decor/dall-e_44be7d57-5b1d-44ff-bf54-421d95165b5f.jpeg" Downsync = "/en/note/Compile-Install-Linux-Kernel.html" Categories = [ "Linux" ] +++ {{< noticeAutomaticTranslation it >}}

Ce n'est pas souvent que de nouvelles idĂ©es viennent Ă  l'esprit, mais quand elles surviennent, elles sont toujours juste ce qu'il faut de bizarre... Sans trop m'Ă©loigner, c'est justement Ă  cause de cette Ă©volution des choses qu'il y a des annĂ©es, pour le premiĂšre fois, je me suis retrouvĂ© Ă  compiler le noyau Linux Ă  partir des sources — sur un Raspberry Pi 3 entre autres, ce que, avec le recul, je ne recommanderais pas — et maintenant, hier prĂ©cisĂ©ment, encore une autre fois, aprĂšs des annĂ©es (cette fois sur PC, heureusement ), dans un but que je ne gĂącherai pas.

Pourquoi recompiler le noyau ? đŸ˜Żïž

Linux est basĂ© sur une architecture monolithique, ce qui ne nous prĂ©occuperait guĂšre... si ce n'Ă©tait du fait que cela a une implication gĂȘnante : toute fonction qui fonctionne au niveau du noyau doit y ĂȘtre compilĂ©e. . MĂȘme le mĂ©canisme des soi-disant modules ne couvre pas toutes les situations possibles (du moins pas sur le plan pratique), et on peut donc se retrouver dans des situations dans lesquelles le noyau fourni par la distribution (ou par le fabricant du matĂ©riel), mĂȘme s'il est mis Ă  jour, n'a pas quelque chose qui est nĂ©cessaire et doit donc ĂȘtre remplacĂ©.

ConsidĂ©rant la variĂ©tĂ© infinie des distributions Linux, des rĂ©fĂ©rentiels qui distribuent des noyaux compatibles ou non, et en combinant cela avec la diversitĂ© des options individuelles qui peuvent ĂȘtre activĂ©es lors de la compilation du noyau... ce n'est pas seulement dans de rares cas que la compilation Ă  partir des sources est la seule solution, mais c'est souvent la plus pratique. Heureusement, la compilation du noyau Linux est trĂšs simple — nettement plus facile que l'application de bureau Linucs moyenne, avec trois mille dĂ©pendances toujours en conflit — mais il n'y a peut-ĂȘtre pas de dĂ©tails si immĂ©diats dans le processus, alors
 voici ma note

!

0. DĂ©part et prĂ©requis đŸ“Šïž

Cette note porte sur la recompilation plus gĂ©nĂ©rique du noyau Linux, c'est Ă  dire la variante officielle (celle de Linus Torvalds) sur et pour un PC de bureau x86_64 (ou AMD64). Pas de forks ou de variantes corrigĂ©es, pas de versions OEM merdiques, pas d'installation sur des appareils embarquĂ©s ou autrement Ă©sotĂ©riques, pas de compilation distribuĂ©e ou multiplateforme. Pour les cas plus ou moins limites, les choses Ă  faire peuvent varier plus ou moins, mĂȘme si la tendance reste la mĂȘme... tu vois, allez, le fait est que j'assume cette situation. Dans mon cas, il n'y a mĂȘme pas de modules de noyau propriĂ©taires.

Mis Ă  part les outils favoris pour obtenir le noyau, le dĂ©compresser si nĂ©cessaire, et quelques distractions pour passer un temps considĂ©rable, les prĂ©requis sont assez minimes. Au minimum, vous avez besoin d'un compilateur C (gcc) pour des raisons Ă©videntes, de GNU Make pour exĂ©cuter les makefiles, de quelques outils assortis au nom oubliable et de quelques bibliothĂšques super spĂ©cifiques d'intĂ©rĂȘt limitĂ©. Ensuite, je pense que d'autres packages peuvent ĂȘtre nĂ©cessaires, en fonction de la distribution Linux utilisĂ©e ou des fonctionnalitĂ©s Ă  compiler.

En fait, il n'est pas trĂšs clair sur le Web quels packages sont vraiment nĂ©cessaires et lesquels quelqu'un qui a rĂ©alisĂ© d'autres guides a dit "eh bien, mettons-le juste pour ĂȘtre sĂ»r"... Je mettrai Ă  jour ici avec le prix prĂ©cis des listes au fur et Ă  mesure que je vĂ©rifie, y compris des planches excessives si nĂ©cessaire (pour ceux qui acceptent de perdre de l'espace mais pas du temps). Pour moi, c'est gĂ©nĂ©ralement une stratĂ©gie d'installer le minimum possible lorsqu'une exigence n'est pas claire, de dĂ©marrer la compilation et d'installer toute autre dĂ©pendance lorsque des erreurs surviennent Ă  cet Ă©gard.

Debian et dérivés (apt) :

1. Obtention du code ⛓

Le code source Linux peut ĂȘtre pris officiellement depuis Git principal, depuis Torvalds GitHub , ou < un href="https://kernel.org" rel="noopener nofollow" target="_blank">du site Kernel.org. Je prĂ©fĂšre la derniĂšre option, qui affiche bien en Ă©vidence les derniĂšres versions rĂ©ellement nĂ©cessaires, jusqu'Ă  la branche prise en charge la plus ancienne.

Il existe plusieurs versions prises en charge Ă  un moment donnĂ©. GĂ©nĂ©ralement, s'il n'y a aucune raison d'installer un noyau plus ancien, un noyau plus rĂ©cent est prĂ©fĂ©rable ; Ce n’est pas trop nouveau cependant, car vivre Ă  la pointe de la technologie signifie perdre du sang, avec parfois des problĂšmes parfois mĂȘme graves qui peuvent surgir ! Du coup, j'Ă©vite la branche mainline, mise Ă  jour quotidiennement ou presque, comme la peste, et choisis gĂ©nĂ©ralement stable, mise Ă  jour avec un peu "plus de jours. D'autres utilisateurs pourraient lĂ©gitimement prĂ©fĂ©rer le plus rĂ©cent longterm (celui du haut), pour encore plus de stabilitĂ©, mais je le trouve inutile.

Pour chaque ligne de version, à part la date, ce qui compte c'est le lien [tarball], donc vous téléchargez ce fichier là. Vous pouvez ensuite l'extraire dans un dossier pratique, entre autres, avec la commande tar xvf . Toutes les commandes à exécuter à partir de ce point se trouveront dans le dossier préparé.
kernel.org

...Vous devez également télécharger le fichier PGP, lorsqu'il est présent, qui sert à vérifier que le téléchargement est intact et qu'il provient de distributeurs légitimes. En réalité, cependant, toutes les versions ne l'ont pas déjà (ce qui implique qu'au fond...), le téléchargement se fait depuis le site officiel avec HTTPS (il sera donc difficile de le modifier), c'est une archive compressée (donc si elle est corrompue devrait échouer l'extraction), et faire la vérification est une douleur époustouflante dans le cul. D'autres institutions auront des exigences de sécurité plus élevées, mais pour les utilisateurs privés, c'est franchement ennuyeux, je ne le fais pas, je m'en fiche.

2. Configuration du noyau đŸ”©ïž

La configuration du noyau est la partie la plus complexe... parce que vous ne pouvez pas exécuter de commandes par inertie, mais vous devez choisir ce dont vous avez réellement besoin, eh bien, avoir le noyau avec des options osseuses . Il existe, comme mentionné, des configurations infinies et différentes maniÚres de les utiliser. Le point principal est qu'il existe un énorme fichier texte, avec diverses options (principalement booléennes), que vous pouvez modifier.

Modifier cette chose Ă  la main est cependant fou, car il existe des outils intelligents basĂ©s sur des menus intĂ©grĂ©s au processus de construction pour gĂ©rer les diffĂ©rentes possibilitĂ©s. Ici aussi, un demi-gĂąchis, mais le choix se porte principalement entre deux programmes respectivement TUI et GUI, qui peuvent ĂȘtre invoquĂ©s respectivement avec make menuconfig et make xconfig. Je prĂ©fĂšre xconfig pour plus de commoditĂ© et, bien que j'aie utilisĂ© la configuration du menu Curses dans le passĂ©, et qu'elle soit assez intuitive pour moi, apparemment pour beaucoup, ce n'est pas le cas... et le comment utiliser ce menu n'est pas le sujet d'aujourd'hui.

menuconfig contre xconfig
menuconfig
xconfig

Si vous ne faites rien d'autre, la configuration que vous allez modifier est celle par dĂ©faut du noyau au fur et Ă  mesure de son dĂ©veloppement. Je n'ai jamais eu de problĂšmes pour l'utiliser comme base, mais, si nĂ©cessaire, en plus de ceux partagĂ©s par d'autres utilisateurs, vous pouvez utiliser celui de la distribution actuelle. Selon la façon dont votre systĂšme expose la configuration du noyau, vous pouvez (gĂ©nĂ©ralement) la lire avec cat /boot/config-$(uname r), cat /boot/config, ou zcat /proc/config.gz. Écrivez-le simplement (>) dans le fichier ./.config pour l'appliquer Ă  la configuration actuelle.

Dans ce cas, je voulais activer le support du nouveau pilote NTFS, donc dans xconfig j'appuie sur CTRL+F, je recherche "ntfs3" et je rÚgle sur (Y) l'option qui parle de "NTFS Read/Write quelque chose quelque chose" ; puis, je sauvegarde la configuration, je ferme, et... j'ai terminé, incroyable.

3. Compilation du code 🧑u200dđŸłïž

Avec la compilation, c'est un moment ennuyeux, car il faut simplement laisser le temps à l'ordinateur de traiter des millions (!) de lignes de code. Ce n'est pas bon, mais au moins ce n'est pas la fin du monde : sur n'importe quel PC qui n'est pas vraiment un hack, vous devriez le faire en moins de 4 heures. Sur le Raspberry Pi 3 cela m'a pris une journée et demie avec le CPU à températures nucléaires (et aussi pour cette raison je le déconseille...), mais sur mon PC (Ryzen 3 3200G, 16 Go de RAM dont un peu sont occupés par la compilation, sur un SSD bas de gamme) Je pense qu'il m'a fallu un peu moins de 3 heures pour compiler la version 6.10.7.

Il vous suffit d'exĂ©cuter make, et Linucs se adaptera Ă  l'architecture CPU actuelle, vive la magie ! Mieux encore, make -j$(nproc) pour utiliser tous les cƓurs de processeur disponibles... La poignĂ©e d'heures, je dois le souligner, sont mesurĂ©es par rapport Ă  cela, sinon ce serait une demi-journĂ©e, puisque mon PC a 4 cƓurs ; il pourrait le faire beaucoup plus tĂŽt en ayant plus de cƓurs, car il peut compiler efficacement encore plus de fichiers en parallĂšle.

Au moins pendant les premiĂšres minutes, c'est une bonne idĂ©e de garder un Ɠil sur le terminal, pour voir si des erreurs se produisent et si la compilation s'arrĂȘte. Des erreurs absurdes ne me sont jamais arrivĂ©es, mais, comme je l'ai dit, si vous n'installez pas toutes les dĂ©pendances, quelque chose en rapport avec celles-ci pourrait sortir... dans ce cas, vous installez ce qui manque (en rĂ©fĂ©rence Ă  votre distribution), et continuez avec la commande prĂ©cĂ©dente.

En fonction de votre configuration, vous aurez besoin de plus ou moins d'espace disque pour terminer la compilation. MĂȘme si le noyau lui-mĂȘme ne pĂšse jamais plus de quelques Mo (et les modules quelques dizaines de Mo), le dossier pesait en fin de compte environ 22 Go, c'est donc une bonne idĂ©e soit de vous assurer que vous disposez de suffisamment d'espace, soit vĂ©rifiez de temps en temps que cela ne se termine pas. Et si cela se termine pendant le processus, vous libĂ©rez simplement de l’espace et continuez comme avant. (Tant que votre systĂšme de fichiers n'est pas corrompu simplement en Ă©tant plein Ă  100 %, n'est-ce pas BTRFS ?)

4. Installation des noyaux et des modules đŸ—ïž

Vous n'avez pas besoin des autorisations root pour compiler le noyau, ce qui est pratique au cas oĂč vous souhaiteriez voler temporairement l'ordinateur le plus puissant de quelqu'un d'autre pour faire le travail... mais, pour l'installer, vous avez Ă©videmment besoin de celles du systĂšme actuel. .

Ici, c'est non seulement simple, mais aussi assez rapide (quelques minutes maximum) : en lançant (en tant que root) d'abord make install, puis INSTALL_MOD_STRIP=1 make install_modules, ils seront installĂ©s respectivement dans les chemins appropriĂ©s (en supposant que vous n'ayez pas modifiĂ© les noms) : l'image du noyau (vmlinuz-x.x.x-. ..), gĂ©nĂ©ralement dans /boot et les modules, gĂ©nĂ©ralement dans /lib/modules/linux-x.x.x-...< /code> . Les modules sont des fichiers distincts du noyau, car ils sont chargĂ©s par le systĂšme lorsque cela est nĂ©cessaire... le fait est que certains d'entre eux sont utilisĂ©s pour terminer le dĂ©marrage, ils doivent donc ĂȘtre installĂ©s.

Vous devez Ă©galement prĂ©parer ce que l'on appelle le systĂšme de fichiers init, ou disque virtuel initial ; normalement, il se retrouve Ă©galement dans /boot, sous le nom initrd.img-x.x.x-.... Et cette Ă©tape serait assez gĂȘnante s'il n'y avait pas de kernel-install, de script inclus avec systemd, ou son alternative installkernel. Ayant systemd, au moins le premier devrait dĂ©jĂ  ĂȘtre installĂ©, et dans ce cas (en supposant les noms d'avant) faites simplement (en tant que root) kernel-install add x.x.x-... /boot/ vmlinuz- x.x.x-...; alternativement, avec le deuxiĂšme, installkernel x.x.x-... /boot/vmlinuz-x.x.x-....1

Remarque : ceux qui dĂ©veloppent avec le noyau (pas ceux qui lisent cet article, j'en ai bien peur) voudront peut-ĂȘtre ne pas dĂ©finir la variable d'environnement INSTALL_MOD_STRIP=1, car le dĂ©bogage sans le dĂ©bogage, que cet indicateur supprime, est difficile... mais pour les utilisateurs mortels ordinaires comme moi, ils gaspillent simplement de l'espace (Ă  tel point que les distributions les emballent sĂ©parĂ©ment). De plus, ceux qui ne dĂ©veloppent pas nĂ©cessairement avec le noyau, mais doivent compiler des modules externes ou faire d'autres astuces, devraient Ă©galement installer les fichiers d'en-tĂȘte correspondants sur le systĂšme : make headers_install ( toujours en tant que root

Au moins sur les distributions "complĂštes", make install puis kernel-install devraient Ă©galement avoir dĂ©jĂ  configurĂ© le chargeur de dĂ©marrage, au moins avoir GRUB. Dans le cas, pour ainsi dire, de distributions "plus DIY" (que je n'utilise pas, d'ailleurs), ainsi que de configurations de dĂ©marrage plus inhabituelles... ce n'est pas mon cas, donc je sais rien, et je ne dirai rien. Les configurations de dĂ©marrage sont une bĂȘte pour une autre fois.

5. Testez le noyau đŸ’„ïž

Si le noyau est installé et que le chargeur de démarrage a été correctement configuré, redémarrez simplement votre ordinateur pour en profiter. Il est bon de rappeler que si vous utilisez GRUB, certains disent que le nouveau noyau n'est pas sélectionné par défaut et qu'il faut le choisir manuellement depuis le menu de démarrage... mais dans mon cas, sous Linux Mint Debian Edition, il m'a semblé qu'à la place, il avait en fait été défini par défaut.

Encore une fois, si, grĂące au pingouin, le systĂšme dĂ©marre enfin, utilisez simplement la commande uname -r pour vĂ©rifier la version du noyau en cours d'exĂ©cution. À ce stade, c'est une bonne idĂ©e de vĂ©rifier que la configuration souhaitĂ©e fonctionne rĂ©ellement... mais la maniĂšre de procĂ©der varie d'une fonctionnalitĂ© Ă  l'autre, au cas par cas. Pour au moins confirmer que la configuration spĂ©cifiĂ©e existe, vĂ©rifiez simplement la configuration actuelle du noyau comme au point 2.

À ce stade, si tout fonctionne et qu'aucune autre modification n'est nĂ©cessaire, vous pouvez Ă©galement supprimer l'Ă©norme dossier de compilation et le noyau restera. Si vous devez Ă©galement dĂ©sinstaller le noyau Ă  l'avenir, supprimez simplement les fichiers prĂ©cĂ©demment installĂ©s normalement et reconfigurez le chargeur de dĂ©marrage de maniĂšre appropriĂ©e.

Conclusion đŸŽŠïž

Être capable de compiler le noyau Ă  partir du code source est une autre de ces choses que nous, les utilisateurs de Linux, pouvons faire, et que les utilisateurs de Windows ne nous envient franchement pas. Mais c'est parce qu'ils aiment gagner facilement, avec leur NT, basĂ© sur une conception de micro-noyau... c'est vrai, maintenant que le but de l'article est terminĂ©, je peux dire des bĂȘtises Ă  ma guise.

Copium mis Ă  part, compiler Linux peut ĂȘtre quelque chose d'amusant Ă  faire au moins une fois. Si, comme moi, vous vous trouvez dans des situations inconfortables, il faut le faire, il n’y a pas grand-chose Ă  faire ; Cependant, si vous voulez juste vous amuser un peu, l'une des nombreuses choses que vous pouvez faire est peut-ĂȘtre de compiler un noyau ultra-spĂ©cifique et super optimisĂ© pour votre machine ou Ă  des fins de virtualisation. Et bien sĂ»r, cela consomme un peu d'Ă©nergie, mais jamais autant que le minage de crypto-monnaies ou le rendu de missiles nuclĂ©aires dans Blender !

{{% i18n notes-refs %}}

L'image de couverture décorative est obtenue via L'intelligence artificielle générative de Microsoft.

  1. Installer le noyau et installer le noyau (Gentoo Linux) : https://wiki. gentoo.org/wiki/Installkernel ↩