# [HOWTO] Guide de configuration du noyau

## d2_racing

https://forums.gentoo.org/viewtopic-t-539024.html

KC11: Compilation du noyau pour les débutants

Table des matières 

Principes généraux à garder en tête 

Préparation pour la compilation du noyau 

 Durant l'installation

Mounter les partitions et chrooter 

À partir d'une l'installation de Gentoo fonctionnel

Configuration du noyau 

Utilisation de menuconfig avec Genkernel.

Utilisation de make menuconfig.

Créer un .config à partir de zero.

Faire du ménage dans la configuration de Genkernel

Configurer le noyau pour supporter une nouvelle périphérique

Compiler et installer un noyau

Compilation

Installation

Mise à jour de grub.conf

Quoi faire quand notre nouveau noyau refuse de démarrer

Démarrer à partir d'un ancien noyau

Collection de trucs et astuces 

Ajout du support IDE dans le noyau

Ajout du support SATA dans le noyau

Ajout du support réseau dans le noyau

Ajout du support Framebuffer dans le noyau 

Trouver un module qui est utilisé par le noyau

Trouver le bon pilote à activer dans le noyau à partir lspci

Resources

Note : le terme "module en dur" et "module" sont des termes très important qui vont revenir tout au long de ce howto. 

  Un pilote c'est le code source pour faire fonctionner une périphérique.

 Un pilote peut être inclu directement dans le noyau, dans ce cas, on dit qu'il est en "dur".

 Un pilote en dur signifie qu'on a sélectionné une option dans le noyau en tapant "y" et il va apparaître un "<*>" devant l'option. 

 Un pilote en dur signifie qu'il va être inclu dans l'image du kernel et donc il va être disponible immédiatement. 

 Un pilote en module signifie qu'il va être exclu de l'image du kernel et donc il va se retrouver dans le répertoire /lib/modules. 

               Dans ce cas, le module ne sera pas disponible tant que la partition root ne sera pas mountée.

 Un pilote en module signifie qu'on a sélectionné une option dans le noyau en tapant "m" et il va apparaître "<M>" devant l'option. 

Le livre "Linux Kernel in a Nutshell" (voir Resources) de Greg Kroah-Hartman va être référencé à plusieurs reprises dans cette section.

Il va être référencé par ceci : "gkh-lkn"

Le terme driver tout au long de ce howto peut être remplacé par "pilote".

1) Principes généraux à garder en tête

 Le plus important c'est d'avoir un noyau qui fonctionne au lieu d'avoir un noyau optimisé la première fois qui ne démarre pas. On peut optimiser un noyau par la suite sans problème. (Voir point Garder vos noyaux en backup).

 On doit garder un configuration de base simple : Pour que votre noyau et votre Gentoo fonctionne la première fois c'est décrit à l'étape 15 dans le guide d'installation de Gentoo. 

            Voici les options nécessaires : un système de base doit avoir le support en dur(*) pour les disques durs (IDE ou SATA) pour la partition qui va contenir la racine.

            De plus,on doit aussi avoir le système de fichier aussi en dur (*) pour la partition /, on doit aussi ajouter le support pour les CDROMS(DVDROMS) et pour finir le support pour la carte réseau en dur ou en module. 

            Si vous avez d'autres partitions avec des systèmes de fichiers différents, vous pouvez les mettres en modules.

            Faites simple pour commencer; un système permettant de démarrer le noyau et Gentoo doit essentiellement posséder : 

 le support en dur du disque dur (SATA ou IDE) sur lequel se situe le système de fichier de la racine

 le support en dur dudit système de fichier racine 

 le support en modules des autres disques durs ou optiques (à nouveau, IDE ou SATA)

 le support en modules des systèmes de fichiers des éventuelles autres partitions

 le support de votre carte réseau, soit en dur, soit en module

 Ceci peut sembler compliqué la première fois lorsqu'on se demande ce qui est requis de mettre en dur ou en module.

 Quand vous avez un noyau qui fonctionne(enfin), vous devez vous assurer de ne pas écraser ce fameux noyau. Pour ce faire, vous devez toujours donnez un nom différent pour tout vos

            noyaux même lors d'une recompilation. LILO et Grub gèrent très bien les différents versions de noyaux et c'est très simple d'ajouter une entrée dans le menu de sélection quand on démarre l'ordinateur.

            Par exemple voici 

```

                      ls /boot

                      /boot/kernel-2.6.17-gentoo-r7.old

                      /boot/kernel-2.6.17-gentoo-r7

                      /boot/kernel-2.6.18-gentoo-r3

                      /boot/kernel-2.6.19-gentoo-r5

                      /boot/kernel-2.6.19-gentoo-r5-100hz

                      /boot/kernel-2.6.19-gentoo-r5-100hz-dl

                      /boot/kernel-2.6.19-gentoo-r5-100hz-dl-idedma_auto

                      /boot/kernel-2.6.20-gentoo

                
```

            Il y a une ancienne version du noyau(fonctionnel) 2.6.17, il y a le noyau 2.6.18 et 4 versions du noyau 2.6.19  et enfin il y a le noyau 2.6.20.

            Notez qu'aucun noyau ne possède le nom générique "bzimage"; il est préférable de disposer d'un moyen rapide et facile pour identifier la version du noyau à partir de laquelle a été compilé chaque fichier.

Garder vos noyaux en backup : quand vous recompilé un noyau qui fonctionne,si c'est la même version du noyau, avant d'aller le copier dans /boot, il serait préférable de renommer l'ancien en ajoutant l'extension .old à la fin, et si vous utilisez Genkernel, faire de même pour le fichier initramfs. 

              Si votre nouveau noyau ne fonctionne pas,ceci va vous permettre de démarrer sur votre ancien noyau et faire les ajustements nécessaire pour régler ce problème.

              Ne pas oublier d'ajouter une nouvelle entrée dans GRUB pour le noyau avec .old .

2) Préparation pour la compilation du noyau 

 Note Importante : Selon les développeurs du noyau il est déconseillé de faire la décompression du code source, la configuration et la compilation du noyau en tant qu'administrateur ROOT.Le tout devrait être fait en tant que simple utilisateur.

                                             Il y a seulement une ou 2 commandes qui demandent d'être exécuté en tant que root.Il y a déjà eu des bugs dans le passé qui fesait que le répertoire /dev était détruit lorsqu'on était en root lorsqu'on installait un nouveau noyau.

                                             De plus, si on décompresse le noyau en temps que root, il peut y avoir des erreurs de permissions sur certains fichiers.

                                             Note : gkh-lkn: "None of the primary kernel developers build kernels as root"

Ce howto va considérer les 2 scénarios possible lors d'une compilation du noyau : soit l'utilisation de Genkernel avec l'option --menuconfig et aussi la méthode traditionnelle make menuconfig.

L'utilisation de "genkernel all" peut vous donnez un noyau fonctionnel, mais plus tard, vous allez peut-être vouloir faire du ménage dans la configuration du noyau et c'est le but de ce howto.

Il y a 2 environnement possible lors de la compilation d'un noyau, soit lors de l'installation de Gentoo (dans un environnement CHROOTER) ou quand notre Gentoo est fonctionnel.

Pour savoir comment CHROOTER le lecteur peut se référer au manuel d'installation ou au manuel d'installation rapide.

Par contre, voici en gros les commandes qu'on doit exécuter pour se CHROOTER dans notre environnement.

Durant l'installation 

Mounter les partitions et CHROOTER

```

/dev/sda1               1          12       96358+  83  Linux  (/boot)               

/dev/sda2              13         110      787185   82  Linux swap / Solaris

/dev/sda3             111       72943   585031072+  83  Linux  (/)

```

Comme dans le manuel d'installation rapide, il y a 3 partitions pour cette installation.Si vous avez un disque dur IDE, vous devez changer sda pour hda.De plus, si vous avez seulement une partition / qui inclus /boot, vous n'avez pas besoin de mounter /boot.

```

livecd ~ # mount /dev/sda3 /mnt/gentoo

livecd ~ # mount /dev/sda1 /mnt/gentoo/boot

livecd ~ # cd /

livecd / # mount -t proc proc /mnt/gentoo/proc

livecd / # chroot /mnt/gentoo /bin/bash

livecd / # env-update && source /etc/profile

```

