Gentoo Logo

Guide de configuration du noyau pour Gentoo Linux

Table des matières :

1.  Introduction

Gentoo fournit deux manières de gérer l'installation et la mise à jour de votre noyau : la méthode automatique (genkernel) et la méthode manuelle. Bien que la méthode automatique soit vue comme plus simple pour les utilisateurs, il existe de nombreuses raisons qui font qu'une large proportion d'utilisateurs de Gentoo choisissent de configurer manuellement leur noyau : une flexibilité accrue, un noyau moins lourd, une compilation plus rapide, l'expérience, l'ennui, etc.

Ce guide ne couvrira pas la méthode automatique (genkernel). Si vous désirez emprunter cette voie pour compiler et installer votre noyau, jetez un œil à la documentation Genkernel.

Ce manuel n'a pas pour prétention de documenter la configuration manuelle de A à Z. Le processus de configuration repose sur le bon sens et sur un niveau de connaissances techniques relativement élevé sur votre système. Mais il introduira le concept de la configuration manuelle et détaillera les pièges les plus courants auxquels les utilisateurs font face.

Ce document est écrit pour les noyaux les plus récents, pour les systèmes et architectures les plus répandus. Certains détails pourront différer pour un noyau plus ancien ou sur des architectures exotiques, mais la majorité des informations seront valables pour autant.

À ce point, nous considérons que vous disposez des sources du noyau décompactées sur votre disque dur (habituellement quelque part dans /usr/src). Vous devriez savoir comment entrer la commande menuconfig qui lance l'utilitaire de configuation du noyau et naviguer dans les différents menus. Si vous n'êtes pas arrivé à ce niveau, d'autres documentations vous conviendront mieux.

2.  Concepts de configuration

Les bases

Le processus général est en fait assez simple : vous vous trouvez devant une série d'options, ordonnées en menus et sous-menus et vous devez choisir les options qui correspondent à votre matériel et à votre système.

Le noyau est fourni avec une configuration par défaut qui vous est présentée la première fois que vous lancez menuconfig sur un jeu de sources. Les options par défaut sont généralistes, ce qui signifie que la majorité des utilisateurs n'aura que peu de changements à faire. Si vous décidez de désactiver une option qui, par défaut, était activée, soyez sûr de ce que vous faites, de ce à quoi cette option sert et connaissez les conséquences engendrées par cette désactivation.

Si c'est votre première configuration manuelle de noyau, vous serez sûrement conservateur : ne soyez pas trop aventurier et cherchez plutôt à faire le moins de modifications possible par rapport à la configuration par défaut. En même temps, gardez à l'esprit que certaines parties de la configuration devront absolument être modifiées pour que votre système puisse démarrer !

Monolithique contre modulaire

La plupart des options de configuration ont trois états : elles peuvent être soit désactivées, soit compilées directement dans le noyau (Y), soit compilées en tant que module (M). Les modules sont enregistrés séparément du noyau, sur le système de fichiers, alors que les options compilées dans le noyau sont enregistrées dans l'image du noyau elle-même.

Il existe une différence importante entre la compilation monolithique et modulaire : sauf quelques exceptions, le noyau ne fait pas de tentative de chargement d'un module dont vous pourriez avoir besoin (cela reste à la charge de l'utilisateur). Bien que certaines parties du système possèdent des fonctions de chargement « à la demande » et bien qu'il existe certains outils de chargement automatique de modules, il est recommandé de compiler le support pour votre matériel directement dans le noyau. Ainsi, celui-ci pourra disposer des fonctionnalités de votre matériel directement et chaque fois que cela sera nécessaire.

Bien sûr, pour certaines parties de la configuration, le support intégré dans le noyau sera nécessaire. Par exemple, si votre partition racine est située sur un système de fichier en ext2, votre système ne pourra pas démarrer si le support de l'ext2 n'a été activé qu'en module (le système devrait regarder sur le système de fichiers pour charger le module qui se trouve sur le système de fichiers, illisible tant que le module n'a pas été chargé !).

Support matériel

Au delà de la détection de votre architecture, l'outil de configuration ne fait aucune démarche pour identifier le matériel effectivement présent dans votre machine. Bien qu'il existe des paramètres par défaut pour le support générique, vous devrez certainement trouver et activer les options qui se rapportent à la configuration matérielle de votre ordinateur.

Cela requiert que vous sachiez ce qui se trouve dans votre ordinateur et ce qui y est connecté, ou que vous identifiez ces composants. Pour la plupart des composants internes, il vous faudra connaître le nom du chipset et non le nom du revendeur ou du produit en sa version boîte.

