Cela a déjà été expliqué dans la section Un noyau de la première partie de la formation.
Le noyau qui tourne en ce moment sur votre Linux fraîchement installé est le noyau fourni en standard dans la distribution Debian. C'est un noyau assez gros qui est destiné à pouvoir fonctionner sur la quasi-totalité des ordinateurs.
Ce que nous allons faire est personnaliser le noyau pour qu'il supporte nos périphériques et eux seulement. Plus le noyau est petit, plus le système d'exploitation est rapide. L'étape la plus difficile sera la configuration du noyau, pour qu'il supporte bien tous nos périphériques.
Les noyaux Linux sont rigoureusement numérotés. Les numéros de version du noyau comportent 3 ou 4 chiffres :
les deux premiers chiffres correspondent au numéro de la branche,
le troisième chiffre correspond à la version du noyau dans cette branche,
le quatrième chiffre éventuel correspond au numéro de la release de maintenance, qui contient des corrections de bugs sans ajout de nouvelles fonctionnalités.
Par exemple, le noyau numéroté 2.6.11.9 correspond à la 9ème release de maintenance de la version n°11 de la branche 2.6 du noyau Linux.
Il existe deux types de branches :
les branches stables dont le dernier numéro est pair (exemple : 2.2, 2.4, 2.6) ;
les branches instables ou beta qui servent au développement et dont le dernier numéro est impair. Elles servent au développement de la branche de numéro pair supérieur (exemple : la branche 2.3 a servi au développement de l'ancienne branche stable 2.4, et la branche 2.5 a servi au développement de la nouvelle branche stable 2.6).
Dans le cas général, le choix est simple : il faut choisir, sauf cas particulier, le dernier noyau de la dernière branche stable. Au jour où j'écris ces lignes, il s'agit du noyau 2.6.16.2.
Pour avoir les dernières infos sur les versions des noyaux, allez sur le site officiel du noyau Linux : The Linux Kernel Archives. Le numéro de version du noyau "stable" le plus récent est indiqué sur la ligne intitulée The latest stable version of the Linux kernel is:
Pour bien configurer son noyau, il faut bien connaître le hardware de sa machine, et notamment le modèle du chipset et le type de processeur. Pour connaître le type de processeur :
% cat /proc/cpuinfo |
La ligne model name vous donnera le type de processeur de votre machine.
Par exemple, sur mon ordinateur portable, j'ai :
|
Pour connaître le modèle du chipset de votre machine, le plus simple est d'utiliser la commande lspci. Cette commande scanne le bus PCI, recupère les IDs des composants connectés au bus PCI, les compare à une base de donnée d'IDs PCI et affiche le résultat. Si vous avez une connexion Internet, commençez par mettre à jour la base de donnée d'IDs PCI :
# update-pciids |
Ensuite, lancez la commande :
% lspci |
La première ligne devrait vous donner le modèle de votre chipset.
Par exemple, sur mon ordinateur portable, la première ligne est :
J'en déduis que j'ai un chipset Intel modèle 845. |
Les lignes suivantes vous donneront plein d'autres informations intéressantes sur le hardware de la machine, et certaines de ces informations vous seront utiles pour la suite de la quête d'information sur la configuration matérielle de la machine.
La sortie de la nouvelle branche 2.6 marque l'arrivée dans le noyau de la nouvelle architecture pour la gestion du son sous Linux : ALSA (Advanced Linux Sound Architecture). Pour savoir quel driver ALSA va vous permettre de faire marcher votre carte son, regardez la page ALSA Soundcard Matrix avec un navigateur graphique :
les cartes sur fond blanc sont supportées par ALSA,
Les cartes sur fond rouge ne sont pas supportées.
Une fois que vous avez trouvé votre carte dans la liste, relevez le nom du module ALSA correspondant. Pour cela, cliquez sur Details ; le nom du module est écrit dans la première phrase (il commence toujours par le préfixe snd-).
Pour les possesseurs d'un ordinateur portable, le site Linux on Laptops est aussi une très bonne source d'information pour savoir quel driver ALSA utiliser pour sa carte son, ainsi que pour tous les autres périphériques intégrés dans l'ordinateur portable. |
Tout d'abord, posez-vous la question suivante : ai-je vraiment besoin d'un système d'économie d'énergie ? Si vous voulez monter un serveur ou une station de travail qui n'a pas besoin d'être mise en veille, vous n'avez pas à vous préoccuper du système d'économie d'énergie. Par contre, si vous voulez pouvoir mettre votre ordinateur en veille ou si vous avez un ordinateur portable, il faut partir aux renseignements pour savoir quel système d'économie d'énergie est supporté par le BIOS (regardez dans le manuel de votre portable ou de votre carte mère) :
l'APM (Advanced Power Management),
ou l'ACPI (Advanced Configuration and Power Interface).
Si votre système supporte les deux, l'APM et l'ACPI, je vous conseille, pour la suite de la configuration de votre système, de choisir l'APM, car plus simple et mieux supporté sous Linux. |
Pour la décompression et la configuration du noyau, installez les quatres packages suivants :
# apt-get install bzip2 libncurses5-dev fakeroot kernel-package |
Maintenant que le système est prêt, vous allez repasser en simple utilisateur et télécharger les sources du noyau.
Les sources du noyau se présentent sous la forme d'un fichier compressé linux-2.6.16.2.tar.bz2.
Si vous avez déjà une connexion rapide à Internet qui marche, téléchargez le fichier source (35 Mo environ) sur un miroir du noyau Linux, par exemple le miroir de VIA linux.via.ecp.fr ou le miroir officiel français ftp.fr.kernel.org, et mettez-les dans le répertoire ~/kernel :
% mkdir ~/kernel/ % wget -P ~/kernel ftp://ftp.fr.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.2.tar.bz2 |
en remplaçant éventuellement ftp.fr.kernel.org par un autre miroir plus proche, et en adaptant les numéros de version.
Téléchargez également la signature cryptographique des sources, qui vous permettra par la suite de vérifier l'authenticité et l'intégrité des sources :
% wget -P ~/kernel ftp://ftp.fr.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.2.tar.bz2.sign |
Pour vérifier l'authenticité et l'intégrité des sources du noyau (par exemple pour vérifier que les sources n'ont pas été modifiées par un pirate qui se serait introduit sur le site miroir), on va utiliser le programme GnuPG (alias GPG), qui est un équivalent libre de PGP, et qui est installé par défaut (package gnupg). Commencez par télécharger la clé publique de Linux Kernel Archives :
% gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E |
Comme c'est la première fois que vous utilisez GPG, il crée le répertoire ~/.gnupg avec un fichier options, et vous demande de réexécuter la commande. Exécutez donc la même commande une deuxième fois.
Ensuite, vérifiez l'authenticité de la clé publique en comparant le fingerprint de la clé que vous avez téléchargé avec le fingerprint de la vraie clé de Linux Kernel Archives : ils doivent être strictement identiques !
Pour connaître le fingerprint de la clé que vous avez téléchargée :
% gpg --fingerprint /home/toto/.gnupg/pubring.gpg ------------------------------- pub 1024D/517D0F0E 2000-10-10 Linux Kernel Archives Verification Key <ftpadmin@kernel.org> Key fingerprint = C75D C40A 11D7 AF88 9981 ED5B C86B A06A 517D 0F0E sub 4096g/E50A8F2A 2000-10-10 |
Pour connaître le vrai fingerprint de la clé, regardez sur le site principal du noyau Linux à l'adresse http://www.kernel.org/signature.html.
Si les deux fingerprints sont identiques, alors c'est bien la vraie clé publique de Linux Kernel Archives que vous avez téléchargé dans votre trousseau de clés. Vous pouvez alors passer à la vérification des sources :
% cd ~/kernel % gpg --verify linux-2.6.16.2.tar.bz2.sign linux-2.6.16.2.tar.bz2 |
Il doit normalement vous répondre que la signature est bonne (ce qui prouve l'authenticité et l'intégrité), mais que la clé n'est pas certifiée avec une signature de confiance :
gpg: Signature faite mer 04 fév 2004 05:25:43 CET avec une clé DSA ID 517D0F0E gpg: Bonne signature de "Linux Kernel Archives Verification Key <ftpadmin@kernel.org>" gpg: ATTENTION: Cette clé n'est pas certifiée avec une signature de confiance ! gpg: Rien ne dit que la signature appartient à son propriétaire. Empreinte de clé principale: C75D C40A 11D7 AF88 9981 ED5B C86B A06A 517D 0F0E |
Si vous n'avez pas de connexion rapide à Internet, demandez à un ami qui a une connexion Internet rapide de télécharger les sources du noyau et de vous les graver sur un CD, ou achetez un magazine Linux accompagné d'un CD (le CD contiendra surement les sources du noyau).
Vous devez donc maintenant avoir un fichier contenant les sources du noyau Linux dans le répertoire ~/kernel. Nous allons réaliser un paquet debian pour la création du noyau. Nous allons profiter de l'excellente gestion des paquets pour créer notre propre noyau. La réalisation d'un paquet pour le kernel permet une simplification du processus d'installation/suppression du kernel. Une autre raison est aussi que si vous avez plusieurs même machines, il suffira de compiler un kernel pour toutes les machines !
% cd ~/kernel % tar xvjf linux-2.6.16.2.tar.bz2 % ln -sfn linux-2.6.16.2 linux % cd linux/ |
Si le fichier a l'extension .gz au lieu de l'extension .bz2, cela signifie que la standard de compression utilisé est différent, et il faut donc remplaçer la commande tar xvjf par la commande tar xvzf pour la décompression des sources du noyau. |
La configuration du noyau est stockée dans un fichier .config à la racine des sources du noyau. Ce fichier est lu et modifié par l'utilitaire de configuration du noyau, et il est ensuite lu lors de la compilation du noyau. Pour vous faciliter la tâche, j'ai fait un fichier de configuration type que vous n'aurez plus qu'à personnaliser :
% cp /root/config/config-2.6.x .config |
ou :
% wget http://people.via.ecp.fr/~alexis/formation-linux/config/config-2.6.x % mv config-2.6.x .config |
ou :
si vous avez déjà compilé un noyau, le fichier .config se trouve déjà dans le repertoire /boot/config-2.6.x, où x correspond à votre version compilé et installé sur votre machine. Il ne vous restera qu'a copier le fichier dans votre dossier où se trouvent les sources du noyau :
% cp /boot/config-2.6.x ~/kernel/linux/.config |
Pour lancer l'utilitaire de configuration du noyau, tapez, toujours en tant que simple utilisateur :
% make menuconfig |
Vous arrivez alors dans l'interface de configuration du noyau :
Vous naviguez dans le menu avec les flèches et vous entrez dans les menus en appuyant sur Entrée. Pour sortir d'un menu, sélectionnez Exit à l'aide de la touche Tab et appuyez sur Entrée.
Dans tous les cas, n'hésitez pas à lire l'aide qui est attachée à chaque option. Vous y trouverez généralement des informations pertinentes vous permettant de juger si vous devez activer l'option ou pas. Pour cela, placez-vous sur une option et appuyez sur Tab jusqu'à être positionné sur Help et appuyez sur Entrée.
Techniquement, les modules sont des morceaux de noyau qui peuvent être insérés ou enlevés sans redémarrer l'ordinateur. Cela présente l'avantage d'avoir un noyau de taille raisonnable tout en procurant une grande souplesse.
En pratique, un module est un pilote d'un périphérique ou d'une fonctionnalité. Par exemple, pour faire marcher une carte réseau, on a besoin d'insérer le module conçu pour cette carte réseau.
Pour certaines options du noyau, vous avez le choix entre mettre l'option en dur ou en modules. Nous allons mettre un maximum de périphériques en modules... mais pas tous !
Il y a deux types d'options pour la configuration du noyau (on passe d'une option à la suivante en appuyant sur Espace) :
Les options entre crochets droits [ ] ; vous avez alors le choix entre mettre cette option :
en dur dans le noyau : vous devez faire apparaître une étoile : [*],
ou ne pas la mettre : la case doit rester vide : [ ].
Les options entre crochets fléchés < > ; vous avez le choix entre mettre cette option :
en dur dans le noyau : vous devez faire apparaître une étoile : <*>,
en module : vous devez faire apparaître un M : <M>,
ou ne pas la mettre : la case doit rester vide : < >.
Menu : Processor type and features
Sélectionnez Processor family. Dans la liste qui s'affiche alors, sélectionnez votre type de processeur.
Exemple : si vous avez un processeur Athlon, sélectionnez :
|
De plus, si vous avez un système multi-processeur ou un processeur dual-core ou encore un Pentium 4 avec le support de l'HyperThreading, activez l'option suivante :
[*] Symmetric multi-processing support |
et mettez le nombre de processeurs réels ou virtuels que vous possédez :
(2) Maximum number of CPUs (2-255) |
Si vous avez un Pentium 4 avec le support de l'HyperThreading, activez en plus l'option suivante :
[*] SMT (Hyperthreading) scheduler support |
Menu : Power management options (ACPI, APM)
Si vous voulez utiliser un système d'économie d'énergie, suivez les instructions ci-dessous :
si vous comptez utiliser l'APM, allez dans le sous-menu APM (Advanced Power Management) BIOS Support et activez :
<M> APM (Advanced Power Management) BIOS support |
si vous comptez utiliser l'ACPI, allez dans le sous-menu ACPI (Advanced Configuration and Power Interface) Support et activez :
[*] ACPI Support <M> AC Adapter <M> Battery <M> Button <M> Video <M> Generic Hotkey <M> Fan <M> Processor <M> Thermal Zone |
Activez également les modules spécifiques à votre marque d'ordinateur, comme par exemple l'option suivante si vous avez un portable de marque Toshiba :
<M> Toshiba Laptop Extras (NEW) |
De plus, si vous avez un ordinateur portable doté de la capacité de faire varier la fréquence du processeur selon le contexte pour économiser de l'énergie, allez dans le sous-menu CPU Frequency scaling et activez :
[*] CPU Frequency scaling <*> CPU frequency translation statistics Default CPUFreq governor (userspace) ---> <*> 'performance' governor <*> 'powersave' governor --- 'userspace' governor for userspace frequency scaling <*> 'ondemand' cpufreq policy governor <*> 'conservative' cpufreq governor |
Puis, dans la section CPUFreq processor drivers, activez le pilote spécifique à votre processeur (n'hésitez pas à utiliser l'aide pour faire le bon choix !).
Exemple : si vous avez un portable doté d'un Pentium 4 M et d'un southbridge ICH, activez :
|
Menu : Device Drivers > ATA/ATAPI/MFM/RLL support
Si vous avez un chipset IDE, allez dans la section IDE chipset support/bugfixes de ce menu et mettez en dur l'option correspondant à votre chipset.
Exemples :
|
Menu : Device Drivers > SCSI device support > SCSI low-level drivers
Si vous avez un chipset SATA, descendez dans ce sous-menu jusqu'à l'option Serial ATA (SATA) support (qui doit être activée en dur) et mettez en dur l'option correspondant à votre chipset.
Exemples :
|
Menu : Device Drivers > SCSI device support > SCSI low-level drivers
Si vous avez une carte SCSI, activez le pilote de votre carte SCSI en module.
Exemple : si vous avez une carte SCSI Adaptec Ultra 320 PCI, activez :
|
Menu : Device Drivers > Sound > Advanced Linux Sound Architecture
Activez en module le pilote correspondant à votre carte son. Les pilotes sont répartis en deux catégories :
les cartes ISA : menu ISA devices ;
les cartes PCI : menu PCI devices (les cartes son intégrées sur les cartes mères ou dans les portables sont généralement connectées sur le bus PCI) ;
Exemples :
|
Menu : Device Drivers > Character devices
Activez en dur le support du bus AGP ainsi que l'option correspondant à votre chipset.
Exemples :
|
Menu : Device Drivers > Character devices
Activez le support du DRM (Direct Rendering Manager) et le module correspondant à votre chip graphique.
Exemples :
|
Menu : Device Drivers > Networking support
Activez en module le ou les pilote(s) correspondant à votre/vos carte(s) réseau Ethernet. Les pilotes sont répartis en plusieurs catégories :
les cartes Ethernet 10/100 Mbit/s ISA ou PCI : menu Ethernet (10 or 100Mbit) ;
les cartes Ethernet 1 Gbit/s PCI : menu Ethernet (1000 Mbit) ;
les cartes Ethernet 10 Gbit/s PCI : menu Ethernet (10000 Mbit) ;
les cartes WiFi PCI ou PCMCIA : menu Wireless LAN (non-hamradio) ;
les cartes Ethernet PCMCIA : menu PCMCIA network device support.
Exemples :
|
Menu : Device Drivers > USB support
Si vous avez un périphérique USB que vous aimeriez faire marcher sous Linux, essayez de trouver un pilote pour ce périphérique dans la liste des pilotes proposés.
Dans la configuration type, j'ai déjà mis le support des souris, claviers, imprimantes et clés USB. N'enlevez pas les options déjà activées si vous ne savez pas parfaitement ce que vous faites ! |
Exemple : si vous avez un modem ADSL Speedtouch USB, activez :
|
Linux possède encore plein d'autres pilotes qui permettent de faire marcher des Webcams, des cartes satellites, des composants Bluetooth ou Infrarouge et plein d'autres gadgets. Je n'en parlerais pas ici car ils ne sont pas vitaux pour avoir un système Linux qui fonctionne correctement, et cela me paraît trop ambitieux pour une première compilation de noyau !
Une fois que vous pensez que votre noyau est bien configuré, sélectionnez Exit et acceptez d'enregistrer la nouvelle configuration du noyau.
Voilà, c'est un premier essai dans l'objectif d'avoir le noyau parfait, c'est à dire un noyau qui vous permet de faire marcher tous vos périphériques sans option inutile. Vous verrez, vous aurez probablement à vous y reprendre à plusieurs fois avant d'avoir un noyau parfait... mais après, la configuration du noyau Linux n'aura plus aucun secret pour vous !
Précédent | Sommaire | Suivant |
Le Web et le FTP en console | Niveau supérieur | Compiler le noyau |