Maintenant, vous devez suivre les instructions suivantes pour configurer votre noyau.

Quand vous avez finit de configurer votre noyau,de compiler, d'installer les modules, après avoir copié l'image du noyau dans /boot (ou que Genkernel l'a fait pour vous), 

vous devez ajouter une entrée dans GRUB à moins que vous avez juste recompilé un noyau existant(vous pouvez prendre une copie d'un noyau fonctionnel aussi), 

vous devez sortir du CHROOT et unmounter toutes les partitions avant de rebooter.

```

livecd / # exit

livecd / # umount /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo

livecd / # reboot

```

(Ne pas oublier d'enlever le CD dans votre lecteur optique)

À partir d'une l'installation de Gentoo fonctionnel

Si vous avez déjà un noyau fonctionnel et que vous voulez reconfigurer ou ajouter le support pour une périphérique,

vous avez juste à exécuter make menuconfig ou utiliser Genkernel avec l'option "--menuconfig" : voir section "Configuration du noyau".

Configuration du noyau

Il y a plusieurs manières de configurer un noyau, mais la méthode manuelle soit l'utilisation de make menuconfig est largement utilisé et il y a fort à parier que cette méthode sera plus familère aux personnes à qui vous demandez de l'aide.

C'est cette méthode qui va être utilisée pour ce howto.

Utilisation de menuconfig avec Genkernel

Pour modifier la configuration du kernel (le .config) quand vous utilisez Genkernel, vous devez entrer cette commande : 

```
genkernel --menuconfig --no-mrproper --no-clean all
```

 Vous pouvez aussi ajouter l'option "--no-bootsplash" et "--no-gensplash" pour avoir un démarrage plus propre.

Lorsque vous aurez un noyau fonctionnel, vous pouvez essayer ces options pour voir ce que ça donne.

Avec l'option "--menuconfig", Genkernel va vous laissez le choix de changer la configuration du noyau manuellement.

L'option  "--no-mrproper" empêche Genkernel d'effacer vos configurations que vous avez fait avec --menuconfig.

L'option "--no-clean" empêche genkernel d'essayer de nettoyer l'arborescence des sources du noyau : puisqu'elle n'a pas encore été utilisée, elle est sensée être déjà propre.

La configuration par défaut de Genkernel se retrouve dans /etc/genkernel.conf.Ce fichier va servir pour créer le .config dans /etc/kernels .

Si vous avez compilé linux-2.6.19-gentoo-r5, le .config va se retrouver dans /etc/kernels/kernel-config-x86-2.6.19-gentoo-r5 .

Bien sûr le "x86" peut être remplacé par : x86_64,ppc,sparc etc...

Utilisation de make menuconfig

Vous pouvez aussi utiliser make menuconfig pour compiler et installer un noyau à la main.

Pour ce faire, il faut être dans le répertoire suivant : /usr/src/linux et lancer la commande :

```
make menuconfig
```

L'écran que vous voyez est séparée en 3 parties, la partie du haut démontre comment on peut naviguer dans les menus et sélectionner un menu en question, la partie du mileu montre la partie principale du menu de départ et la partie du bas indique 

```
 <Select>    < Exit >    < Help >
```

Voici les instructions de navigation 

```
 Arrow keys navigate the menu.  

<Enter> selects submenus --->. Highlighted letters are hotkeys.  

Pressing <Y> includes, <N> excludes,

<M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help, </>

 for Search.  

 Legend: [*] built-in  [ ] excluded  <M> module  < >

 
```

La flèche de gauche et de droite permettent de naviguer dans le mode de sélection ( Select/Exit/Help)

La flèche de haut et bas permettent de naviguer dans les différentes options. 

De plus, quand vous devez chercher une option, vous avez juste à utiliser / et entrer l'option en question et il va y avoir un menu qui va indiquer où se retrouve cette option.

Vous pouvez vous référer au gkh-lkn Chapitre 4 "Console Configuration Method" pour plus de détail.

Créer un .config à partir de zero

Vous devez vous positionner sur /usr/src/linux.

```
cd /usr/src/linux
```

 et vérifier si le lien symbolique bien sur le noyau que vous voulez configurer.

Par exemple, si vous voulez configurer le noyau linux-2.6.19-gentoo-r5 et après avoir fait cd /usr/src, vous voyez que vous pointez ailleur :

```
$ ls -l /usr/src

lrwxrwxrwx  1 root  root    22 Jan 30 12:01 linux -> linux-2.6.19-gentoo-r4

drwxr-xr-x 20 root  root  4096 Jan 30 20:57 linux-2.6.19-gentoo-r4

drwxr-xr-x 20 root  root  4096 Feb 10 10:23 linux-2.6.19-gentoo-r5

```

vous devez actualiser le lien symbolique de la manière suivante :

```

# ln -sfn linux-2.6.19-gentoo-r5 linux

```

Ensuite, vous pouvez utiliser la configuration de base fournit par Linus Torvalds pour ensuite l'adapter pour votre configuration.

```
make defconfig
```

gkh-lkn "Tous les kernels viennent avec une version par défaut du fichier .config. Cette configuration est basé par les mainteneurs du noyau.

Voici l'écran de départ de make menuconfig : 

```
 

Code maturity level options  --->

General setup  --->

Loadable module support  --->

Block layer  --->

Processor type and features  --->

Power management options (ACPI, APM)  --->

Bus options (PCI, PCMCIA, EISA, MCA, ISA)  --->

Executable file formats  --->

Networking  --->

Device Drivers  --->

File systems  --->

Instrumentation Support  --->

Kernel hacking  --->

Security options  --->

Cryptographic options  --->

Library routines  --->

---

Load an Alternate Configuration File

Save an Alternate Configuration File

```

Il y a seulement une option dans "Code maturity level options".Cette option permet d'activer les pilotes qui sont encore en développement. Un certain nombre de pilotes sont marqués en développement bien qu'ils fonctionnent pour la plupart des gens. 

Dès lors, activer cette option vous donnera le choix plutôt que de les masquer d'office.

Pour aller dans cette option, il faut se rendre sur le menu "Code maturity level options" avec la flèche haut ou bas et appuyer sur enter. Ensuite on doit se positonner sur l'option et appuyer sur spacesbar pour activer cette option.

```
 [*] Prompt for development and/or incomplete code/drivers
```

Le "[ ]" signifie qu'on peut seulement sélectionner l'option et le "*" signifie qu'elle a été sélectionnée.

Il y a aussi un autre type de sélection "< >" Cela signifie qu'on peut la sélectionner en temps que module (on peut appuyer sur la lettre "m" ou appuyer sur spacebar) et elle va devenir "<M>".

De plus, quand une option est insérée directement dans le noyau (en appuyant sur "y" ou sur spacebar), l'option va devenir "<*>"

Pour revenir dans l'écran principal, on peut appuyer 2 fois sur ESC ou carrément faire la flèche de droite ou de gauche et se positonner sur exit et appuyer sur enter.

Le menu "General setup" est contient des configurations générales et defconfig a déjà rempli une partie des options pour vous.

L'option "Loadable module support" est utilisée si on veut permettre de charger et de décharger un module.Cette option est très pratique.

Cette option est déjà cochée quand defconfig est utilisé.

Le menu "Block layer" sert pour les block devices : disque dur,lecteur optique, périphérique de stockage USB etc...

Ce menu permet de sélectionner le céduleur IO (defconfig sélectionne "Deadline") et vous pouvez sélectionner l'option "support for Single Large Files", pour ceux qui ont plus de 2 terabytes. Vous allez problablement rien changer dans ce menu.

La prochaine section, "Processor type and features" doit être vérifiée et corrigée au besoin.

Le sous-menu "Subarchitecture Type" doit avoir la valeur "(PC-compatible)" si vous avez un PC standard.

Maintenant le sous-menu "Processor family" va être configuré par défaut à "(Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon)" : Si ça ne correspond pas à votre processeur, vous devez le changer cette option.

Vous allez voir 6 choix pour "Pentium 4/..."  dans le bas de cette fenêtre - il y a en plus 

```

( ) 386

( ) 486

( ) 586/K5/5x86/6x86/6x86MX

( ) Pentium-Classic

( ) Pentium-MMX

( ) Pentium-Pro

( ) Pentium-II/Celeron(pre-Coppermine)

( ) Pentium-III/Celeron(Coppermine)/Pentium-III Xeon

( ) Pentium M

(X) Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon

( ) K6/K6-II/K6-III

( ) Athlon/Duron/K7

( ) Opteron/Athlon64/Hammer/K8

( ) Crusoe

( ) Efficeon

( ) Winchip-C6

( ) Winchip-2

( ) Winchip-2A/Winchip-3

( ) GeodeGX1

( ) Geode GX/LX

( ) CyrixIII/VIA-C3

( ) VIA C3-2 (Nehemiah)

```

Vous devez vous déplacer dans les choix et sélectionner l'option qui correspond à votre processeur.Vous pouvez lire l'aide.

Le texte à la fin de "Processor family" devra correspondre à votre nouveau choix.Si ce n'est pas le cas, réessayer.

Si vous avez un processeur 64 Bits le sous-menu Processor family va être configuré à "(Generic-x86-64)", vous devez modifier cette option :

```

( ) AMD-Opteron/Athlon64

( ) Intel EM64T

(X) Generic-x86-64

```

Si vous avez un processeur Intel EM64T ou un AMD Opteron ou Athlon 64, vous devez sélectionner le bon type de processeur.

Les autres options dans "Processor type and features" sont supposées avoir des valeurs corrects.

[Note: La suite sur "Processor type and features" décrit l'utilisation d'un processeur 32 bit x86  ou  64 bits x86_64 : si quelqu'un pense qu'un débutant peut avoir un processeur non x86 et que vous avez le temps d'écrire une section spéciale sur ce sujet, faite-le ]

La section "Power management options (ACPI, APM)"  est censée avoir des bonnes configurations par défaut.

"Bus options (PCI, PCMCIA, EISA, MCA, ISA)" cette sous-section devrait être correct à moins que vous ayez besoin d'utiliser une périphérque PCMCIA/CardBus sur le champ.

Si vous en avez de besoin maintenant, vous devez aller dans "PCCARD (PCMCIA/CardBus) support  --->"

 " qui affiche 

```
< > PCCard (PCMCIA/CardBus) support
```

 vous pouvez mettre le support en module ou en dur dans le noyau.

```

<M> PCCard (PCMCIA/CardBus) support

[ ]   Enable PCCARD debugging (NEW)

<M>   16-bit PCMCIA support (NEW)

[*]     Load CIS updates from userspace (EXPERIMENTAL) (NEW)

[*]     PCMCIA control ioctl (obsolete) (NEW)

[*]   32-bit CardBus support (NEW)

---   PC-card bridges

< >   CardBus yenta-compatible bridge support (NEW)

< >   Cirrus PD6729 compatible bridge support (NEW)

< >   i82092 compatible bridge support (NEW)

```

Prenez note que nous avons activé le support en module.

S'il vous manque de l'information à propos d'une option, vous pouvez sélectionner "help" et vous allez voir ceci par exemple :

"CardBus yenta-compatible bridge support" 

```

CardBus yenta-compatible bridge support

CONFIG_YENTA:

This option enables support for CardBus host bridges.  Virtually

all modern PCMCIA bridges are CardBus compatible.  A "bridge" is

the hardware inside your computer that PCMCIA cards are plugged

into.

To compile this driver as modules, choose M here: the

module will be called yenta_socket.

If unsure, say Y.

Symbol: YENTA [=n]

Prompt: CardBus yenta-compatible bridge support

  Defined at drivers/pcmcia/Kconfig:103

  Depends on: PCCARD && PCI

```

Il y a un pourcentage dans le coin droit, 69%, qui signifie que tout le texte d'aide n'est pas affiché dans la fenêtre. Un appui sur PageDown fait apparaître :

```
  Location:

    -> Bus options (PCI, PCMCIA, EISA, MCA, ISA)

      -> PCCARD (PCMCIA/CardBus) support

        -> PCCard (PCMCIA/CardBus) support (PCCARD [=m])

  Selects: CARDBUS && PCCARD_NONSTATIC

```

C'est le genre d'information que vous souhaiterez connaître plus tard, lorsque vous voudrez activer une option de configuration mais sans savoir où elle se trouve. 

Pour l'instant, notez simplement que c'est là qu'on peut la trouver. 

L'aide peut être très intéressante, car dépendament de l'option, il peut y avoir beaucoup d'information pour cette option.  

Si après avoir lu l'aide pour les trois options, vous ne savez toujours pas quel pilote choisir, cochez-les tous en modules et laissez le noyau déterminer celui à utiliser au branchement de votre périphérique.

La prochaine section "Executable file formats" n'a pas besoin d'être changé.

La section "Networking" n'a pas besoin d'être touchée à moins que vous ayez une carte réseau wifi.

Ce howto ne traitera pas de ce sujet.

Le lecteur peut se référer ici : http://www.gentoo.org/doc/fr/handbook/handbook-x86.xml?style=printable&full=1#book_part4

Le section "Device Drivers" est vraiment la section le plus imposante et surtout la plus importante.En fait, c'est ici qu'on va faire fonctionner notre matériel (carte vidéo,carte réseau,carte de son,carte graphique etc..., support USB).

```
Generic Driver Options  --->

Connector - unified userspace <-> kernelspace linker  --->

Memory Technology Devices (MTD)  --->

Parallel port support  --->

Plug and Play support  --->

Block devices  --->

Misc devices  --->

ATA/ATAPI/MFM/RLL support  --->

SCSI device support  --->

Serial ATA (prod) and Parallel ATA (experimental) drivers  --

Multi-device support (RAID and LVM)  --->

Fusion MPT device support  --->

IEEE 1394 (FireWire) support  --->

I2O device support  --->

Network device support  --->

ISDN subsystem  --->

Telephony Support  --->

Input device support  --->

Character devices  --->

I2C support  --->

SPI support  --->

Dallas's 1-wire bus  --->

Hardware Monitoring support  --->

Multimedia devices  --->

Graphics support  --->

Speakup console speech  --->

Sound  --->

USB support  --->

MMC/SD Card support  --->

LED devices  --->

Graphics support  --->

Speakup console speech  --->

Sound  --->

USB support  --->

MMC/SD Card support  --->

LED devices  --->

InfiniBand support  --->

EDAC - error detection and reporting (RAS) (EXPERIMENTAL)  --

Real Time Clock  --->

DMA Engine support  --->

```

Les seules sous-sections que vous devez vous occuper à présent c'est "Parallel port support","ATA/ATAPI/MFM/RLL support","Serial ATA (prod) and Parallel ATA (experimental) drivers" et enfin "Network device support".

La sous-section "Input device support" est à configurer si vous n'avez pas un clavier standard AT.

La sous-section "Character devices" (très utile si on doit installer Xorg) et la sous-section "Graphics support" (pour configurer le framebuffer), vous pouvez ne pas les configurer pour le moment.

sous-section Parallel port support: Cette option va être déjà sélectionnée :

```

<*> Parallel port support

< >   PC-style hardware (NEW)

< > AX88796 Parallel Port (NEW)

[ ] IEEE 1284 transfer modes (NEW)

```

Si vous avez une imprimante utilisant le port parallèle, vous devez ajouter 2 options : "PC-style hardware" et "IEEE 1284 transfer modes" 

Sous-section ATA/ATAPI/MFM/RLL support: parallèle ATA(PATA,IDE) permet de le distinguer avec le serial ATA (SATA).ATAPI sert pour les lecteurs/graveurs optique.C'est ici qu'on va configurer le tout.

```

<*> ATA/ATAPI/MFM/RLL support

<*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

---     Please see Documentation/ide.txt for help/info on IDE dri

[ ]     Support for SATA (deprecated; conflicts with libata SATA

[ ]     Use old disk-only driver on primary interface

<*>     Include IDE/ATA-2 DISK support

[*]     Use multi-mode by default

<*>     Include IDE/ATAPI CDROM support

< >     Include IDE/ATAPI TAPE support (EXPERIMENTAL)

< >     Include IDE/ATAPI FLOPPY support

```

Il y beaucoup plus d'options....

Voici les options qui sont par défaut :

```

<*> ATA/ATAPI/MFM/RLL support

<*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

<*>     Include IDE/ATA-2 DISK support

[*]     Use multi-mode by default

<*>     Include IDE/ATAPI CDROM support

<*>     generic/default IDE chipset support

[*]     PCI IDE chipset support

[*]       Generic PCI bus-master DMA support

[*]         Use PCI DMA by default when available

```

Vous ne devez pas les changer.

Pour ce qui est de l'option et de ceux qui sont sous celle-ci:

```
[ ]Enable DMA only for disks
```

elles ne sont pas activées et elles ne devraient pas l'être aussi.

Ensuite, il y a une longue liste de chipset IDE et entre autre il y a ces 2 là qui sont activés :

```

<*>         AMD and nVidia IDE support

<*>         Intel PIIXn chipsets support

```

Vous avez besoin du quel à votre avis ?

Tout d'abord, lancez la commande ls

```

ls -d /sys/block/hd*

/sys/block/hda  

/sys/block/hdb

```

Le résultat de la commande montre qu'il y a /dev/hda et /dev/hdb.

Vous verez un exemple sur la manière de trouver le bon pilote (chipset) pour /dev/hda dans la section "Collection de trucs et astuces" à la fin de ce howto :

sous-section Serial ATA (prod) and Parallel ATA (experimental) drivers:

Les configurations SCSI pour le SATA sont déjà activées par défaut.

De plus, pour savoir combien vous avez de périphériques SATA, vous devez lancer :

```

ls -d /sys/block/s[dr]*

/sys/block/sda  /sys/block/sdb

```

Qui démontre dans cette exemple que vous avez 2 périphériques SATA.

Vous allez trouver un exemple sur : "Trouver le bon pilote à activer dans le noyau à partir lspci "Collection de trucs et astuces"" à la fin de ce howto.

Maintenant vous devez répéter cette procédure pour vos autres /dev/sdX que vous avez.De plus, si vous utilisez le driver expérimental PATA  et que ça fonctionne,vos périphériques PATA vont être renommés /dev/sdX et le driver en question sera "pata_xxx".De plus, le driver PATA a besoin de l'option SCSI disk support dans la section "SCSI Device Support".

De plus, si vous avez un lecteur/graveur optique SATA, vous devez aussi avoir l'option "SCSI CD-ROM Support" dans la section "SCSI Device Support".

De plus ils vont être renommés /dev/sr0,/dev/sr1.

Sous-section Network device support: 

La procédure pour sélectionner un driver est documentée dans la section "Collection de trucs et astuces", et c'est dans la sous-section "Activation d'un driver pour une connection réseau avec fil dans le noyau".

Il y a beaucoup de cartes réseau qui sont activées par défaut, si vous voulez, vous pouvez aller dans la sous-section "Ethernet (10 or 100Mbit)" and "Ethernet (1000 Mbit)" et enlever ceux dont vous ne voulez pas.

Maintenant, nous allons continuer à la suite de la section de "Device Drivers".

La prochaine section c'est "File systems".

Si vous avez comme système de fichier Ext2,Ext3 ou ReiserFS, vous n'avez pas besoin de modifier cette sous-section,car les 3 sont activés par défaut.

Si vous avez une partition de type JFS ou XFS, vous devez activer les options en conséquence.

Vous devez aussi les mettre en dur [*],car sinon ça ne bootera pas.

La section "Instrumentation Support" ne require aucun changement mais si vous ne voulez pas utiliser OProfile ou kprobes, vous devez déactiver ces options.

La section "Kernel hacking" ne require aucun changement.

La section "Security options ne require aucun changement sauf que gkh-lkn recommande de sélectionner les options suivantes :

```

[*] Enable different security models

<*>   Default Linux Capabilities

```

Dans le but d'utiliser un noyau sécurisé.

La section "Cryptographic options", si vous allez dans cette section et que vous lisez l'aide à propos de "[ ] Cryptographic API", vous aller voir que la dernière ligne mentionne "IEEE80211".Si vous avez une carte réseau sans-fil(wifi), vous allez peut-être activer cette option.Pour utiliser l'encryption avec carte réseau wifi, vous devez activer ciper et tant qu'à faire, vous pouvez activer toutes les options en module seulement.

La section "Library routines", dans l'aide de l'option "< > CRC-CCITT functions" c'est écrit :  *Quote:*   

> This option is provided for the case where no in-kernel-tree modules require CRC-CCITT functions, but a module built outside the kernel tree does. Such modules that use library CRC-CCITT functions require M here.

 

Vous pouvez activer toutes les options en module, ça peut éviter des problèmes plus tard.

C'est fini  :Smile:  Vous avez configuré un noyau, c'est maintenant le temps de quitter menuconfig en savegardant le fichier .config.

Il est très important de garder une copie de ce fichier en cas de problème.

Vous pouvez copier ce fichier dans /etc/kernels ou carrément dans /boot.

Vous pouvez le nommer de la façon suivante : 

```

config-kernel-2.6.19-gentoo-r5-vide

```

 ou

carrément 

```

config-kernel-2.6.19-gentoo-r5 

```

Le plus important, c'est de ne pas écraser par erreur votre précieux .config  :Smile: 

Si vous avez un crash après une modification du noyau, vous pouvez recompiler votre noyau avec votre copie du .config  :Smile: 

Maintenant c'est le temps de  "Compiler et installer un noyau".

Faire du ménage dans la configuration de Genkernel

La première chose à faire, c'est de savoir quels modules votre ordinateur à besoin pour fonctionner. Par exemple, le fait de booter avec le LiveCD de Gentoo va indiquer environ 40 modules de chargé quand on fait lsmod, toujours dans

le but que le LiveCD démarre sans problème.C'est sans compter les modules IDE et les systèmes de fichiers qui sont en dur dans le noyau.

Pour savoir quels modules sont utilisés, vous pouvez rouler le script de gkh-lkn(Chapter 7, "Let the kernel tell us what we need").

```

#!/bin/bash

#

# find_all_modules.sh

#

for i in `find /sys/ -name modalias -exec cat {} \;`; do

    /sbin/modprobe --config /dev/null --show-depends $i ;

done | rev | cut -f 1 -d '/' | rev | sort -u

```

Par exemple, voici le résultat sur une machine Athlon XP/VIA :

```
FATAL: Module input:b0011v0001p... not found

...

FATAL: Module ide:m_cdrom not found.

FATAL: Module ide:m_disk not found.

...

3c59x.ko

crc-ccitt.ko

ehci-hcd.ko

libata.ko

mii.ko

sata_via.ko

uhci-hcd.ko

usbcore.ko

usbhid.ko

via-velocity.ko

```

Il y a beaucoup de lignes qui commencent par "FATAL: Module input:" or "FATAL: Module pci:", mais selon gkh-lkn (Chapter 7)  ça indique seulement que le script n'a pas été capable de détecter un module qui contrôle cette périphérique.

Ne soyez pas inquiet avec ça, car certains périphériques n'ont pas de driver dans le noyau pour les gérer.

Les modules ide:m_cdrom et ide:m_disk sont les drivers IDE qui supportent les disques durs IDE et les CD-ROM(ATAPI), il y a une erreur car ils sont en dur dans le noyau  :Razz: 

Pour configurer le driver IDE et le chipset IDE en question, vous pouvez revenir dans la section précédente : "créer un .config à partir de zero".

Les modules pour les chipsets SATA sont très clairement identifiés, en effet ils commencent tous par sata.Dans l'exemple il y a seulement le module sata_via.ko.

Vous pouvez retrouver le driver SATA dont vous avez de besoin dans la section "Ajout du support SATA dans le noyau" dans la section "Collection trucs et astuces".

Pour être sûr que votre réseau va continuer de fonctionner, vous devez trouver votre driver pour votre carte eth0 ou eth1 etc... : Vous pouvez aller voir la section à ce sujet dans la section "Ajout du support réseau dans le noyau".

Vous avez vu qu'il y a aussi crc-ccitt et mii qui sont dans la liste des modules, ce sont des outils pour détecter les modules pour vos périphériques.

De plus, vous pouvez parcourir la sous-section "Ethernet (10 or 100Mbit)","Ethernet (1000 Mbit)" et "Ethernet (10000 Mbit)" pour faire du ménage au niveau des drivers de carte réseau dont vous n'avez pas de besoin.

Après tout ça, il y a aussi les modules ehci-hcd, uhci-hcd, usbcore and usbhid, ils sont tous reliés au support USB.

EHCI c'est pour le support  USB 2.0 et UHCI c'est pour le support USB 1.0 et OHCI et uhci-hcd peuvent être utilisés dépendamment de votre carte mère.

Vous devez aller dans la section "Device Drivers -> USB support" et vous pouvez enlever tout ce dont vous n'avez pas besoin :

Vous devez laisser EHCI HCD (USB 2.0) support et garder au moins un des modules suivant : "OHCI HCD support" ou "UHCI HCD (la plupart des Intel et VIA).

Vous pouvez aussi activer le support pour les imprimantes USB et les Clés USB : "USB Printer support" et "USB Mass Storage support".

Enfin, vous pouvez enlever tout ce dont vous pensez ne pas utiliser exemple : 

"Datafab Compact Flash Reader","Olympus MAUSB-10/Fuji DPC-R1", "ATI / X10 USB RF remote control".

Vous pouvez aussi enlever le support pour le USB sauf si vous avez un modem USB DSL.

Maintenant c'est le temps de sauvegarder la nouvelle configuration et c'est le temps de compiler et installer le nouveau noyau.

Configurer le noyau pour supporter une nouvelle périphérique

[gkh-lkn Chapter 7: Finding which module is needed - il y a beaucoup d'information à ce sujet]

La première chose à faire c'est de lancer lspci.

Pour démontrer la procédure à suivre, vous allons trouver le driver qu'il faut pour faire fonctionner un chipset SATA et une carte réseau.

Par exemple,le contrôleur SATA a retourné les informations suivantes :

```
00:1f.2 SATA controller: Intel Corporation SATA Controller AHCI (rev 02)
```

Ensuite, il faut trouver le Vendor Id et le Device Id.Vous devez lancer cette commande :

```
lspci -n | grep '^00:1f.2'
```

Et vous allez voir :

```
00:1f.2 0106: 8086:2821 (rev 02)
```

Vous devez garder en note les 2 derniers chiffres séparé par un :, soit "8086:2821".

Le premier chiffre c'est le Vendor Id et le deuxième  c'est le Device Id.

Maintenant on doit faire la corespondance dans le noyau :

Nous devons chercher le Vendor Id "8086" :

```
grep -i 0x8086 /usr/src/linux-2.6.20-gentoo/include/linux/pci_ids.h

#define PCI_VENDOR_ID_INTEL             0x8086

```

("grep -i" est utilisé même si 0x8086 c'est seulement du alpha-numérique, car on prend pas de chance.)

C'est maintenant le temps de trouver le Device Id :

```

find /usr/src/linux-2.6.20-gentoo -name \*.c | xargs grep -l INTEL

```

Ça va retourner environ 121 fichiers, mais il ne faut pas oublier qu'on doit regarder ceux qui sont dans "drivers/ata". 

```

/usr/src/linux-2.6.20-gentoo/drivers/ata/ahci.c

/usr/src/linux-2.6.20-gentoo/drivers/ata/ata_piix.c

/usr/src/linux-2.6.20-gentoo/drivers/ata/pata_mpiix.c

/usr/src/linux-2.6.20-gentoo/drivers/ata/pata_oldpiix.c

/usr/src/linux-2.6.20-gentoo/drivers/ata/pata_pdc202xx_old.c

/usr/src/linux-2.6.20-gentoo/drivers/ata/sata_sil24.c

/usr/src/linux-2.6.20-gentoo/drivers/ata/sata_vsc.c

```

Nous sommes à la recherche de la ligne dans la table de correspondance :

```
static const struct pci_device_id
```

ahci.c a

```
        

{ PCI_VDEVICE(INTEL, 0x2821), board_ahci_pi }, /* ICH8 */

```

ata_piix.c n'a pas ce driver, car il est assez ancien comme driver, donc il n'a pas INTEL dans la table mais 0x8086;

pata_mpiix.c, pata_oldpiix.c, pata_pdc202xx_old.c (ils ont seulement Promise devices), sata_sil24.c et sata_sil24.c n'ont pas Intel non plus.

Alors le driver qu'il nous faut c'est ahci.c.

La prochaine étape c'est de configurer le noyau pour que la variable ahci.c soit prise en compte par le noyau et qu'il charge le module correspondant  :Smile: 

Vous pouvez vous référer dans la section : "Collection de trucs et astuces" et dans la sous-section "Ajout du support SATA dans le noyau".

C'est maintenant le temps d'ajouter le support pour la carte réseau.

La sortie de lspci va donner par exemple ceci :

```
03:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8053 PCI-E Gigabit Ethernet Controller (rev 22) 03:00.0 0200: 11ab:4362 (rev 22)
```

La table de correspondance va donner ceci :

```
#define PCI_VENDOR_ID_MARVELL           0x11ab
```

5 fichiers contiennent le mot "MARVELL": /usr/src/linux-2.6.20-gentoo/drivers/net/{forcedeth,sk98lin/skge,skge,sky2,via-velocity}.c

Et celui qui correspond c'est le fichier  /usr/src/linux-2.6.20-gentoo/drivers/net/sky2.c

```
 { PCI_DEVICE(PCI_VENDOR_ID_MARVELL, 0x4362) }, /* 88E8053 */
```

La prochaine étape c'est de configurer le noyau pour que la variable sky2.c soit prise en compte par le noyau et qu'il charge le module correspondant  :Smile: 

Vous pouvez vous référer dans la section : "Collection de trucs et astuces" et dans la sous-section "Ajout du support réseau dans le noyau".

La méthode est similaire pour trouver le driver qu'il faut prendre pour utiliser des périphériques USB (gkh-lkn Chapter 7 "USB Devices")

3) Compiler et installer un noyau

Compilation

Avant de commencer la compilation, prenez une copie de votre .config et copier le dans /etc/kernels ou dans /boot du genre  "config-2.6.19-gentoo-r5".

Si vous avez déjà un fichier qui porte déjà ce nom, vous avez juste à ajouter un caractère de plus. Si plus tard, vous voyez que votre noyau ne fonctionne pas, vous serez capable de repartir avec une configuration de noyau fonctionnel et vous pourrez réessayer autre chose.

Note: Les développeurs du noyau nous mettent en garde Il est conseillé de jamais configurer ou compiler un noyau avec le compte ROOT. 

Dans le passé gkh-lkn disait : (Chapter 1 "Using This Book") qu'il y a eu des bugs lors de la construction du noyau et ça causait des erreurs dans /dev et on pouvait effacer des fichiers dans /dev si on était en root.

De plus, la décompression de l'archive du kernel en tant qu'administrateur peut causer des erreurs de persmissions.

À mon avis ça s'applique pas, car on utilise emerge pour installer le noyau à partir de Portage.

De plus, si vous avez déjà compilé le noyau en question et que vous reconfiguré le noyau du genre (ajouter, enlever un module,changer un driver en module pour le mettre en dur ou vice versa), il serait préférable de lancer 

```
make clean
```

 avant de recompiler.

Vous pouvez aussi lancer 

```
make mrproper
```

 qui fait la même chose que "make clean" *Quote:*   

> enlève les fichiers génériques mais garde la configuration(.config) et surtout le support des modules

 

mais  *Quote:*   

>  enlève surtout tous les fichiers généraux, le .config et des backups divers.

 . Après un "make mrproper" vous devez recopier votre .config ,car il a disparu de /usr/src/linux

Il est temps de lancer 

```
make && make modules
```

Certaines personnes disent : "quand on ajoute seulement le support pour un driver en module, on est pas obligé de recompiler le noyau, si le module en question n'était pas en dur dans le noyau". Dans ce cas on peut lancer 

```
make modules
```

Installation

L'installation du noyau doit être fait avec le compte root.

Premièrement,lancer 

```
make modules_install
```

 pour copier tous les modules compilés dans le noyau dans le répertoire correspond au noyau dans /lib/modules

Si la version du noyau est la suivant : /usr/src/linux-2.6.19-gentoo-r5 alors les modules vont se retrouver dans /lib/modules/2.6.19-gentoo-r5

Pour le noyau, il faut l'installer dans /boot : Comme pour le .config, il faut donner un nom significatif au noyau pour que tout soit clair  :Smile: 

Par exemple, vous pouvez le nommer de la manière suivante : kernel-2.6.19-gentoo-r5

Si vous avez déjà un noyau pour cette version là, vous pouvez renommer la version courant en kernel-2.6.19-gentoo-r5.wkg et ensuite copier votre noyau noyau.

Pour copier le noyau, vous devez lancer la commande suivante : 

```
cp -pv arch/i386/boot/bzimage /boot/kernel-2.6.19-gentoo-r5
```

Si vous n'avez pas une architecture x86 (i386), vous devez remplacer i386 par votre architecture en question : x86_64 etc...

Mise à jour de grub.conf

Si vous avez déjà compilé un noyau fonctionnel avec succès, vous avez donc une entrée dans grub soit dans /boot/grub/grub.conf ou dans /boot/grub/menu.lst

Ne touchez surtout pas à votre noyau qui est fonctionnel  :Smile: 

Si vous avez créé un nouveau noyau, vous devez copier les lignes du noyau existant et créer une nouvelle entrée dans grub en changent la variable "title" ainsi que le nom du noyau qui doit correspondre au fichier dans /boot.

4) Quoi faire quand notre nouveau noyau refuse de démarrer

Démarrer à partir d'un ancien noyau

Vous devez choisir dans le menu de Grub quand l'ordinateur boot le noyau qui est fonctionnel.

Maintenant que Gentoo est revenu en vie, vous pouvez réparer votre configuration du noyau.

4) Collection de trucs et astuces

Ajout du support IDE dans le noyau

Pour trouver le driver qui est utilisé par /dev/hda, vous devez lancer

```
udevinfo -a -p /sys/block/hda | grep DRIVERS

    DRIVERS=="ide-disk"

    DRIVERS==""

    DRIVERS=="VIA_IDE"

    DRIVERS==""
```

qui démontre que /dev/hda dépend de 2 drivers, soit le high level "ide-disk" qui est activé dans la section "ATA/ATAPI/MFM/RLL support"  et le driver "VIA_IDE" est aussi dans cette section.

Le support des chipset IDE font parti d'une vieille méthode pour nommer un driver, alors on doit un peu chercher dans drivers/ide/pci pour trouver quel driver correspond à quel module dans le noyau.

La liste suivante fait le parallèle entre le nom du module et le driver qui va être compilé dans le noyau.

```
"AEC62xx_IDE",  AEC62XX chipset support

"ALI15x3_IDE",  ALI M15x3 chipset support

"AMD_IDE",      AMD and nVidia IDE support

"ATIIXP_IDE",   ATI IXP chipset IDE support

"CMD64x_IDE",   CMD64{3|6|8|9} chipset support

"TRIFLEX_IDE",  Compaq Triflex IDE support

"Cypress_IDE",  CY82C693 chipset support

"Cyrix_IDE",    Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTAL)

"CS5530 IDE",   Cyrix/National Semiconductor CS5530 MediaGX chipset support

"CS5535_IDE",   AMD CS5535 chipset support

"HPT34x_IDE",   HPT34X chipset support

"HPT366_IDE",   HPT36X/37X chipset support

"JMicron IDE",  JMicron JMB36x support

"SC1200_IDE",   National SCx200 chipset support

"PIIX_IDE",     Intel PIIXn chipsets support

"ITE821x IDE",  IT821X IDE support

"NS87415_IDE",  NS87415 chipset support

"Promise_Old_IDE",  PROMISE PDC202{46|62|65|67} support

"Promise_IDE",  PROMISE PDC202{68|69|70|71|75|76|77} support

"Serverworks_IDE",  ServerWorks OSB4/CSB5/CSB6 chipsets support

"SiI_IDE",      Silicon Image chipset support

"SIS_IDE",      SiS5513 chipset support

"SLC90e66_IDE",  SLC90E66 chipset support

"TRM290_IDE",   Tekram TRM290 chipset support

"VIA_IDE",      VIA82CXXX chipset support

```

Par exemple, si udevninfo a sorti comme information que le driver c'est "VIA_IDE", alors nous devons activer le suppport pour "< > VIA82CXXX chipset support"

Note, si votre partition racine est sur ce périphérique, vous devez mettre le support en dur [*] sinon ça ne va pas démarrer.

Si vous avez un lecteur optique, le high level driver va être "ide-cdrom" même si vous avez un lecteur/graveur CD/DVD.

Ajout du support SATA dans le noyau

Voici les configuration SCSI que vous devez activer.

```
   

Device Drivers  --->   

   SCSI device support  --->

                              <*> SCSI disk support

                              <M> SCSI CDROM support

```

En effet, les disques dur SATA, ça fonctionne avec le driver SCSI.

Pour trouver le driver qu'il faut, on doit interroger udev encore une fois

Exemple, pour savoir ce que /dev/sda à besoin pour fonctionner 

```
udevinfo -a -p /sys/block/sda | grep DRIVERS

    DRIVERS=="sd"

    DRIVERS==""

    DRIVERS==""

    DRIVERS=="ahci"

    DRIVERS==""

```

On peut voir que /dev/sda dépend de 2 drivers, soit high level "sd" (SCSI Disk support) qui a été au préalable activé dans la section "SCSI device support" et "ahci".

Pour trouver l'option dans le noyau correspondant au driver "ahci", vous devez lancer ceci 

```
cd /usr/src/linux-2.6.19-gentoo-r5

     find -name Makefile | xargs grep ahci

./drivers/ata/Makefile:obj-$(CONFIG_SATA_AHCI)          += ahci.o

```

On peut voir que c'est la variable CONFIG_SATA_AHCI qui est responsable du driver.

On peut aller dans make menuconfig et rechercher "SATA_AHCI" et on va se retrouver avec ceci :

```
Symbol: SATA_AHCI [=y]

Prompt: AHCI SATA support

  Defined at drivers/ata/Kconfig:26

  Depends on: ATA && PCI

  Location:

    -> Device Drivers

      -> Serial ATA (prod) and Parallel ATA (experimental) drivers

        -> ATA device support (ATA [=y])

```

Alors, sous la section "Serial ATA (prod) and Parallel ATA (experimental) drivers", on doit activer "ATA device support" puis "AHCI SATA support" en dur.

Les disques dur SATA ainsi que les disques dur PATA ont besoin du SCSI disk support ainsi que du chipset support pour bien fonctionner.

De plus, pour les lecteurs optiques qui utilisent la nouvelle section PATA, vous devez aussi activer "SCSI CD-ROM support" dans la section "SCSI device support".

Ajout du support réseau dans le noyau 

Tout d'abord, nous devons savoir combien on a de carte réseau 

```
lspci | grep Ethernet
```

, par exemple 

```
00:0a.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 74)

      00:0e.0 Ethernet controller: VIA Technologies, Inc. VT6120/VT6121/VT6122 Gigabit Ethernet Adapter (rev 11)

```

Maintenant on doit lancer 

```
ifconfig -a
```

Pour trouver le driver que eth0 utilise, on doit lancer la commande :

```
# udevinfo -a -p /sys/class/net/eth0

    DRIVERS==""

    DRIVERS=="3c59x"

    DRIVERS==""

    DRIVERS==""

```

En utilisant la variable qui est responsable d'activer le noyau, on peut trouver le driver en question :

```
find /usr/src/linux-2.6.20-gentoo -name Makefile | xargs grep 3c59x

/usr/src/linux-2.6.20-gentoo/drivers/net/Makefile:obj-$(CONFIG_VORTEX) += 3c59x.o

```

Alors, il reste juste à faire une recheche dans make menuconfig et on va obtenir ceci :

```
Symbol: VORTEX [=n]

Prompt: 3c590/3c900 series (592/595/597) "Vortex/Boomerang" support

  Defined at drivers/net/Kconfig:705

  Depends on: NET && NETDEVICES && !UML && NET_VENDOR_3COM && (PCI || E

  Location:

    -> Device Drivers

      -> Network device support

        -> Network device support (NETDEVICES [=y])

          -> Ethernet (10 or 100Mbit)

            -> 3COM cards (NET_VENDOR_3COM [=n])

  Selects: MII

```

Il est recommandé d'aller dans la section en question et de mettre en dur cette option dans le noyau.

Note : Si vous n'avez pas activé l'option "[ ] 3COM cards", vous ne pourrez pas voir les différents drivers offert par 3com.

Si vous avez plus d'une carte réseau, vous pouvez suivre la même procédure.

Il y a une note à propos du driver VORTEX : "Selects: MII" and in other cases "Selects: CRC32 && CRC_CCITT && MII"

Ça indique seulement que lorsqu'on active ce driver, les options MII,CRC32 et CRC_CCITT vont s'activer automatiquement.

Ajout du sopport Framebuffer dans le noyau

Maintenant que vous avez un noyau fonctionnel, peut-être que vous voulez activer le support pour le framebuffer.

Pour activer le tout, vous avez aller dans la section "Device Drivers" et ensuite dans la sous-section "Graphics support"

Vous devez activer l'option

```
<*> Support for frame buffer devices
```

ainsi que  

```
<*>   VESA VGA graphics support
```

Le driver VESA par défaut c'est "vesafb-tng" avec une résolution de "640x480@60".

Vous pouvez modifier le tout pour avoir un affichage à votre goût et surtout avoir une résolution supportée par votre carte graphique et votre écran.

De plus, pour éviter les problèmes, il est imporant d'utiliser le framebuffer open source par VESA, car ça peut causer des problème avec Xorg.

Par exemple, le driver propriétaire de ATI fonctionne très mal avec le framebuffer radeon tandis qu'avec le vesa-tng ça fonctionne #1.

Il faut aussi activer :

"Console display driver support" 

```
< > Framebuffer Console support
```

De plus, les options "Framebuffer Console Rotation" et "Select compiled-in fonts"  peuvent ne pas être sélectionnées.

Il ne faut pas oublier l'option "Logo configuration" 

Trouver un module qui est utilisé par le noyau

Voici un script venant de (gkh-lkn) pour trouver les modules qui sont en cours d'utilisation par le noyau 

```

#!/bin/bash

#

# find_all_modules.sh

#

for i in `find /sys/ -name modalias -exec cat {} \;`; do

    /sbin/modprobe --config /dev/null --show-depends $i ;

done | rev | cut -f 1 -d '/' | rev | sort -u

```

Avec le nom du module, on peut trouver la configuration qui permet de l'activer dans le noyau :

(gkh-lkn): par exemple, le module "cciss"

```
cd /usr/src/linux

      find -name Makefile | xargs grep cciss

```

Une des lignes retournées par la sortir de la commande va ressembler à ceci :

```
./drivers/block/Makefile:obj-$(CONFIG_BLK_CPQ_CISS_DA)  += cciss.o
```

Il ne reste qu'à chercher dans make menuconfig ceci : "BLK_CPQ_CISS_DA"

On n'a pas besoin de chercher "CONFIG_"

Trouver le bon pilote à activer dans le noyau à partir lspci

La façon de trouver un driver qui correspond à un nom de module à été expliqué dans la sous-section : "Configurer le noyau pour supporter une nouvelle périphérique"

5) Resources

Linux Kernel in a Nutshell *Section_8 wrote:*   

> Chapter 7 tells how to find the driver and kernel config options for devices. This book is in portage as app-doc/linux-kernel-in-a-nutshell

  *Greg Kroah-Hartman wrote:*   

> The book is current as of the 2.6.18 kernel release, newer kernel versions will cause some of the configuration items to move around and new configuration options will be added.

 

Kernel configuration slideshowLast edited by d2_racing on Mon Apr 30, 2007 4:07 pm; edited 7 times in total

----------

## d2_racing

Il est encore en construction, par contre j'ai fait ça à date  :Smile: 

----------

## d2_racing

Si vous avez des corrections j'attends de vos nouvelles  :Smile: 

----------

## ghoti

Travail impressionnant !   :Shocked: 

Toutefois, il me semble que tu as parfois pris quelques libertés de traduction qui ne sont peut-être pas tout-à-fait heureuses.

D'autre part, certaines différences avec le texte anglais me laisseraient penser que tu t'es basé sur une ancienne version ? 

Je n'ai pas été jusqu'au bout mais voici quelques réflexions :

(Bon, on passe les quelques fautes d'orthographe : ce n'est pas le plus important ici !  :Wink:  )

1. En bas de la table des matières de la version originale figure une note explicative importante concernant les pilotes (en dur ou en modules). Tu n'as pas repris ce passage ?

2. Dans la partie 1) point 2, tu écris :

 *Quote:*   

> un système de base doit avoir le support en dur(*) pour les disques durs (IDE ou SATA) pour la partition qui va contenir le noyau (/boot) et surtout /,de plus on doit aussi avoir le système de fichier aussi en dur (*) pour la partition /boot et /

 

Concernant la partition /boot, ton affirmation n'est pas tout-à-fait exacte (elle ne figure d'ailleurs pas dans la version originale). En effet, lors du chargement du noyau, seul grub doit accéder au système de fichier /boot ainsi qu'au système de fichier où se trouve le noyau (il n'est en effet pas obligatoire qu'il figure dans /boot !)  Grub iznot ze noyau et il n'est donc pas impératif que le support correspondant soit en dur dans le noyau. Au total, seul le support du disque et du fs de la racine doivent obligatoirement être en dur.