Certains outils pourront vous aider. lspci (qui se trouve dans le paquet sys-apps/pciutils) identifiera vos périphériques situés sur les bus PCI et AGP, en incluant les composants situés sur la carte mère elle-même. lsusb (du paquet sys-apps/usbutils) identifiera les périphériques connectés sur les ports USB.

La situation est rendue confuse par les différents degrés de standardisation dans le monde du matériel. À moins de vraiment posséder un matériel exotique, vos disques durs IDE fonctionneront « correctement », de même pour votre souris et votre clavier PS/2 ou USB. Vous disposerez d'un affichage VGA basique. Toutefois, certains périphériques comme la carte réseau Ethernet ne sont pas standardisés du tout. Vous devrez donc identifier votre contrôleur réseau et activer l'option adéquate dans le noyau pour bénéficier de la fonctionnalité réseau.

De plus, certaines options par défaut feront que votre matériel fonctionne « correctement », mais vous devrez activer certaines options plus spécifiques pour exploiter complètement le potentiel de votre matériel. Par exemple, si vous n'activez pas le support pour votre chipset IDE, votre disque fonctionnera très lentement.

Fonctionnalités du noyau

En plus du support du matériel, vous devrez disposer de certaines fonctionnalités dans le noyau pour vos différents logiciels. Un des exemples les plus importants est le support des systèmes de fichiers : vous devez activer le support pour le système de fichiers utilisé sur votre disque dur, ainsi que tous les systèmes de fichiers que vous utilisez sur vos périphériques de stockage externes (par exemple, le support du VFAT pour les clefs USB).

Un autre exemple courant est le support du réseau. Si vous désirez implémenter des choses comme le routage ou le pare-feu (firewalling), vous devrez vous assurer d'avoir activé certaines options dans votre noyau.

Prêt ?

Maintenant que le concept est introduit, vous devriez être capable de localiser les options relatives à votre matériel au travers des différents menus et de sélectionner ces options.

La fin de ce document a pour volonté de lever certaines zones de confusions et de prodiguer quelques conseils pour éviter les problèmes les plus courants rencontrés par les utilisateurs Gentoo. Bonne chance !

3.  Problèmes communs et zones de confusion

Les disques SATA sont des disques SCSI

Les ordinateurs de bureau récents possèdent des disques durs et/ou des lecteurs optiques situés sur un BUS Serial ATA, plutôt que sur l'ancien BUS IDE (câble ruban).

Le support SATA de Linux est implémenté sur une couche appelée libata, qui se situe dans le sous-sytème SCSI. Pour cette raison, les drivers SATA sont disponibles dans la section « SCSI Device Driver » de l'outil de configuration du noyau. De plus, votre périphérique de stockage sera considéré comme un périphérique SCSI, ce qui signifie que l'option « SCSI disk/cdrom support » est également requise. Votre disque dur SATA sera nommé (par exemple) /dev/sda et votre lecteur optique SATA sera nommé (par exemple) /dev/sr0.

Bien que la majorité de ces pilotes SATA soient pour les contrôleurs, libata n'a pas été créé dans l'unique optique du Serial-ATA. Tous les pilotes IDE standards seront inclus dans libata dans un futur proche et, dès lors, les considérations précédentes s'appliqueront aux utilisateurs de bus IDE.

Exemple de code 3.1 : Options de configuration pour libata

Device Drivers  --->
 SCSI device support  --->
  <*> SCSI device support
  <*>   SCSI disk support
  <*>   SCSI CDROM support

  SCSI low-level drivers  --->
   <*> Serial ATA (SATA) support
    Selectionnez votre chipset parmi la liste ci-dessus.

Chipsets IDE et DMA

Malgré l'arrivée du SATA, les périphériques IDE sont encore très répandus. IDE est une technologie très générique et, grâce à cela, Linux supporte la majorité des contrôleurs IDE même sans la moindre option spécifique activée.

Néanmoins, IDE est une vieille technologie et sa spécification originale de « Programmed Input/Output » (Entrées/Sorties Programmées) ne permet pas de fournir des taux de transfert assez rapides pour les périphériques de stockage les plus récents. Le pilote IDE générique est limité aux modes PIO, ce qui entraîne des taux de transfert très longs accompagnés d'une charge accrue du CPU quand les données sont transférées vers/depuis les disques.

