OldGentooWiki:Configuration et installation du noyau
De Gentoo-Quebec.
Index des trucs et astuces avancés
Sommaire |
Résumé
Ce tutoriel explique comment obtenir le noyau dans ses différentes moutures : git-sources, vanilla-sources et gentoo-sources. Il couvre l'aspect configuration personnalisée en fonction de la machine sur lequel le noyau est installé. Il entre plus en détails dans la configuration en révisant chacune des sections de l'utilitaire make menuconfig tout en fournissant quelques recettes pour appliquer les configurations selon le matériel installé et détecté sur la machine visée par l'installation du noyau. Finalement, le tutoriel explique comment compiler le noyau et le rendre disponible au démarrage de l'ordinateur.
Obtention du noyau
Vous avez le choix entre trois types de noyau :
- vanilla-sources : noyau GNU/Linux vanille tel que proposé sur kernel.org.
- gentoo-sources : noyau GNU/Linux vanille disponible sur kernel.org auxquel les développeurs Gentoo ont ajouté quelques patches. Dans le doute installez ceci.
- git-sources (expérimental) : noyau actuellement en realease candidate sur kernel.org (révision du noyau actuellement en cours de développement). N'installez ceci que si vous savez ce que vous faites....
Installation de la version Gentoo (gentoo-sources) - Recommandé
Installation de la version vanille (vanilla-sources)
Installation de la version en cours de développement (git-sources) - EXPÉRIMENTAL!
Les paquets git-sources ne sont pas disponibles dans un environnement stable. Vous devez donc ajouter une entrée au fichier /etc/portage/package.keywords pour les installer.
Création du lien symbolique (obligatoire)
Ce lien symbolique est obligatoire car exigé par plusieurs composantes de votre système lors de leurs compilation (librairies, pilotes, etc). Il y a deux manière de gérer ce lien symbolique : manuelle ou au travers de l'outil eselect.
Création manuelle
Remplacez version par le numéro de la version installée avec la commande emerge précédente. Par exemple, si le paquet installé se nomme gentoo-sources-2.6.31-gentoo-r10, alors version prend la valeur 2.6.31-gentoo-r10.
Creation au travers de eselect
L'outil eselect dispose d'un module lui permettant de détecter automatiquement tous les codes sources du noyau GNU/Linux présents dans le répertoire /usr/src pour peu qu'ils aient été extraits de leur archive TAR. Pour afficher tous les noyaux présents, vous devez utiliser la commande suivante :
Available kernel symlink targets:
[1] linux-2.6.34-gentoo
[2] linux-2.6.34-gentoo-r1
[3] linux-2.6.35-rc3 *
L'astérique située à droite du nom indique vers quels sources du noyau votre lien symbolique /usr/src/linux pointe actuellement. Pour changer ce lien, il vous faut utiliser la commande eselect kernel set suivie soit du numéro (entre crochets) de noyau désiré, soit du nom du noyau. Dans l'exemple ci-dessus, pour faire pointer /usr/src/linux sur le noyau linux-2.6.34-gentoo vous devez utiliser une des deux manières suivantes :
OU
Configuration minimale
La configuration minimale vise à créer un fichier de configuration contenant des éléments de compilation pré-initialisés. Ces éléments sont des options considérées comme les meilleures par les mainteneurs du noyau. Les options sont pré-initialisées en fonction de l'architecture : 32 bits ou 64 bits.
Il y a deux façons de procéder à une configuration minimale :
- Les seeds de Robert Raitz (aka Pappy_Mcfae)
- L'outil defconfig
Les seeds de Robert Raitz, un fichier .config prêt à l'emploi, ont moins d'options pré-initalisées que le fichier .config généré par defconfig. Positionnez-vous dans le dossier /usr/src/linux avant d'effectuer la configuration minimale.
Configuration avec defconfig
Il y a également une syntaxe pour créer un fichier de configuration en fonction d'une architecture précise.
Architecture 32 bits
Architecture 64 bits
Configuration avec un seed
Cette approche consiste à créer le fichier .config en y copiant le contenu d'un seed extrait du site Web de Robert Raitz.
| Exemples | Instructions |
|---|---|
Démarrage : |
|
Sélection type de noyau : |
|
Sélection du seed : |
|
Copie du seed : |
|
Éditez le fichier .config :
Collez le contenu du presse-papier dans le fichier édité et enregistrez-le.
Personnalisation
Les exemples des commandes insérés dans cette section ont été produits sur un Dell Studio 17. Le résultat de la commande utilisée différera d'une machine à l'autre compte tenu de ses spécifications matérielles. Le concept d'utilisation tant qu'à lui demeure le même.
Le fichier de configuration de base étant créé, vous allez maintenant le modifier afin de configurer le noyau selon les spécificités de votre machine et de votre matériel. Vous utilisez l'outil menuconfig de la commande make.
Tout au long de la personnalisation, vous aurez à travailler avec des outils telle la commande lspci. Ouvrez un second terminal pour exécuter les outils. Dans votre terminal chroot, lancez l'outil menuconfig.
Extraction des codes et numéros des vendeurs des composants matériels
Exécutez cette commande :
Vous obtenez une liste similaire à celle-ci :
00:00.0 0600: 8086:0044 (rev 02) 00:02.0 0300: 8086:0046 (rev 02) 00:16.0 0780: 8086:3b64 (rev 06) 00:1a.0 0c03: 8086:3b3c (rev 06) 00:1b.0 0403: 8086:3b56 (rev 06) 00:1c.0 0604: 8086:3b42 (rev 06) 00:1c.1 0604: 8086:3b44 (rev 06) 00:1c.2 0604: 8086:3b46 (rev 06) 00:1c.3 0604: 8086:3b48 (rev 06) 00:1c.4 0604: 8086:3b4a (rev 06) 00:1c.5 0604: 8086:3b4c (rev 06) 00:1d.0 0c03: 8086:3b34 (rev 06) 00:1e.0 0604: 8086:2448 (rev a6) 00:1f.0 0601: 8086:3b09 (rev 06) 00:1f.2 0106: 8086:3b29 (rev 06) 00:1f.3 0c05: 8086:3b30 (rev 06) 00:1f.6 1180: 8086:3b32 (rev 06) 08:00.0 0280: 14e4:4353 (rev 01) 14:00.0 0c00: 1217:10f7 (rev 01) 14:00.1 0805: 1217:8120 (rev 01) 14:00.2 0180: 1217:8130 (rev 01) 20:00.0 0200: 10ec:8168 (rev 03) ff:00.0 0600: 8086:2c62 (rev 02) ff:00.1 0600: 8086:2d01 (rev 02) ff:02.0 0600: 8086:2d10 (rev 02) ff:02.1 0600: 8086:2d11 (rev 02) ff:02.2 0600: 8086:2d12 (rev 02) ff:02.3 0600: 8086:2d13 (rev 02)
Lancez le navigateur Web pour connaître le nom des pilotes associés au matériel.
| Exemple | Instructions |
|---|---|
Identification des pilotes |
|
Liste des pilotes |
|
Autres pilotes et modules
La commande précédente ne produit pas toujours toute l'information nécessaire. Complétez la liste des modules et pilotes avec cette commande :
Notez à nouveau chaque nom de module en éliminant les doublons, c'est à dire ceux dont vous avez obtenu le nom à la section précédente.
Configuration personnalisée
Le nom de cette sous-section est très évocateur. Il n'y a pas de recette magique de configuration personnalisée du noyau. Chaque élément de configuration reçoit une valeur et est activé ou désactivé en fonction des composants matériels de la machine. Cependant la procédure décrite ici s'applique à tous. Son déroulement va ainsi :
- Rechercher les items à configurer
- Noter où et comment intervenir
- Appliquer les configurations
Plutôt que de noter les sections où intervenir et le comment, ouvrez un second terminal chroot. Vous effectuez les recherches dans un terminal et vous configurez dans l'autre.
Voici comment «chrooter» dans un second terminal.
# env-update && source /etc/profile
# export PS1="(CHROOT2) $PS1"
# cd /usr/src/linux
# make menuconfig
Si vous installez Funtoo Linux et que vous avez créé un point de montage /mnt/funtoo, alors remplacez /mnt/gentoo par /mnt/funtoo.
Recherche d'un item à configurer
Recherchez l'item à configurer en utilisant l'un des deux terminaux dans lesquels vous avez lancé make menuconfig.
| Exemple | Instructions |
|---|---|
Lancement de la recherche |
|
Utilisation de l'information trouvée |
|
Il arrive parfois que vous ne puissiez pas utiliser le nom du module tel qu'il a été fourni par les commandes lspci -n et lspci -kvm. C'est le cas de l'exemple où intel_agp a été inversé. Il en va de même pour les noms de module dont la syntaxe comprend un trait-d'union. Remplacez celui-ci par un caractère de soulignement.
Une autre situation est celle où vous devez scinder le nom du module. C'est le cas par exemple pour i810_RNG. Recherchez l'item à configurer pour chaque partie du nom. Utilisez l'aide et suivez les directives à la lettre.
Il arrive aussi en certaines occasions qu'il n'y ait aucun module utilisé par le noyau. Ne soyez pas inquiété. L'étape de révision vous permettra de vous assurer que votre noyau est bien configuré.Configuration de l'élément
| Exemple | Instructions |
|---|---|
Configuration |
|
Répétez les opérations de recherche et de configuration pour chaque module que vous avez noté lors de l'exécution des commandes lspci -n et lspci -kvm.
Il arrivera assez fréquemment qu'un paramètre de configuration soit déjà initialisé, * ou M. Soit qu'il l'ait été par la création du fichier de configuration (.config) avec un seed, soit qu'il l'ait été par l'exécution de make defconfig. Ne touchez pas à l'élément et laissez-le configuré tel quel.
Révision
Vous passez ici en revue chacune des sections de la configuration du noyau. Chaque section fait l'objet d'un tutoriel qui lui est dédiée. Ceci dans le but d'alléger le document principal tout en permettant une consultation qui soit la plus aisée possible. Le tableau qui suit, liste chaque section. Cliquez sur le lien pour en consulter le guide de configuration.
L'objectif est de revoir chacune des configurations effectuées précédemment (seed, defconfig, personnalisation) en navigant dans chaque section de configuration du noyau Linux. Cet exercice permet de vous assurer qu'aucun élément n'a été oublié. Cela vous permet également de déterminer si des éléments pré-initialisés sont vraiment nécessaires et si des éléments non initialisés s'avèrent nécessaires.
Le numéro entre parenthèses correspond à la version du noyau Linux utilisé pour rédiger le tutoriel. Advenant des différences entre les versions, un tutoriel pour ladite version sera publié.
Lorsque vous configurez un noyau si vous constatez des différences et qu'un tutoriel n'est pas disponible pour la version que vous configurez, veuillez en informer Gentoo-Québec via le forum, section Wiki.| Sections | Description sommaire |
|---|---|
| General setup (2.6.34) | Éléments de configuration généraux. Habituellement aucune modification est nécessaire. |
| Enable loadable module support (2.6.34) | Regroupement d'options pour gérer la méthode d'intégration des modules au noyau. |
| Enable the block layer (2.6.34) | Ensemble d'options requises par le noyau pour monter les périphériques tels disques durs, médias de stockage externes (USB), unités SCSI. |
| Processor type and features (2.6.34) | Groupe d'options pour configurer le noyau en fonction du (des) processeur(s), CPUs, de la machine. Les données du BIOS et les informations du fichier /proc/cpuinfo sont d'une très grande utilité pour initialiser les éléments de cette section. |
| Power management and ACPI options (2.6.34) | Ensemble de paramètres pour gérer la consommation énergétique. |
| Bus options (PCI etc...) (2.6.34) | Options de configuration des dispositifs PCI. |
| Executable file formats / Emulations (2.6.34) | Options permettant au noyau d'exécuter des binaires au format ELF. C'est un format utilisé par différents systèmes et architectures. |
| Networking support (2.6.34) | Options à activer pour les programmes ayant besoin du support réseau fourni par le noyau. |
| Device drivers (2.6.34) | Ensemble d'options pour configurer les nombreux pilotes requis pour faire fonctionner le matériel. |
| Firmware drivers (2.6.34) | Options reliées aux firmwares. |
| File systems (2.6.34) | Options pour exploiter les différents systèmes de fichiers GNU/Linux |
| Kernel hacking (2.6.34) | Différentes options régissant le comportement du noyau. |
| Security options (2.6.34) | Options gérant l'usage de différentes techniques de sécurité. |
| Cryptographic API (2.6.34) | Ensemble d'options pour activer au non différents algorithmes d'encryptage. |
| Virtualization (2.6.34) | Options pour permettre au système GNU/Linux hôte d'exécuter d'autres systèmes d'exploitation dans des machines virtuelles. Ces options n'ont rien à voir avec VirtualBox et VMWare. Vous cachez les options à configurer en n'activant pas l'option. |
| Library routines (2.6.34) | Ensemble d'options gouvernant l'usage de certaines librairies. |
Compilation
La compilation du noyau se résume à l'exécution de deux commandes.
Le paramètre -jx est optionnel. Toutefois, Greg Kroah-Hartman mentionne dans son bouquin Linux Kernel in a Nutshell que l'utilisation de celui-ci améliore le temps de compilation. Vous remplacez le x par une valeur équivalant à deux fois le nombre de CPUs. La commande cat /proc/cpuinfo | grep processor vous donne le nombre de CPUs. Ainsi vous spécifiez 8 si quatre CPUs équipent votre machine.
Installation
L'installation consiste à copier trois fichiers dans le répertoire /boot. Vous devez monter la partition /boot si ce répertoire a une partition qui lui est dédiée. Les fichiers à copier sont :
- arch/arch/boot/bzImage
- System.map
- .config
La copie se réalise de manière automatique par le biais de la commande make install.
Ceci copie dans /boot les trois fichiers sus-mentionnés :
- arch/arch/boot/bzImage => /boot/vmlinuz-version du noyau
- System.map => System-version du noyau.map
- .config => config-version du noyau











