Kernel/Gentoo Kernel Configuration Guide/fr

Le but de ce document est d'introduire les concepts d'une configuration manuelle du noyau, et de détailler les pièges les plus courant de la configuration.

Introduction
Gentoo met à votre disposition deux moyens d'installation et de mise à jour du noyau : automatique (genkernel) et manuel. Bien que la méthode automatique puisse être considérée comme plus facile pour l'utilisateur, il y a plusieurs raisons pour lesquelles un grand nombre d'utilisateurs de Gentoo choisit de configure le noyau à la main : plus grande flexibilité, noyau plus compact, temps de compilation plus court, expérience didactique, ennui sérieux, etc.

Ce guide ne parle pas de la méthode automatique (avec genkernel). Si vous préférez utiliser genkernel pour compiler et installer votre noyau, reportez-vous à la documentation de Genkernel.

Ce guide n'a pas l'ambition de documenter la configuration manuelle de A à Z -- le processus de configuration s'appuie sur un large degré de bon sens, et un niveau de connaissance technique relativement élevé de votre système. Au lieu de cela, ce document vous présente les concepts de la configuration manuelle et détaille les pièges les plus courants que l'utilisateur doit éviter.

Ce document a été écrit avec les noyaux récents à l'esprit, pour les architectures les plus courantes. Quelques détails peuvent différer pour les noyaux plus anciens et les architectures plus exotiques, mais la majeure partie du contenu reste pertinente.

À ce stade, nous supposons que les sources du noyau Linux sont dépaquetées sur votre disque dur (de façon générale sous ), et que vous connaissez comment lancer l'utilitaire de configuration  et vous déplacer dans ses menus. Si vous n'en êtes pas encore là, nous mettons à votre disposition d'autres documentations pour vous aider.


 * Le Guide du noyau présente les différents paquets des sources du noyau disponibles.
 * La page Noyau/mise à jour explique comment mettre votre noyau à jour ou comment commuter vers un autre noyau.
 * Le manuel de Gentoo couvre également quelques aspects de l'installation du noyau.

Les bases
Le processus général est plutôt simple : une série d'options vous est présentée, sous forme de menus et sous-menus, et vous sélectionnez la prise en charge du matériel et les fonctionnalités du noyau pertinentes pour votre système.

Le noyau comprend une configuration par défaut, qui vous est présentée la première fois que vous exécutez  sur un jeu de sources particulier. Les choix par défaut sont en général à large portée et raisonnables, ce qui veut dire qu'une majorité d'utilisateurs n'auront que peu de changements à faire à cette configuration de base. Si vous décidez de désactiver une option, assurez-vous que vous avez une compréhension relativement bonne de ce que cette option fait exactement et des conséquence de son inactivation.

Si c'est la première fois que vous configurez un noyau Linux, vous devriez rester conservateur : ne soyez pas trop aventurier, et contentez-vous de faire aussi peu de modification aux réglages par défaut que possible. En même temps, pensez bien qu'il y a une partie de la configuration que vous devez absolument adapter à votre système pour qu'il démarre !

Compilé en dur vs compilé en tant que module
Majoritairement, les options de configuration sont à trois état : elles peuvent être non compilées du tout (N), compilées en dur dans le noyau (Y) ou compilées sous forme de module (M). Les modules sont stockés en externe sur le système de fichiers, alors que les options compilées en dur sont incluses dans l'image du noyau elle-même.

Il y a une différence importante entre compilée en dur et compilée sous forme de module : sauf quelques exceptions, le noyau n'essaye pas de charger un module externe quand vous en avez besoin (ceci est laissé à l'initiative de l'utilisateur). Alors que certaines autres parties du système peuvent disposer de mécanismes de chargement à la demande, et qu'il y ait quelques mécanismes de chargement automatique de module, il est recommandé que vous compiliez la prise en charge du matériel et les fonctionnalités du noyau directement dans le noyau. Le noyau est ainsi assuré de disposer des fonctionnalités et de la prise en charge du matériel quand il en a besoin.

Bien entendu, pour quelques parties de la configuration, compilée en dur est une absolue nécessité. Par exemple, si votre partition root porte un système de fichiers, votre système ne démarrera pas si la prise en charge de ext2 a été compilée en tant que module (le système devrait regarder dans la partition root pour trouver le module ext2, alors que la prise en charge de ext2 ne serait pas encore chargée !)