Perso, je n'ai pas trouvé ce passage très clair et je propose donc la traduction libre suivante :

 *Quote:*   

> Faites simple pour commencer; un système permettant de démarrer le noyau et Gentoo doit essentiellement posséder : 
> 
> - le support en dur du disque dur (SATA ou IDE) sur lequel se situe le système de fichier de la racine, 
> 
> - le support en dur dudit système de fichier racine, 
> ...

 

3.  *Quote:*   

> #  Ceci peut sembler compliqué la première fois lorsqu'on se demande ce qui est requis mettre en dur ou en module au niveau du support pour les disques durs et les systèmes de fichier, le plus simple c'est de les mettres en dur.

 

Perso, je supprimerais la partie soulignée : l'affirmation est vraie pour tous les pilotes et pas uniquement pour le support disque ! Chez moi, tout est en dur, à part quelques rares cas (nvidia  :Wink:  )

4. *Quote:*   

>  Prenez note qu'il n'y a aucun noyau qui utilise le nom générique "bzImage".C'est le meilleur moyen pour identifier un noyau précisément.

 

J'aurais plutôt dit :

"Notez qu'aucun noyau ne possède le nom générique "bzimage"; il vaut bien mieux disposer d'un moyen rapide et facile pour identifier la version du noyau à partir de laquelle a été compilé chaque fichier."

5. *Quote:*   

> Si vous avez déjà unn noyau fonctionnel(sans kernel panic) et que vous voulez reconfigurer ou ajouter le support pour une périphérique

 

Je supprimerais la partie soulignée : il peut y avoir d'autres problèmes que des "kernel panic" !

6. *Quote:*   

> make menuconfig est largement utilisé et la plupart des personnes qui demandent de l'aide sur le forum
> 
> utilise cette méthode

 

Détail, mais la version originale dit plutôt quelque chose comme "il y a fort à parier que cette méthode sera plus familère aux personnes à qui vous demandez de l'aide" 

7. *Quote:*   

> Le livre "Linux Kernel in a Nutshell" (voir Resources) de Greg Kroah-Hartman va être référencé à plusieurs reprises dans cette section.Il va être référencé par ceci : "gkh-lkn" 

 

Cette note figure maintenant en dessous de la table des matières. Il vaut mieux la mettre là puisque tu fais déjà référence au bouquin plus haut ...

8. *Quote:*   

> L'option "--no-clean" empêche Genkernel d'effacer le contenu des fichiers du noyau (fichiers object et dépendances). 

 

" "--noclean" empêche genkernel d'essayer de nettoyer l'arborescence des sources du noyau : puisqu'elle n'a pas encore été utilisée, elle est sensée être déjà propre"

