Recherche de site Web

Configuration du noyau Linux


Bien que nous ayons déjà parlé de la compilation et de la configuration du noyau, nous nous sommes concentrés sur l’idée générale. Cette fois-ci, nous voulons approfondir la partie configuration, en vous donnant des conseils utiles dont vous aurez besoin lors de l’adaptation d’un noyau pour qu’il corresponde parfaitement à votre matériel.

L’idée principale derrière cela est que vous aurez besoin de connaître extrêmement bien votre matériel afin d’avoir un noyau construit exactement pour lui. Au début, nous couvrirons ce dont vous aurez besoin pour compiler votre noyau, puis nous passerons à la configuration, à la compilation et à l’installation du noyau Linux.

Veuillez noter que cette fois-ci, il n’est pas très important que vous compilez un noyau vanille ou un noyau de distribution. Nous vous recommanderons cependant un « modus operandi », ce qui ne signifie bien sûr pas que vous devez le suivre. Après avoir lu ce guide, vous serez en mesure de décider ce qui vous convient le mieux. Nous attendons une connaissance modérée des rouages du système Linux et des outils de développement.

Dans ce tutoriel, vous allez apprendre :

  • Comment télécharger le code source du noyau Linux
  • Comment déterminer le matériel dont vous disposez
  • Comment compiler le noyau Linux configuré
  • Comment installer et utiliser le nouveau noyau

Télécharger le code source du noyau Linux

Pour commencer, nous allons télécharger le code source Linux depuis GitHub. Cela peut être fait avec la commande git suivante.


git clone https://github.com/torvalds/linux.git

Même si nous allons réduire la taille du noyau dans notre tutoriel, il aura toujours besoin d’un peu de puissance pour être compilé dans un délai décent. Ainsi, alors que sur un système multicœur moderne, cela prendra ~15 minutes, sur un système plus ancien et plus lent, cela peut prendre même un jour ou deux. La compilation de grands projets sollicite beaucoup la machine, en particulier la mémoire.

Apprendre à connaître votre matériel

Si vous êtes déjà sûr de savoir ce qui se cache sous le capot de votre ordinateur, vous pouvez sauter cette partie. Si ce n’est pas le cas, ou si vous avez des doutes, lisez la suite. Prenez votre temps avec cette partie car elle est cruciale pour obtenir un noyau spécialement conçu pour votre machine.

Pour obtenir des informations sur le matériel de votre système, vous pouvez utiliser la commande lspci.


sudo lspci -vv > lspcioutput

Cela crée un fichier nommé lspcioutput (changez le nom si vous le souhaitez, bien sûr) et le remplit avec les informations de la commande lspci, exécutée verbeusement pour plus de détails. Ouvrez le fichier créé avec votre éditeur préféré et gardez-le à portée de main. Lisez tout pour avoir une idée générale de vos composants matériels.

Pour aller plus loin dans notre exemple, voici ce qui apparaît dans notre sortie lspci au niveau de la partie contrôleur Ethernet :


00:06.0 Ethernet controller: nVidia Corporation MCP65 Ethernet (rev a3)
        Subsystem: Giga-byte Technology Device e000
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- 
SERR- FastB2B- DisINTx+
         Status: Cap+ 66MHz+ UDF- 
FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0 (250ns min, 5000ns max)
        Interrupt: pin A routed to IRQ 42
        Region 0: Memory at f6007000 (32-bit, non-prefetchable) [size=4K]
        Region 1: I/O ports at c800 [size=8]
        Capabilities: [44] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst- PME-Enable+ DSel=0 DScale=0 PME-
        Capabilities: [50] MSI: Enable+ Count=1/8 Maskable+ 64bit+
                Address: 00000000fee0300c  Data: 4171
                Masking: 000000fe  Pending: 00000000
        Capabilities: [6c] HyperTransport: MSI Mapping Enable- Fixed+
        Kernel driver in use: forcedeth

Comme vous pouvez le voir, vous obtenez beaucoup d’informations sur le matériel, des informations que nous pourrions avoir besoin de trier afin d’obtenir ce dont nous avons besoin. Ce dont nous avons besoin dans ce cas, c’est du nom (nVidia Ethernet MCP65) et du pilote utilisé, c’est-à-dire forcé.

