Kernel/Gentoo Kernel Configuration Guide/fr

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

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 configurer 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 document Noyau/Vue d'ensemble 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 de, 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 raccordés aux 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 du 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 de la configuration. En outre, vos périphériques de stockage seront traités comme des périphériques SCSI, ce qui veut dire que la prise en charge des disques/CDROM SCSI est également requise. Votre disque dur SATA sera nommé  (par exemple)  et votre lecteur CD/DVD SATA sera nommé (par exemple).

Bien que la majorité de ces pilotes soit pour les contrôleurs SATA, libata n'a pas été conçue pour être spécifique à SATA. Tous les pilotes courants 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 option spécifique au contrôleur ait besoin d'être activée.

Cependant, IDE est une technologie ancienne, et dans son implémentation 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 (Interface de 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 ouverte) . 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 étendue). C'est le seul contrôleur d'hôte courant à prendre en charge l'USB-2.0. Il 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) est basée 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 technologie 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.

Prise en charge de la mémoire x86 haute
À cause des limitations de l'adressage sur 32 bits des architectures x86, un noyau compilé avec les options par défaut ne prendra en charge que 896 MO de mémoire RAM. Si votre système dispose de plus de mémoire, seuls les premiers 896 MO seront visibles, sauf si vous activez la prise en charge de la mémoire haute.

La prise en charge de la mémoire haute n'est pas activée par défaut, parce qu'elle introduit une légère surcharge. Ne vous laissez pas distraire par cela, la surcharge est insignifiante comparée au gain de performance procuré par une augmentation de la taille de la mémoire !

Introduction
Si vous lisez des choses sur la configuration du noyau, vous verrez souvent que les paramètres sont notés. Cette notation abrégée est ce que la configuration du noyau utilse réellement en interne, et est aussi ce que vous trouverez dans le fichier de configuration du noyau (soit ou dans le fichier auto-généré  ). Bien sûr, l'utilisation de cette notation abrégée ne servirait pas à grand chose si vous ne pouviez la traduire en son emplacement réel dans les menus de configuration du noyau. Heureusement, l'outil lancé par   vous permet de le faire.

Traduire CONFIG_FOO en un emplacement réel dans les menus de configuration
Supposons que vous deviez activer , lancez le menu de configuration du noyau  et tapez. Ceci ouvrira une boîte de recherche. Dans cette boîte de recherceh, tapez  (vous pouvez même ignorer le  ). Le listing qui suit illustre ce que vous obtenez.

Cette sortie nous fournit une multitude d'informations intéressantes.

Grâce à ces informations, vous devriez être capable de traduire toutes les exigences qui vous sont demandées facilement. En bref, cela signifie que


 * 1) vous devez activer les paramètres décrits dans le champ Depends on (dépend de)
 * 2) vous devez naviguer là où le champ Location: (emplacement :) vous dirige
 * 3) vous devez basculer la valeur référencée par Prompt: (invite de commande:)

Autres documentations sur la configuration du noyau
Jusqu'à maintenant, nous avons seulement discuté les concepts généraux et les problèmes spécifiques relatifs à la configuration du noyau, sans entrer dans les détails (c'est à vous de découvrir ces détails !). Néanmoins, d'autres parties de la documentation de Gentoo vous fournissent des détails spécialisés selon le thème que vous consultez.