(note perso : en fait, il n'est pas garanti que les sources soient propres au départ. Qui sait quelles crasses peut avoir laissé un préparateur un peu distrait ou amoureux !  :Wink:  Si on est parano ou maniaque, il vaut mieux laisser faire le "clean" !) 

9. *Quote:*   

>  La plupart des pilotes sont marqués "en développement", alors on doit sélectionner cette option pour mener à terme la configuration du noyau. 

 

En fait, l'auteur veut dire ceci :

"un certain nombre de pilotes sont marqués en développement bien qu'ils fonctionnent pour la plupart des gens. Dès lors, activer cette option vous donnera le choix plutôt que de les masquer d'office"

10. *Quote:*   

> La prochaine section, "Processor type and features" doit être vérifiée et corrigée au besoin

 

Il manque les considérations concernant les différents processeurs. Ca paraît évident mais puisque c'est un howto et, qui plus est, une traduction, il vaut mieux être explicite  :Wink: 

11. *Quote:*   

>  si vous avez un PC de table. 

 

"un PC standard"

(c'est valable aussi pour les portables et toutes les déclinaisons qui correspondent à une architecture PC standard)

12. Passage non traduit :

 *Quote:*   

> There is a percentage in the righthand corner, 69%, which means that all the help is not in the window, pressing PageDown reveals

 

"Il y a un pourcentage dans le coin droit, 69%, qui signifie que tout le texte d'aide n'est pas affiché dans la fenêtre. Un appui sur PageDown fait apparaître :"

13. *Quote:*   

> C'est avec ce genre d'information qu'on peut savoir si cette option est nécessaire ou pas.
> 
> Pour tout de suite, veillez prendre seulement en note qu'est-ce que fait ce pilote.

 

Plutôt :

"C'est le genre d'information que vous souhaiterez connaître plus tard, lorsque vous voudrez activer une option de configuration mais sans savoir où elle se trouve. Pour l'instant, notez simplement que c'est là qu'on peut la trouver. 

14. *Quote:*   

> si, après avoir lu l'aide d'unne option et que vous ne savez pas quoi faire, vous avez juste à activer l'option(en module) et plus tard vous pourrez toujours l'enlever.De cette façon, si le noyau n'a pas besoin de cette option,
> 
> le noyau ne va pas la charger. 

 

Plus simplement :

"Si après avoir lu l'aide pour les trois options, vous ne savez toujours pas quel pilote choisir, cochez-les tous en modules et laissez le noyau déterminer celui à utiliser au branchement de votre périphérique."

15. *Quote:*   

> à moins que vous ayez une carte réseau wifi. 
> 
> Ce howto ne traitera pas de ce sujet.

 

Il serait tout de même peut-être bon de développer un peu, comme le fait l'auteur. Le wifi est un point très sensible et le n00b qui va lire ton article ne comprendrait pas que tu l'envoie aussi sèchement se faire voir !  :Wink: 

En espérant que ça te permettra de peaufiner ton chef d'oeuvre !  :Wink: 

----------

## d2_racing

Merci je vais recorriger le tout  :Smile: 

Tu sais, comme j'ai dit je suis en version SID.

Dans quelques temps, je vais corriger les fautes d'orthographes  :Smile: 

----------

## ghoti

 *d2_racing wrote:*   

> Merci je vais recorriger le tout 

 

Très bien mais encore quelques remarques sur cette partie (s'il n'y a pas trop de soleil ce w-e - il y a une canicule extraordinaire en Belgique - j'essaierai de relire le reste  :Wink:  )

Es-tu certain de bien comprendre la différence entre "compiler un pilote (driver) en dur (hard)" et "compiler un pilote (driver) en module" ?

En fait, ton texte devrait être :

 *Quote:*   

>     *  Un pilote en dur signifie qu'on a sélectionné une option dans le noyau en tapant "y" et il va apparaître un "<*>" devant l'option.
> 
>     * Un pilote en module signifie qu'on a sélectionné une option dans le noyau en tapant "m" et il va apparaître "<M>" devant l'option.
> 
>     * Un pilote en dur signifie qu'il va être inclu dans l'image du kernel et donc il va être disponible immédiatement.
> ...

 

 *d2_racing wrote:*   

> 1) Principes généraux à garder en tête 
> 
> #
> 
> # On doit garder un configuration de base simple : Pour que votre noyau et votre Gentoo fonctionne la première fois c'est décrit à l'étape 15 dans le guide d'installation de Gentoo.
> ...

 

Les joies du copy/paste !  :Wink: 

En fait, mon texte était destiné à remplacer le tien. 

C'est bien entendu à toi de décider mais pour l'instant, il y a redondance ...

 *Quote:*   

>  Ceci peut sembl(é)er !! compliqué la première fois lorsqu'on se demande ce qui est requis de mettre en dur ou en module 

 

Non, justement l'auteur veut dire qu'il est plus facile de mettre tout en dur (et il a raison), donc insère plutôt le texte suivant :

 *Quote:*   

> Il peut sembler compliqué la première fois de déterminer quels pilotes il faut mettre en dur et ceux qu'il faut mettre en modules; le plus simple c'est de les mettre tous en dur.

 

Allez les bleus/rouges/verts !

Je sens que tu vas pondre un morceau d'anthologie !  :Very Happy: 

----------

## d2_racing

 *ghoti wrote:*   

> Es-tu certain de bien comprendre la différence entre "compiler un pilote (driver) en dur (hard)" et "compiler un pilote (driver) en module" ?
> 
> 

 

Je comprend très bien c'est quoi un module  :Smile: 

J'ai déjà fait le coup de mettre mon FS en module pour tester...kernel panic  :Smile: 

----------

## ghoti

 *d2_racing wrote:*   

> J'ai déjà fait le coup de mettre mon FS en module pour tester...kernel panic 

 

Hé hé, on a tous été n00b. Même (surtout) moi !  :Laughing:   :Wink: 

Tu devrais quand même indiquer clairement la différence entre les notions de "pilote",  "module" et "dur" car c'est vrai que ce n'est pas facile à appréhender au début. Encore une fois, n'oublie pas que ce texte s'adresse à des débutants (pour nous, les vieux, tout celà est évident !  :Wink:  ) et je pense que pour les nouveaux, il est important d'être très précis, même didactique !

Nous, on a fait notre temps (presque  15 ans de nunux ...) et notre rôle est maintenant de pousser les djeunz à prendre la suite. Mais les djeunz, comme nous à l'époque, ne se laissent pas raconter n'importe quoi. Alors, si on veut rester crédibles, il faut être précis et rigoureux.

Voilà : papy a terminé son sermon  :Wink:   :Laughing: 

----------

## d2_racing

Salut, j'ai refait la partie sur les pilotes et j'ai ajouté une explication  :Smile: 

----------

## swilmet

Merci pour ce (long) tuto   :Very Happy: 

J'ai une petite question... Comment faut-il faire pour passer, par exemple, du noyau 2.6.19 au 2.6.20 ?

Faut-il comparer une à une chaque valeur (avec make menuconfig), et faire les modifications nécessaires pour le nouveau noyau ?

Ou bien y a-t-il une méthode plus rapide ?

Car je pense que c'est un peu barbare de reprendre le .config de l'ancien noyau...  :Confused: 

----------

## d2_racing

Le plus rapide c'est de faire ceci :

Si tu veux passer du noyau 2.6.19-Gentoo-r5 au 2.6.20-Gentoo-r8

# su -

# cd /usr/src

# ls -la

# cd linux

# cp .config  /usr/src/linux-2.6.XX-gentoo-rX/.config

# cd ..

# ln -sfn /usr/src/linux-2.6.XX-gentoo-rX /usr/src/linux

# ls -la

# make oldconfig

répondre aux questions s'il y a lieu

# make && make modules_install

faire le reste comme d'habitude  :Smile: Last edited by d2_racing on Thu Mar 06, 2008 2:19 am; edited 1 time in total

----------

## philpep-tlse

Très bon, vraiment très bon   :Very Happy: 

Merci milles fois   :Rolling Eyes:   :Rolling Eyes:   Je commençait a croire qu'il n'y avait pas d'astuces pour mieux s'en sortir mais tu vient de démontrer que c'était une idée reçue...

J'ai quelques suggestions quand même : Si dans tes commandes tu mettais linux à la place de linux-2.6.XX-gentoo-rX ça pourrait marcher pour tout le monde (mais leurs ferait prendre la mauvaise habitude de copier/coller...   :Rolling Eyes:  )

J'ai relevé une grosse érreur de coherence dans le texte mais je ne la trouve plus maintenant.. Je te fait signe quand je la retrouve..

Encore merci   :Very Happy: 

----------

## d2_racing

Ça fait un méchant bout qu'il est en ligne et je crois qu'il peut servir à tous les débutants ou ceux qui veulent creuser en peu plus  :Smile: 

----------

## d2_racing

Pour les erreurs, pas de problème, j'ai seulement traduit le texte de l'Anglais vers le Français.

----------

## d2_racing

Tant mieux  :Smile: 

----------