Si vous voulez savoir quelle option vous devez activer dans la configuration du noyau afin d’obtenir le module forcedeth, Google pour « forcedeth kernel config » et vous découvrirez que ce que nous recherchons est CONFIG_FORCEDETH. Facile.

LSPCI n’est pas un guichet unique, comme son nom l’indique. En règle générale, /proc et /sys vous donneront beaucoup d’informations sur votre matériel. Ce que vous ne trouverez pas dans la sortie lspci, c’est, par exemple, des informations sur le processeur. /proc/cpuinfo vous aide avec exactement les informations dont vous avez besoin.

Si vous avez des périphériques externes connectés par USB que vous souhaitez prendre en charge, lsusb est votre ami. Si vous ne savez pas avec certitude quels pilotes vous aurez besoin pour un matériel spécifique et que Google ne vous aidera pas, essayez de laisser toutes les options qui semblent liées activées. La surcharge sera insignifiante et après avoir acquis un peu d’expérience, vous saurez mieux ce qu’il faut laisser activé et ce qu’il faut désactiver. Ne vous attendez pas à obtenir un noyau parfait dès le départ, c’est en forgeant qu’on devient forgeron.

NOTE
Consultez notre tutoriel sur Apprendre à connaître le matériel de votre système Linux afin de voir un tas de commandes et d’astuces qui révéleront des informations sur le matériel de votre système.

Une fois que vous pensez avoir couvert toutes les bases, asseyez-vous et réfléchissez à nouveau : de quoi aurez-vous besoin à l’avenir ? Un lecteur de carte externe ? Un iPod ? Activez les pilotes et vous éviterez de futurs problèmes liés à l’absence de support matériel.

Nous vous suggérons d’utiliser le stylo et le papier classiques pour rédiger une liste avec votre configuration matérielle, en détail avec les modules du noyau utilisés, etc. Les fichiers vont et viennent, les disques durs aussi, mais un morceau de papier collé au boîtier quelque part vous aidera et peut-être aidera les autres.

Que faites-vous avec l’ordinateur ? Utilisez-vous la virtualisation ? Activez la prise en charge de Xen et/ou KVM. Votre distribution applique-t-elle SELinux ou Tomoyo ou un autre cadre de sécurité ? En avez-vous besoin ? Activez les pièces respectives.

Maintenant que nous sommes prêts, passons à la partie configuration.

Comment configurer le noyau Linux

Nous avons dit plus tôt que nous décririons notre méthode : eh bien, la voici. Nous utilisons la configuration de la distribution, bien sûr si nous voyons qu’elle fonctionne avec notre matériel, ce qui arrive généralement, puisque nous n’avons rien d’exotique.