Prise en charge du matériel
Au delà de détecter le type d'architecture de votre système, l'utilitaire de configuration ne cherche pas à identifier quel matériel est réellement présent sur votre système. Bien qu'il existe des réglages par défaut pour la prise en charge de quelques matériels, il vous faudra trouver et sélectionner les options pertinentes pour votre configuration matérielle.

Ceci nécessite simplement la connaissance des composants à l'intérieur, et connectés, à votre ordinateur, ou pour vous d'identifier ces composants. Pour la plupart des composants, vous devez identifier le jeu de circuits (chipset) utilisé par chacun d'entre-eux, plutôt que leur nom commercial.

Quelques utilitaires sont là pour vous y aider. (partie du paquet ) identifiera votre matériel PCI et AGP, ce qui inclut les composants construits sur la carte mère elle-même. (du paquet ) identifiera les périphériques au ports USB.

La situation est quelque peu confuse à cause des degrés variables de normalisation dans le monde des fabricants de matériel. Sauf si vous vous écartez réellement des standards, vos disques IDE, votre clavier PS/2 ou USB et votre souris devraient simplement fonctionner. Vous obtiendrez une prise en charge VGA de base pour l'écran. Néanmoins, certains périphériques tels que les les adaptateurs Ethernet sont à peine normalisés, c'est pourquoi vous devrez identifier leur jeu de circuits et sélectionner la prise en charge matérielle appropriée pour votre carte spécifique pour disposer d'un accès au réseau.

De plus, alors que certains matériels fonctionnent tout simplement avec les réglages par défaut, vous pouvez être forcé de sélectionner des options plus spécialisées pour tirer le meilleur de votre système. Par exemple, si vous n'activez pas la prise en charge de jeu de circuits approprié pour votre disque IDE, votre disque sera très lent en accès.

Fonctionnalités du noyau
Tout comme pour la prise en charge du matériel, vous devez également penser aux fonctionnalités logicielles dont vous avez besoin dans votre noyau. Un exemple important d'une telle fonctionnalité est la prise en charge des systèmes de fichiers : vous devez sélectionner la prise en charge des systèmes de fichiers utilisés sur vos disques durs et sur vos supports amovibles (par exemple VFAT sur des disques USB flash):

Un autre exemple courant est la fonctionnalité avancé de réseau. Si vous voulez effectuer du routage ou du pare-feu, vous devez vous assurer que les items pertinents de la configuration sont inclus dans votre noyau.

Prêt ?
Maintenant que les concepts ont été présentés, vous devriez être capable d'identifier votre matériel et de naviguer dans les menus de configuration pour sélectionner les options requises du noyau pour votre système.

La suite de cette page vise à éclaircir certaines zones de confusion fréquente, et à fournir des conseils sur la manière d'éviter les problèmes les plus couramment rencontrés par les utilisateurs. Bonne chance !

Les disques SATA sont SCSI
La plupart des ordinateurs de bureau modernes sont livrés avec des unités de stockage (disques durs et lecteurs de CD/DVD) sur un bus Serial ATA, plutôt que sur l'ancien bus Parallel_ATA(câble en ruban).

La prise en charge de SATA dans Linux est mise en œuvre dans une couche connue sous le nom de libata, qui siège en dessous du sous-système SCSI. Pour cette raison, les pilotes SATA sont trouvés dans la section des pilotes SCSI dans la configuration. En outre, vos périphériques de stockage seront traités comme des périphériques SCSC, ce qui veut dire que la prise en charge des disques/CDROM SCSI est également requise. Votre disque dur SATA sera nommé will be named as (e.g.)  et votre lecteur CD/DVD SATA sera nommé (e.g.).

Bien que la majorité de ces pilotes soit peur les contrôleurs SATA, libata n'a pas été conçue pour être spécifique à SATA. Tous les pilotes courant IDE seront aussi portés dans libata dans un futur proche, et après cela, les considérations évoquées plus haut, s'appliqueront aussi aux utilisateurs d'IDE.

Options de configuration pour libata

Jeux de circuits IDE et DMA
Malgré l'introduction de SATA, les périphériques IDE sont encore courants et beaucoup en dépendent. IDE est une technologie parfaitement générique et,grâce à cela, Linux prend en charge presque tous les contrôleurs IDE directement à l'installation sans qu'aucune options spécifique au contrôleur ait besoin d'être activée.

