+++ 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.
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
!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
)Â :
build-essential
libelf-dev
(obligatoire)ncurses-dev
(pour utiliser la configuration du menu TUI)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é.
...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.
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 |
---|
![]() |
![]() |
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.
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 ?)
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.
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.
Ă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 !
L'image de couverture décorative est obtenue via L'intelligence artificielle générative de Microsoft.
Installer le noyau et installer le noyau (Gentoo Linux) : https://wiki. gentoo.org/wiki/Installkernel â©