Il devrait y avoir un fichier config-5.13.0-27-generic dans votre répertoire /boot, bien que le nom exact du fichier soit probablement différent, puisqu’il change à chaque nouvelle version du noyau Linux. Nous pouvons simplement le copier dans le fichier .config de notre répertoire du noyau Linux cloné, qui dans notre cas est ~/linux/.config.

  1. Adaptez la commande suivante pour utiliser vos propres chemins d’accès et noms de fichiers.

    
    cp /boot/config-5.13.0-27-generic ~/linux/.config/.config 
    

    Utilisez la version qui est aussi proche que possible du noyau que vous êtes sur le point de compiler. Ainsi, vous vous assurerez que vous n’aurez aucun problème de compatibilité.

  2. Si vous souhaitez simplement utiliser le fichier de configuration tel quel, il suffit de faire :

    
    make oldconfig 
    

    Ensuite, procédez à la compilation. Cependant, nous ne le voulons pas, nous allons donc simplement exécuter cette commande :

    
    make menuconfig 
    
  3. Vous verrez un menu basé sur des malédictions et facile à utiliser. Allez dans « Charger un fichier de configuration alternatif » et entrez le nom de votre fichier de configuration (.config, dans notre exemple, et recommandé). Vous pouvez maintenant procéder à la modification des options et enregistrer le fichier de configuration à la fin.

  4. Dans la « Configuration générale », nous laissons généralement les choses telles qu’elles sont, mais vous êtes bien sûr libre de modifier ce que vous voulez. L’avertissement habituel s’applique : ne changez pas ce que vous ne savez pas. N’oubliez pas que ce type de configuration est basé sur les dépendances : si vous désactivez/activez un élément, les éléments qui en dépendent seront également affectés. Ainsi, par exemple, si vous désactivez la mise en réseau, toutes les options liées au réseau seront également désactivées automatiquement.

  5. « Type de processeur et caractéristiques » doit être modifié pour refléter votre processeur cible : nous avons un processeur basé sur AMD K8, nous avons donc sélectionné « Famille de processeurs -> Opteron/Athlon64/Hammer/K8 ».

  6. Dans « Prise en charge réseau », puisqu’il s’agit d’un ordinateur de bureau/poste de travail avec une simple connexion Ethernet, nous avons désactivé la radio amateur, l’infrarouge, le Bluetooth, le sans fil et d’autres options qui ne s’appliquent pas. Bien sûr, votre kilométrage peut varier et va varier. N’oubliez pas que chaque élément a un menu d’aide associé, accessible via le bouton « Aide » dans la partie inférieure de l’écran, et vous découvrirez ce que fait le pilote, quelle couverture matérielle il a, etc.

  7. En allant plus loin dans « Pilotes de périphériques », vous aurez probablement beaucoup à désactiver, car voici la majeure partie des pilotes matériels pris en charge par Linux. Gardez la fiche de configuration matérielle à portée de main et faites des choix judicieux. Si au début votre nouveau noyau ne démarre pas, démarrez un noyau fonctionnel (réglez le délai d’expiration de votre chargeur de démarrage à quelque chose comme 10 secondes pour que vous puissiez avoir le temps de choisir) et voyez ce qui n’a pas fonctionné. Utilisez la documentation intégrée à l’arborescence et Internet.

  8. En allant plus loin dans le « Hacking du noyau », si vous voulez être (devenir) un développeur de noyau, vous trouverez ici des options pour vous aider à isoler et documenter les bogues. Sinon, laissez-les tels quels, car les options de débogage ont tendance à gonfler et à ralentir votre système.

  9. Une fois que vous avez terminé, sélectionnez « Enregistrer un autre fichier de configuration » et entrez .config (recommandé à nouveau), puis Quitter. Vous êtes maintenant prêt à compiler votre noyau. Un dernier conseil, cependant : commencez par jouer la sécurité, puis éliminez progressivement les pilotes inutiles jusqu’à ce que vous obteniez un noyau mince et fonctionnel. Il est plus facile de passer du grand au plus petit que l’inverse.

Construire et installer le noyau Linux

Maintenant que nous avons configuré notre noyau avec les options appropriées, nous pouvons passer à sa compilation. Comme mentionné précédemment, le processus de compilation peut prendre un certain temps, en fonction du matériel de votre système.

  1. La construction du noyau Linux est en fait la même sur n’importe quel système :

    
    make
    

    Cela construira l’image du noyau que vous installerez plus tard. Vous pouvez utiliser -jn comme argument make, où n sera le nombre de cœurs de processeur dans votre système + 1 afin d’activer la construction parallèle qui, bien sûr, accélérera le processus.

  2. Cette prochaine étape est également universelle :

    
    make modules_install
    
  3. Sur la plupart des distributions, cette prochaine étape sera également identique. Sur d’autres, comme Arch, vous devrez utiliser cp au lieu de make. Vous trouverez toutes les façons d’installer un noyau personnalisé en ligne, ou vous voudrez créer un paquet de noyau et l’installer simplement avec les outils de gestion de paquets habituels. Quoi qu’il en soit, n’oubliez pas que la documentation de la distribution a la priorité ici.

    
    make install
    
  4. Et maintenant... Vous avez un nouveau noyau installé, testons-le ! Redémarrez et sélectionnez le nouveau noyau pour le démarrage.

Dépannage des bogues dans votre noyau

Si vous avez compilé un noyau vanille et que vous trouvez un bogue, comme un oups ou une panique, lisez la documentation (REPORTING-BUGS à la racine de l’arborescence du noyau) et documentez votre bogue de la manière la plus complète possible. S’il s’agit d’un noyau corrigé par une distribution, utilisez les outils de rapport de bogues de cette distribution, bien sûr, et les responsables parleront en amont pour résoudre le problème.

Réflexions finales

Gardez toujours un noyau et un fichier de configuration en bon état de fonctionnement à portée de main afin d’économiser du temps et de l’énergie. Un bon noyau personnalisé vous donnera souvent un système plus réactif, surtout si vous utilisez une distribution à usage général qui inclut presque tous les pilotes de noyau imaginables. Bonne chance.

Articles connexes: