Noyau/Configuration

From Gentoo Wiki
< Kernel
Jump to:navigation Jump to:search
This page is a translated version of the page Kernel/Configuration and the translation is 100% complete.

Cet article décrit la configuration manuelle et la mise en place du noyau Linux.

Une alternative à la configuration manuelle du noyau générique et qui utilise des paramètres qui sont sûrs par défaut sont les noyaux de distributions (NdT: en anglais distributions kernels).

Création du lien symbolique

Le lien symbolique /usr/src/linux (NdT: symlink) devrait toujours pointer sur les sources du noyau en cours d'utilisation. Ceci peut être obtenu de l’une des trois façons suivantes :

1. Installer les sources du noyau avec l’USE flag actif. Cela pointera /usr/src/linux vers les nouvelles sources du noyau installé. Si nécessaire, cela pourra être modifié plus tard avec les deux méthodes qui suivent :

2. Mise en place du lien symbolique avec l’outil eselect :

root #eselect kernel list
Available kernel symlink targets:
[1] linux-6.12.63-gentoo *
[2] linux-6.12.58-gentoo

Ceci affiche les sources du noyau disponibles. L'astérisque indique les sources sélectionnées. Pour les changer, par exemple pour choisir celles correspondant à la deuxième entrée, faites :

root #eselect kernel set 2

3. Mettre en place le lien symbolique à la main :

root #ln -sf /usr/src/linux-6.12.63-gentoo /usr/src/linux
root #ls -l /usr/src/linux
lrwxrwxrwx 1 root root 11 Aug 29 22:10 /usr/src/linux -> /usr/src/linux-6.12.63-gentoo

Configuration

Outils

Le noyau offre différents outils destinés aux utilisateurs avec lequel le configurer. Le tableau suivant est un extrait des commandes communes utilisés pour la configuration. Voir la documentation en upstream pour la liste complète.

Command Description
make config Configuration textuelle. Les options sont affichées l’une après l’autre. Toutes les options ont besoins d’être renseignée, le retour en arrière (modification(s)) est impossible.
make menuconfig Un menu pseudo-graphique basé sur ncurses (entrée texte uniquement). Naviguer à travers le menu pour modifier les options désirées.
make defconfig Génère une nouvelle configuration avec les fichiers defconfig par défauts de l’architecture (ARCH). Utiliser cette option pour retourner à la configuration par défaut qui proviennent des sources.
make nconfig Menu pseudo-graphique basé sur ncurses. Requiert l’installation de sys-libs/ncurses .
make xconfig Menu graphique utilisant Qt5. Requiert l’installation de dev-qt/qtwidgets .
make gconfig Menu graphique utilisant GTK. Requiert l’installation de x11-libs/gtk+ , dev-libs/glib et gnome-base/libglade .
make oldconfig Rapporte les différences entre les versions du noyau pour créer un nouveau .config pour celui-ci.
make olddefconfig Génère une nouvelle configuration avec les valeurs par défaut issues du fichier defconfig fourni pour l'architecture (ARCH), tout en conservant l'ensemble des options précédentes situées dans le fichier .config dans /usr/src/linux/.config. C’est une méthode rapide et sûre pour mettre à jour un fichier config qui a toutes les options de configurations nécessaires pour le support matériel tout en bénéficiant des résolutions de bugs et de patches de sécurité.
make localmodconfig Créer un fichier config basé sur la configuration actuelle et les modules présentement chargés, consultable via la commande lsmod.
make allyesconfig Active toutes les options configurables du noyau. Cela passera toutes les options du noyau à *. S’assurer d’avoir une sauvegarde de la configuration actuelle du noyau avant d’utiliser cette option !
make allmodconfig Active tous les modules du noyau. À noter que cela occupera un peu (plus) d’espace disque.

Il existe aussi plusieurs scripts pour créer diverses configuration par défaut. Ceux-ci peuvent rendre le temps passé dessus moins important. Exécuter la commande suivante pour une liste complète de cibles :

root #make help

Le reste de cet article décrira la configuration en utilisant make menuconfig, mais la procédure est similaire pour les autres outils de construction du noyau.

root #cd /usr/src/linux
root #make menuconfig

Utilisation

Dans le menu affiché la barre bleu indique la position du curseur. Les touches directionnelles et modifient la position du curseur. Les touches directionnelles et traversent la barre de menu dans la partie inférieur et définie ce qui se passera quand la touche Enter est pressée. Pour la barre de menu inférieur, Select change la sélection pour un sous-menu se terminant avec ---> tandis que Exit quitte le sous-menu. En tant qu’alternative, la touche Esc peut être pressée pour quitter le sous-menu, boîte de dialogue ou l’application entière.

Presser une lettre associée pour les touches alphabétiques A-Z déplacera la position du curseur à la ligne qui a ce caractères en gras. Les touches Y, M et N sont exclus pour cette méthode de navigation dans le menu; elles sont réservées à d’autres fins. Si une ligne commence avec Y, M ou N, le prochain caractère sera utilisé pour le raccourcie. Par exemple, relativement à la position courante du curseur, si la prochaine ligne est "Network Device Support --->", presser la touche E déplacera le curseur à cette ligne.

Les symboles suivant peuvent apparaître en amont des lignes dans les menus :

Symbol(s) Description
[ ], [*] Les options entre crochets peuvent être activés ou désactivés. L’astérisque indique que l’entrée du menu est activé. La valeur peut être modifiée avec la touche space. Il est aussi possible de presser la touche Y (Yes, ou oui en français) pour l’activer ou la touche N (No, ou non en français) pour désactiver l’entrée sélectionnée.


Si l’option est activée, la fonctionnalité ou le pilote sélectionné sera construit et inclus dans le noyau et sera toujours chargé au moment de l’amorçage.

< >, <M>, <*> Les options entre chevrons peuvent êtres activées ou désactivées, mais tout aussi bien activé en tant que module (indiqué par un M). Ces valeurs peuvent être modifiées en pressant les touches N/Y comme précédemment ou via la touche M pour activer la fonctionnalité / pilote en tant que module.


Voir l’article Modules du Noyau pour (comprendre) la différenciation.

{M}, {*} Les options entre accolades peuvent être activées ou activées en tant que module, mais sans pouvoir être désactivée. Cela arrive car une autre fonctionnalité / pilote dépend de celle-ci.
-M-, -*- Les options entre traits d’union peuvent être activées de la manière indiquée par une autre fonctionnalité ou un autre pilote. Il n’y a pas d’autres choix.

De plus certaines entrées du menu possèdent une étiquette à la fin :

Tag Description
(NEW) Ce pilote est nouveau dans le noyau et est peut-être insuffisamment stable.
(EXPERIMENTAL) Ce pilote est expérimentale et est certainement insuffisamment stable.
(DEPRECATED) Ce pilote est déprécié et inutile pour la plupart des systèmes.
(OBSOLETE) Ce pilote est obsolète et ne devrait pas être activé.

La plupart des options possèdent une description, que l'on peut visualiser en pressant la touche H ou en choisissant Help (Aide en français) dans la barre de menu.

Sélection du pilote

Voir l’article détection matériel et les articles dans la catégorie matériel.

Rechercher des modules

Au sein de make menuconfig, utiliser la touche / pour chercher les modules et options de configurations par leur nom.

Comme visible ci-dessous, le résultat de recherche affichera un nombre en face des résultats. Presser la touche 1 dans l’exemple ci-dessous fera sauter make menuconfig directement à l’option Bluetooth device drivers dans la structure du menu.

KERNEL Exemple de sortie après avoir recherché HCIBTUSB
Symbol: BT_HCIBTUSB [=m] 
Type : tristate 
Prompt: HCI USB driver 
 Location: 
 -> Networking support (NET [=y]) 
 -> Bluetooth subsystem support (BT [=y]) 
(1) -> Bluetooth device drivers 
 Defined at drivers/bluetooth/Kconfig:5 
 Depends on: NET [=y] && BT [=y] && USB [=m]

Activer la configuration ordinaire de Gentoo Linux

Il y a une option de configuration du noyau nommée CONFIG_GENTOO_LINUX et est seulement présente dans sys-kernel/gentoo-sources et d’autres Projets du Noyau maintenues. Cela ne fait rien tout seul, mais met en place les options requises pour les installations typiques.