À moins que vous ne vous trouviez devant une machine antérieure à 1995, votre contrôleur IDE supportera un mode de transfert alternatif, appelé DMA : Direct Memory Access. Le DMA est plus rapide et la charge CPU est moins affectée durant les transferts de fichiers. Si vous rencontrez des lenteurs durant l'utilisation de votre système et si celui-ci est équipé d'un disque dur IDE, il y a de fortes chances pour que le DMA ne soit pas activé.

Note : Comme mentionné précédemment, libata est disponible même pour les disques IDE. Si vous utilisez libata, alors tous vos disques, y compris les disques IDE, utiliseront le DMA. Aucune configuration supplémentaire n'est alors nécessaire.

Si vous n'utilisez pas libata pour vos disques IDE, alors vous devrez contrôler l'utilisation du DMA et l'activer.

Exemple de code 3.2 : Vérification de l'état d'activation du DMA sur le disque IDE

# hdparm -d /dev/hda

/dev/hda:
 using_dma    =  0 (off)

Pour activer le DMA sur vos périphériques IDE, il vous suffit simplement d'activer l'option pour votre contrôleur IDE.

Exemple de code 3.3 : Configuration noyau pour activer le DMA sur les contrôleurs IDE

Device Drivers  --->
 ATA/ATAPI/MFM/RLL support  --->
  <*> ATA/ATAPI/MFM/RLL support
  <*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
  [*]     PCI IDE chipset support
    Sélectionnez votre chipset dans la liste des options ci-dessus.

Contrôleurs USB

L'USB est un BUS largement adopté pour la connexion des périphériques externes à votre ordinateur. L'une des raisons qui se cache derrière ce succès est le protocole de communication standardisé, même si le contrôleur hôte (host controller devices, HCD) peut varier légèrement. Il en existe trois types :

  • L'UHCI, pour Universal Host Controller Interface. Il supporte l'USB 1.1 et se trouve généralement sur les cartes mères à base de chipset VIA ou intel.
  • L'OHCI, pour Open Host Controller Interface. Il supporte l'USB 1.1 et se trouve généralement sur les cartes mères à base de chipsets nVidia ou SiS.
  • L'EHCI, pour Extended Host Controller Interface. C'est le seul contrôleur hôte à supporter l'USB 2.0 et il se trouve typiquement sur tous les ordinateurs qui supportent l'USB 2.0.

La plupart des systèmes sont fournis avec deux des interfaces précédemment citées : EHCI (pour l'USB 2.0) ainsi que UHCI ou OCHI (pour l'USB 1.1). Il est important de choisir les deux types présents sur votre machine dans les options du noyau. Puisque les périphériques USB 2.0 sont rétro-compatibles avec l'USB 1.1, une large proportion des périphériques USB (même ceux fabriqués de nos jours) sont basés sur des interfaces USB 1.1 — pourquoi une souris aurait-elle besoin d'un taux de transfert supérieur à 1.5 Mbit/sec ?

Si vous ne sélectionnez pas les options correspondant aux deux types de contrôleurs présents dans votre ordinateur, vous pourriez rencontrer le syndrome des ports USB « morts » : vous connectez le périphérique mais celui-ci ne s'allume pas ni ne répond.

Une astuce élégante de lspci permet de détecter facilement quels types de HCD sont présents dans votre système. En ignorant le contrôleur Firewire qui répond également, nous pouvons constater que ma machine nécessite le support pour les contrôleurs OHCI et EHCI :

Exemple de code 3.4 : Utilisation de lspci pour détecter le type de contrôleur USB

# lspci -v | grep HCI
00:02.0 USB Controller: nVidia Corporation CK804 USB Controller (rev a2) (prog-if 10 [OHCI])
00:02.1 USB Controller: nVidia Corporation CK804 USB Controller (rev a3) (prog-if 20 [EHCI])
01:0b.0 FireWire (IEEE 1394): Agere Systems FW323 (rev 61) (prog-if 10 [OHCI])

Exemple de code 3.5 : Configuration des contrôleurs hôtes USB

Device Drivers  --->
 USB support  --->
  <*> Support for Host-side USB
  ---   USB Host Controller Drivers
  <*>   EHCI HCD (USB 2.0) support
  <*>   OHCI HCD support
  <*>   UHCI HCD (most Intel and VIA) support
  Sélectionnez le contrôleur présent sur votre système ou les trois si
  vous n'êtes pas sûr.

Systèmes multiprocesseurs, Hyper-Threading et double cœurs

Bien des systèmes sont basés sur des processeurs multiples, mais pas toujours de manière évidente.

  • De nombreux processeurs Intel se basent sur une technologie appelée l'Hyper-Threading, dans laquelle le processeur est en fait vu par le système comme deux processeurs logiques.
  • Certains processeurs récents d'Intel et d'AMD sont constitués de plusieurs processeurs rassemblés en un seul et unique, connus sous le nom de processeurs double cœurs (ou dual core).
  • Certains ordinateurs sont constitués de plusieurs processeurs physiques, installés sur des cartes mères qui fournissent plusieurs emplacements pour les processeurs, ce qui permet d'obtenir des performances bien au-delà de ce que peut fournir un système uniprocesseur.

Dans tous ces cas, vous devrez sélectionner l'option appropriée dans le noyau, pour obtenir des performances optimales.

Exemple de code 3.6 : Configuration pour multiprocesseurs

Processor type and features  --->
 [*] Symmetric multi-processing support
 Sélectionnez l'option ci-dessus si vous possédez un système
 multiprocesseur (de n'importe quel type).
 [*]   SMT (Hyperthreading) scheduler support
 Sélectionnez l'option ci-dessus si vous utilisez un processeur
 Hyper-Threading d'Intel.
 [*]   Multi-core scheduler support (NEW)
 Sélectionnez l'option ci-dessus si votre processeur est multicœur.
Power management and ACPI options  --->
 [*] ACPI (Advanced Configuration and Power Interface) Support
 L'option ci-dessus ne se contente pas d'activer les fonctionnalités
 de gestion d'énergie, mais peut également être requise pour rendre disponibles
 tous les processeurs de votre système.

Support de la mémoire haute en x86

Des limitations dans l'adressage 32 bits des architectures x86 font qu'un noyau avec la configuration par défaut ne peut supporter que 896 Mo de RAM. Si votre système possède plus de mémoire, seuls 896 Mo seront visibles, si vous n'activez pas l'option « High Memory Support ».

Note : Cette limitation est spécifique à l'architecture x86 (IA32). Les autres architectures supportent nativement de plus grandes quantités de mémoire, sans configuration spéciale nécessaire.

Le support de cette mémoire haute n'est pas activé par défaut, parce qu'il induit une légère surcharge du système. Ne soyez pas effaré par ceci, la surcharge est insignifiante comparée à l'accroissement de la performance qu'apporte la disponibilité d'une grande quantité de mémoire.

Exemple de code 3.7 : Activation du support de la mémoire haute sur x86

Processor type and features  --->
 High Memory Support  --->
  (X) 4GB
  ( ) 64GB
  Choisissez 4GB sauf si votre système dispose de moins de 896 Mo
  ou plus de 4 Go de RAM.

4.  Autres documentations relatives à la configuration du noyau

Jusqu'ici, nous n'avons discuté que de concepts généraux et de problèmes spécifiques liés à des problèmes de configuration, sans entrer en profondeur dans les détails (des détails que par ailleurs vous devrez découvrir par vous-même). Néanmoins, d'autres parties de la Documentation Gentoo fournissent toute un ensemble de détails spécifiques pour ces sujets.

Vous trouverez ces documents très utiles lorsque vous configurerez précisement votre noyau, mais, si vous êtes nouveau dans ce domaine, ne soyez pas trop téméraire. Commencez par obtenir un système fonctionnel et stable, vous pourrez toujours revenir sur vos pas dans le futur pour activer les supports spécifiques comme la carte son, l'imprimante, etc.

  • Le Guide ALSA détaille les options de configuration nécessaires pour la carte son. Notez qu'ALSA est une exception à la règle qui recommande de compiler les pilotes dans le noyau : ALSA est plus simple de configuration lorsqu'il est compilé en tant que modules.
  • Le Guide Bluetooth détaille les options de configuration nécessaires pour l'utilisation de périphériques Bluetooth sur votre système.
  • Le Guide du routeur IPv6 décrit comment configurer votre noyau pour les fonctionnalités de routage, en utilisant l'adressage réseau de nouvelle génération.
  • Si vous comptez utiliser le pilote propriétaire de nVidia pour disposer de fonctionnalités 3D avancées, le Guide nVidia liste les options de configuration nécessaires qu'il faudra activer ou non au niveau du noyau.
  • Parmi les sujets traités, le Guide de la gestion d'énergie explique comment configurer le noyau pour la fonctionnalité « CPU Frequency Scaling », qui permet d'ajuster la fréquence du processeur afin d'économiser de l'énergie, ainsi que pour bénéficier des fonctionnalités d'hibernation et de suspension.
  • Si vous utilisez un système de type PowerPC, la FAQ PPC possède quelques sections qui traitent de la configuration du noyau.
  • Le guide Imprimer sous Gentoo liste les options du noyau nécessaires pour pouvoir imprimer sour Linux.
  • Le Guide USB détaille la configuration requise pour l'utilisation des périphériques USB les plus courants comme les claviers, souris, disques durs externes, clefs USB ou les imprimantes.

5.  Résolution de problèmes

Les changements de configuration n'ont aucun d'effet

Il est très courant pour les utilisateurs de faire des changements dans la configuration, mais de faire une légère erreur dans le processus qui suit cette modification. Par exemple, il arrive souvent qu'ils redémarrent sur une image du noyau qui n'est pas celle qui vient d'être modifiée. Ils constatent alors que le problème est toujours présent et en concluent trop rapidement que la modification n'a pas apporté d'amélioration.

Le processus de compilation et d'installation du noyau est hors de la portée de cette documentation. Vous devrez vous réferer au Guide de mise à jour du noyau pour une aide générale. En bref, le processus est le suivant : configuration, compilation, montage de /boot (si ce n'est pas déjà fait), copie du nouveau noyau et redémarrage. Si vous oubliez l'une de ces étapes, vos changements ne seront pas pris en compte !