Cependant, IDE est une technologie ancienne, et dans son incarnation originale entrées/sorties programmées, elle est incapable de procurer les débits requis pars les accès rapides aux périphériques des stockage modernes. Le pilote IDE générique est limité à ces modes de transfert PIO, qui conduisent à des débits de transfert bas, et à une utilisation significative de CPU lors du transfert des données vers/du disque.

Sauf si vous avez affaire à un système pré-1995, votre contrôleur IDE prend également en charge un mode de transfert alternatif, connu sous le nom de Direct Memory Access (accès direct à la mémoire - DMA) DMA est beaucoup plus rapide, et l'utilisation du CPU est à peine affectée lors des transferts de données. Si vous souffrez d'une performance système générale faible et que vous utilisez un disque IDE, il est fort probable que vous n'utilisez pas le mode DMA.

Si vous n'utilisez pas libata pour vos disques IDE, alors vous devez vérifier que DMA est activé.

Pour activer le DMA pour vos disques IDE, vous devez simplement activer l'option de configuration pour votre contrôleur IDE.

Contrôleurs des hôtes USB
USB est un bus largement utilisé pour la connexion de périphériques externes à votre ordinateur. Une des raisons du succès de USB est qu'il s'agit d'un protocole standard. Néanmoins, les périphériques de contrôle des hôtes (host contrôleur devices ou HCD) USB mis en œuvre sur l'ordinateur hôte varient un peu. Il y en a trois types :


 * , le Universal Host Controller Interface (Contrôleur d'hôte USB universel). Il prend en charge l'USB 1.1, et se trouve ordinairement sur les cartes mères basées sur des jeux de circuits VIA ou Intel.
 * , l'Open Host Controller Interface (l'interface de contrôleur d'hôte ouvert) . Elle prend en charge l'USB 1.1 et se trouve ordinairement sur les cartes mères basées sur les jeux de circuits Nvidia ou SiS.
 * , l'Extended Host Controller Interface (interface de contrôleur d'hôte étendu). C'est le seul contrôleur d'hôte courant à prendre en charge l'USB-2, et se trouve ordinairement sur tous les ordinateurs disposant de ports USB-2.

La plupart des systèmes arrivent avec deux des types d'interfaces cités ci-dessus : EHCI(USB 2.0), et soit UHCI, soit OHCI (USB 1.1). Il est important que vous sélectionniez les deux types présents sur votre système. Alors que tous les périphériques USB 2.0 sont rétro-compatibles avec USB 1.1, une large proportion des périphériques USB (même ceux fabriqués de nos jours) sont basés sur l'interface USB 1.1 - pourquoi une souris USB aurait-elle besoin de plus de 1.5Mb/s ?

Si vous ne sélectionnez pas les options pertinentes correspondant à votre type de USB HCD, vous pouvez rencontrer des port USB morts : vous y connectez un périphérique mais il n'est pas alimenté ou ne répond pas.

L'utilisation de la commande  (du paquet   ) fait qu'il est relativement facile de détecter quels HCDs sont présents sur votre système. Ignorant le contrôleur FireWire qui est aussi détecté, il est facile d'identifier si votre système nécessite la prise en charge de OHCI et de EHCI :

Dans le noyau Linux 3.12.13 et postérieur, la prise en charge de OHCI pour les contrôleurs USB du bus PCI  doit être activée si le contrôleur USB est OHCI et  qu'une souris ou un clavier USB est utilisé.

Systèmes à multiprocesseur, Hyper-Threading (plusieurs files d'exécution) et Multi-Cœur
Beaucoup d'ordinateurs ont recours à des processeurs multiples mais pas toujours d'une manière immédiatement évidente.


 * Beaucoup des CPUs d'Intel prennent en charge une technolosie appelée hyper-threading,où le CPU est réellement vu par le système comme deux processeurs logiques.
 * La plupart des CPUs Intel/AMD consiste réellement en des processeurs physiques multiples dans un boîtier unique, ils sont connus sous le nom de processeurs multi-cœurs.
 * Quelques ordinateurs de haut de gamme ont réellement plusieurs processeurs physiques installés sur des cartes mères spécialisées pour procurer une augmentation de performance significative par rapport à un système à processeur unique. Vous devez probablement savoir si vous utilisez un tel système car ils ne sont pas bon marché.

Dans tous ces cas, vous devez sélectionner les options du noyau appropriées pour tirer la performance optimale de ces réglages.

x86 High Memory support
Due to limitations in the 32-bit address space of the x86 architecture, a kernel with default configuration can only support up to 896MB RAM. If your system has more memory, only the first 896MB will be visible, unless you enable high memory support.

High memory support is not enabled by default, because it introduces a small system overhead. Do not be distracted by this, the overhead is insignificant when compared to the performance increase of having more memory available!

Introduction
When you read about kernel configurations, you will often see that settings are described as. This short-hand notation is what the kernel configuration actually uses internally, and is what you will find in the kernel configuration file (be it or in the auto-generated  file). Of course, using short-hand notation wouldn't do much good if you cannot translate this to the real location in the kernel configuration. Luckily, the  tool allows you to do just that.

Translating CONFIG_FOO to the real configuration location
Suppose you need to enable, launch the kernel configuration menu  and type in. This will open the search box. In this search box, type  (you can even drop the  ). The next code listing shows the result of this search.

This output yields lots of interesting information.

With this information, you should be able to translate any  requirements tossed at you easily. In short, it means you


 * 1) need to enable the settings described in the Depends on field
 * 2) navigate where Location: points you towards
 * 3) toggle the value referred to by Prompt:

Other kernel configuration documentation
So far, we have only discussed general concepts and specific problems related to kernel configuration, without going into any precise details (such details are for you to discover!). However, other parts of the Gentoo documentation collection provide specialised details for the topics at hand.

You may find these documents helpful while configuring those specific areas, but if you are new to kernel configuration, don't be too adventurous. Start by getting a basic system up and running, you can always come back later to add support for your audio, printing, etc.


 * The ALSA article details the configuration options required for sound card support. Note that ALSA is one exception to the suggested scheme of not building things as modules: ALSA is actually much easier to configure when the components are modular.


 * The Bluetooth article details the options you need in order to use bluetooth devices on your system.


 * The IPv6 router guide describes how to configure your kernel for routing using the next generation network addressing scheme.


 * If you will be using the closed-source nVidia graphics drivers for improved 3D graphics performance, the nVidia Guide lists the options that should and should not be selected on such a system.


 * Amongst other things, the Power Management Guide explains how to configure your kernel for CPU frequency scaling, and for suspend and hibernate functionality.


 * If you are running a PowerPC system, the PPC FAQ has a few sections about kernel configuration.


 * The Printing HOWTO lists the kernel options needed to support printing in Linux.


 * The USB Guide details the configuration required to use common USB devices such as keyboards/mice, storage devices, and printers.

Configuration changes do not take effect
It is very common for users to make a configuration change, but then make a small mistake in the process following on from that point. They reboot into a kernel image that is not the one they just reconfigured, observe that whatever problem they were trying to solve is still present, and conclude that the configuration change does not solve the problem.

The process of compiling and installing kernels is outside the scope of this document, you should refer to the Kernel Upgrade Guide for general guidance. In short, the process is: configure, compile, mount (if not already mounted), copy new kernel image over, reboot. If you miss out any of those final stages, your changes will not take effect!

It is possible to verify if the kernel you are booted from matches the kernel compiled on your hard disk by examining the date and time of compilation. Assuming your architecture is x86 and your kernel sources are installed at :

The above command displays the date and time that the kernel you are currently booted from was compiled.

The above command displays the date and time that the kernel image on your hard disk was last compiled.

If the two times from the above commands differ by more than 2 minutes, it indicates that you have made a mistake during kernel reinstallation and you are not booted from the kernel image that you thought you were!

Modules do not get loaded automatically
As mentioned earlier in this document, the kernel configuration system hides a large behavioural change when selecting a kernel component as a module (M) rather than built-in (Y). It is worth repeating this again because so many users fall into this trap.

When you select a component as built-in, the code is built into the kernel image (bzImage). When the kernel needs to use that component, it can initialise and load it automatically, without any user intervention.

When you select a component as a module, the code is built into a kernel module file and installed on your filesystem. In general, when the kernel needs to use that component, it can't! With some exceptions, the kernel makes no effort to actually load these modules - this task is left up to the user.

So, if you build support for your network card as a module, and you then find that you cannot access your network, it is probably because the module is not loaded - you must either do this manually or configure your system to autoload it at boot time.

Unless you have reasons to do otherwise, save yourself some time by building these components directly into the kernel image, so that the kernel can automatically set these things up for you.

Acknowledgements
We would like to thank the following authors and editors for their contributions to this guide:


 * Daniel Drake
 * Curtis Napier
 * Justin Robinson
 * Åukasz Damentko
 * Jonathan Smith
 * nightmorph