Vous pouvez trouver ces documents fort utiles en configurant des domaines spécifiques, mais si vous débutez avec la configuration du noyau, ne soyez pas trop téméraires. Commencez par un système de base qui tourne. Vous pourrez toujours rajouter ensuite la prise en charge de votre audio, de votre impression, etc.


 * L'article ALSA fournit des détails sur les options de configuration requises pour la prise en charge des cartes son. Notez qu'ALSA est une exception au schéma suggéré de ne pas construire les choses en tant que modules : ALSA est réellement plus facile à configurer lorsque les composants sont modulaires.


 * L'article Bluetooth fournit les détails sur les options requises pour l'utilisation des périphériques bluetooth sur votre système.


 * Le  Guide du routage IPV6 explique comment configurer votre noyau pour le routage qui utilise le schéma d'adressage réseau de la nouvelle génération.


 * Si vous utilisez des pilotes graphiques propriétaires nVidia pour une performance graphique 3D  améliorée, le guide nVidia  présente les options que vous devriez, ou ne devriez pas, activer sur un tel système.


 * Entre autres choses, le  Guide de gestion de l'énergie explique comment configurer votre noyau pour l'adaptation de fréquence de votre CPU, et pour les fonctionnalités de mise en veille et d'hibernation.


 * Si vous utilisez un système PowerPC, la  PPC FAQ dispose de quelques sections relatives à la configuration du noyau.


 * Le Guide d'impression présente les options du noyau requises pour la prise en charge de l'impression dans   Linux.


 * Le  Guide USB détaille les options de  configuration requises pour utiliser les périphériques USB courants tels que clavier, souris, périphériques de stockage et imprimantes.

Les changements apportés à la configuration restent sans effet
Il est très courant pour les utilisateurs d'effectuer un changement dans la configuration du noyau, mais de faire une petite erreur dans le processus qui s'en suit. Ils redémarrent sur une image qui n'est pas celle qu'ils viennent de reconfigurer, se rendent compte que le problème qu'ils voulaient résoudre est toujours présent, et en concluent que le changement n'est pas en mesure de résoudre leur problème.

Le processus de compilation et d'installation du noyau est en dehors du champ de ce document. Vous devriez vous reporter au Guide de mise à jour du noyau pour des instructions générales. En bref, le processus est : configurer, compiler, monter (s'il ne l'est déjà pas), y copier la nouvelle image du noyau et redémarrer. Si vous manquez l'une de ces étapes finales, vos changement resteront sans effet !

Il est possible de vérifier si le noyau sur lequel vous avez démarré correspond à celui que vous avez compilé sur votre disque dur en examinant la date et l'heure de compilation. En supposant que votre architecture est x86 et que vous sources du noyau sont installées dans :

La commande ci-dessus affiche la date et l'heure de compilation du noyau sur lequel vous avez démarré.

La commande ci-dessus affiche la date et l'heure de la dernière compilation de votre noyau sur le disque dur.

Si les deux horodatages issus des commandes précédentes sont différents de plus de 2 minutes, cela indique que vous avez fait une erreur lors de la réinstallation du noyau et que vous n'avez pas démarré sur l'image du noyau que vous croyez !

Les modules ne sont pas chargés automatiquement
Comme mentionné précédemment, le système de configuration du noyau cache un grand changement de comportement lorsque vous sélectionnez un composant du noyau pour une compilation en tant que module (M) plutôt que pour une compilation en dur dans le noyau. Cela mérite d'être répété parce que de nombreux utilisateurs tombent dans ce piège.

Lorsque vous sélectionnez un composant pour une compilation en dur dans le noyau, le code est inclus dans l'image du noyau (bzimage). Lorsque le noyau a besoin de ce composant, il peut l'initialiser et le charger automatiquement, sans intervention de l'utilisateur.

Lorsque vous sélectionnez un composant pour une compilation en tant que module, le code est placé dans un module du noyau et installé sur le système de fichiers. En général, lorsque le noyau a besoin de ce composant, il ne peut l'utiliser ! Sauf quelques exceptions, le noyau ne fait aucun effort pour le charger - cette tâche est dévolue à l'utilisateur.

Aussi, si vous construisez la prise en charge de votre réseau en tant que module, et que vous vous rendez compte que votre réseau n'est pas accessible, c'est probablement parce que le module n'est pas chargé — vous devez soit le faire à la main, soit configurer votre système pour le charger automatiquement au démarrage.

Sauf si vous avez des raisons de faire autrement, économisez votre temps en construisant ces composants en dur dans le noyau, de manière à ce que le noyau puisse gérer cela automatiquement.