Il est possible de vérifier si le noyau sur lequel vous avez démarré est celui compilé sur le disque dur en examinant la date et l'heure de compilation. Admettons que votre architecture soit x86 et que vos sources de noyau soient situées dans /usr/src/linux :

Exemple de code 5.1 : Vérification du noyau sur lequel vous avez démarré

# uname -v
#4 SMP PREEMPT Sat Jul 15 08:49:26 BST 2006
La commande ci-dessus affiche la date et l'heure à laquelle
le noyau en cours d'utilisation a été compilé.

# ls -l /usr/src/linux/arch/i386/boot/bzImage
-rw-r--r-- 1 dsd users 1504118 Jul 15 08:49 /usr/src/linux/arch/i386/boot/bzImage
La commande ci-dessus indique la date et l'heure a laquelle
la dernière image du noyau a été compilée.

Si les deux dates issues des commandes ci-dessus diffèrent de plus de deux minutes, il est probable que la version de votre noyau ne soit pas celle que vous avez dernièrement compilée.

Les modules ne sont pas chargés automatiquement

Comme vous l'avez vu plus haut dans ce document, le système de configuration du noyau cache un changement de comportement important lorsque vous préférez la compilation en tant que module (M) à la compilation directement dans le noyau (Y). Il est nécessaire que l'on répète cela ici parce que de nombreux utilisateurs passent à côté de cette notion importante.

Quand vous sélectionnez un composant comme faisant partie intégrante du noyau (par rapport au choix « Module »), le code est compilé dans l'image du noyau (bzImage). Quand le noyau a besoin de faire appel à celui-ci, il peut le charger et l'initialiser automatiquement, sans intervention de l'utilisateur.

Quand au contraire vous choisissez que ce composant soit un module, le code est compilé et installé en tant que fichier sur votre système de fichiers. En général, quand le noyau a besoin d'utiliser ce module, il ne le peut pas ! À quelques exceptions près, le noyau ne fait aucun effort pour tenter de localiser et de charger le module correspondant — cette tâche incombe à l'utilisateur.

Donc, si vous compilez le support de votre carte réseau en tant que module et que vous constatez que vous ne pouvez pas accéder au réseau, c'est probablement que le module de votre carte n'est pas chargé. Vous devez le charger manuellement ou configurer votre système pour qu'il le charge automatiquement au démarrage.

Sauf si vous avez des raisons de procéder autrement, vous devriez économiser du temps en intégrant directement le module dans l'image du noyau (en choisissant Y plutôt que M), de telle sorte que le noyau puisse y accéder directement et puisse faire les choses automatiquement pour vous.



Imprimer

Dernière mise à jour le 21 mars 2010

La version originale de cette traduction n'est plus maintenue

Résumé : Ce document vise à introduire le concept de la configuration manuelle du noyau et à en décrire les principaux écueils.

Daniel Drake
Auteur

Curtis Napier
Contributeur

Justin Robinson
Contributeur

Łukasz Damentko
Contributeur

Jonathan Smith
Éditeur

Joshua Saddler
Éditeur

Sébastien Baudru
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.