Ce paramètre sélectionne automatiquement le support de tmpfs et devtmpfs qui sont nécessaires pour gérer /dev sur Gentoo Linux, mais pourrait être étendu dans le futur pour activer d'autres paramètres obligatoires dans un système Gentoo Linux. Pour une plus ample information, lire l'aide disponible dans la configuration du noyau telle que décrite précédemment dans ce guide.

Kbuild

Attention !
Soyez très prudent concernant la modification des variables d’environnement car cela peut casser le noyau de façon inattendue. NE PAS MÉLANGER les GNU binutils et les LLVM binutils!!! Par exemple make CC=gcc LD=ld.lld AR=llvm-ar ne fonctionnera pas parce que les ar et ld de LLVM ne sont pas compatibles avec GCC.

Le système Kernel build (NdT: Construction du noyau) peut être utilisé pour modifier comment le noyau peut être bâti de manière plus avancé qu’avec make *config, de manière similaire à GNU Make.

root #make LLVM=1 KCFLAGS="-O3 -march=native -pipe"
Remarque
En addition d’autres variables sont expliquées dans Clang/LLVM.

Construction

Après que la configuration ait été accomplie avec succès, compiler le noyau :

root #make -j$(nproc)

-j$(nproc) demande à make d’utiliser tout les cœurs du CPU pour augmenter la vitesse de compilation.

Installation

Si des pilotes sont activés en tant que modules, ils doivent être installés :

root #make modules_install

Les modules seront copiés dans un sous-répertoire de /lib/modules par défaut, mais peuvent être changés en utilisant la variable d’environnement MODLIB .

Remarque
Si l’USE flag dracut a été utilisé sur sys-kernel/installkernel pour automatiser la génération de l’initramfs durant l’exécution de make install, il est recommandé de lancer
root #emerge --ask @module-rebuild
avant d’installer le noyau. Cela assure que tout les modules externes du noyau (ex : NVIDIA, ZFS) sont reconstruits et inclus dans l’initramfs, prévenant de potentiels problèmes d’amorçage ou de fonctionnalités manquantes. Autrement (si le drapeau n’est pas utilisé), les modules externes peuvent être reconstruit plus tard, avant de régénérer l’initramfs (ex : en utilisant dracut --force). Cela assure que les modules mis à jours seront inclus dans l’initramfs.

Pour installer le noyau actuel :

root #make install

Cette commande exécute /sbin/installkernel, qui fait partie du paquet sys-kernel/installkernel . Voir la page installkernel pour plus de détails sur comment cela peut être configuré.

Chargeur d’amorçage

Changer la configuration du chargeur d’amorçage du système pour charger le noyau à l’amorçage de celui-ci.

Lorsque que l’étape du chargeur d’amorçage est terminé, redémarrer le système avec le nouveau noyau.

Comparer la configuration actuelle du noyau avec la configuration par défaut

Utiliser la procédure suivante pour obtenir un aperçu de la configuration du noyau qui dévie de celle par défaut. Gardez à l’esprit que la modification d’un paramètre peut en altérer d’autres en conséquence.

root #cd /usr/src/linux
root #cp -p .config ../.config.working
root #make defconfig
root #mv .config ../.config.default
root #cp -p ../.config.working .config
root #cd ..
root #/usr/src/linux/scripts/diffconfig .config.working .config.default > .config.diff

La fonction chercher dans make menuconfig peut être utilisé pour trouver les symboles et leur interpretations. Quand c’est finit, nettoyer :

root #cd /usr/src/
root #rm .config.working .config.default .config.diff

Thématiser Menuconfig

Il est possible de sélectionner différents schémas de couleurs pour menuconfig en utilisant la variable MENUCONFIG_COLOR. Pour sélectionner un thème utiliser :

root #make MENUCONFIG_COLOR=<theme> menuconfig

Les thèmes disponibles sont les suivants :

Theme Description
mono Des couleurs adaptées à un affichage monochrome
blackbg Un schéma de couleur avec un fond noir
classic Un schéma de couleur avec un fond bleu. Le look classique.
bluetitle La version classique adaptée aux affichages LCD. (Par défaut)

Voir aussi

Ressources externes

  • Building the kernel as root can be harmful (NdT : Construite le kernel en tant que root peut faire du mal)
  • Modprobed-db - logs every module that is modprobed to be used to make a custom config (NdT : journaliser tous les modules qui sont modprobé pour être utilisé dans la création de configuration personnalisée)