Le noyau est le coeur du système. C'est lui qui, entre autres, gère la mémoire, contient les pilotes du matériel, ordonne les différentes tâches, gère le support des différents protocoles,...
Le noyau, ou kernel, est composé d'une partie statique, à laquelle on peut greffer des modules. La partie statique sera toujours chargée en mémoire, tandis que les module ne le seront qu'en cas de besoin.
La plupart du temps, vous n'avez pas réellement besoin de nouveau noyau.
Dans un premier temps, pour savoir quel noyau on utilise, il suffit de lancer uname -sr.
Note sur la numérotation des noyaux :
Les noyaux sont numérotés sur 3 nombres x.y.z.
De plus, on peut différencier les sources Vanilla, qui sont les sources non patchées. Les distributions peuvent proposer des noyaux légèrement modifiés, optimisés pour telle ou telle architecture, etc.
Le mieux est peut être d'installer la version du noyau via le système de paquetages de la distribution (mais rien n'empêche d'utiliser les vanilla sources)
Enfin, il faut vérifier que /usr/src/linux est un lien vers le répertoire contenant les sources du noyau à compiler:
ln -sf /usr/src/linux-x.y.z /usr/src/linux
Avant de se lancer dans l'aventure, il est important de connaitre son matériel, afin de ne pas oublier par exemple le support du controleur IDE sur lequel se trouve le disque!
Pour ne rien oublier, il existe quelques petits outils bien sympathiques.
lspci, provenant des pciutils pour voir ce que l'on a sur les ports pci, lsusb, provenant des usbutils, pour savoir ce que l'on a sur les ports usb.
Il existe également hwinfo qui peut nous donner pas mal de renseignements sur notre matériel.
Ces petits softs sont disponibles en tant que paquet dans pas mal de distributions, et sont peut être déjà installés.
Une fois que l'on connait son matériel, on va pouvoir passer à l'étape suivante.
Avant de passer à la suite il faut:
xhost +
su
cd /usr/src/linux
Pour configurer le noyau, il y a 4 possibilités:
make config
. Dans ce cas, on devra répondre à toutes les questions une par une,make menuconfig
. Ici, on va configurer le noyau via une interface graphique en ncurses (mode semi-graphique),make xconfig
. L'interface ici sera graphique sous XLe moment est venu de choisir vos options.
Si c'est la première fois que vous compilez le noyau, je vous conseille de les passer toutes en revue les unes après les autres, dans l'ordre, afin de voir si elles s'appliquent à vous ou non.
De manière générale, il est bon de modulariser un maximum de choses, mais tout n'est pas possible (enfin... pas simplement :)
Par exemple, vous ne devriez pas mettre en module ce qui vous permet de monter votre partition racine. Si celle-ci se situe sur un disque IDE, ne mettez pas le support IDE en module, de même si elle se situe sur un disque SCSI, ne mettez pas le support SCSI en module. Si votre partition racine est montée par le réseau et NFS (cas des stations diskless par exemple), ne mettez pas le support de la carte réseau et le support NFS en modules.
En effet, les modules sont chargés après le noyau, et si les modules IDE sont sur un disque IDE, il faut d'abord les charger avant de pouvoir accéder au disque, mais pour les charger, il faut avoir accès au disque et donc les avoir chargés avant... vous voyez le cercle vicieux ?
En fait, il est possible de contourner ce problème, mais ce document s'adresse aux débutants...
Tout le reste peut être compilé en modules, c'est à dire carte son, carte réseau (sauf si votre racine est déportée sur un serveur NFS comme dit précédemment), le support ppp (pour internet par modem), le CD-ROM, etc.
Voici ci-dessous les options classiques à utiliser pour une configuration classique. Si rien n'est dit ici à propos d'une option, regardez l'aide ou conservez la valeur par défaut ; vous pouvez aussi répondre 'N' à tous les périphériques que vous ne possédez pas, comme par exemple, IDE/ATAPI TAPE, etc.
Dans le doute, il vaut mieux laisser les options par défaut.
Attention: cette doc a été mise à jour en se basant sur la version 2.6.13 du noyau! Si la version est différente (notamment la branche), il est possible que certaines options n'existent pas ou aient été déplacées.
Ca ne coûte rien de répondre Y ici!
Prompt for development and/or incomplete code/drivers
: Y
Select only drivers expected to compile cleanly
: Y
Support for paging of anonymous memory (swap)
: Y
System V IPC
: Y
Sysctl support
: Y
Pour permettre le hotplug:
Support for hot-pluggable devices
: Y
Et enfin:
Kernel userspace events
: Y
Pour que le noyau puisse charger et décharger les modules selon ses besoins:
Enable loadable module support
: Y
Module unloading
: Y
Automatic kernel module loading
: Y
C'est ici que vous définissez quel est votre type de processeur.
Preemptible kernel
: Y. Grâce à cette option, le noyau devient "préemptif". Cela permet d'avoir un noyau plus réactif.
PCI support
: Y
PCI device name database
: Y
Kernel support for ELF binaries
: Y
Kernel support for MISC binaries
: M ou Y
Support for frame buffer devices
: Y
A vous de choisir votre carte graphique!
Logo configuration
à vous de voir si vous voulez un beau logo de tux au démarrage!
à voir selon votre matériel!
Loopback device support
: Y
RAM disk support
Y ou M si vous comptez utiliser un ramdisk
Initial RAM disk (initrd) support
si vous comptez démarrer avec un ramdisk.
Dans la section character devices
, il faut mettre en module la gestion de l'agp (/dev/agpart
), ainsi que celle de son chipset.
Dans la section ATA/ATAPI/MFM/RLL support
, il ne faut pas oublier de mettre Y pour la gestion de la DMA.
C'est ici que vous pouvez configurer, en plus du SCSI, les lecteurs IOMEGA ZIP sur port parallèle, ainsi que le bus SATA. A partir du noyau 2.6, on n'utilise plus d'interface SCSI pour les graveurs de CD/DVD.
Comme d'habitude, on ne garde, pour les pilotes, que ceux du matériel (ARCnet, TokenRing peuvent être désactivés. Ne garder dans l'ethernet que ce qui concerne la carte réseau,...)
Si vous ne comptez pas utilisez l'IPv6 (ou si vous vous demandez ce que c'est), vous pouvez le supprimer.
L'IrDA et le Bluetooth peut être désactivé si vous ne l'utilisez pas.
Je vous conseille quand même de garder le PPP
Ceci concerne les connexions numéris.
Unix98 PTY support: Y
256 est un bon nombre maximum.
Ici, vous choisissez les systèmes de fichiers dont vous avez besoin (ext2, ext3, éventuellement ReiserFS).
Kernel automounter version 4 support
: M
Ne pas oublier de vérifier CD-ROM/DVD Filesystems
et DOS/FAT/NT Filesystems
Dans pseudo filesystems
, mettre Y à:
/proc
Virtual memory file system support
/dev file system support
est obsolète et remplacé par udev
.
Network File systems
n'est utile que si vous montez des systèmes de fichier par le réseau.
Ici vous ajoutez vos pilotes pour les cartes radio, ainsi que l'acquisition vidéo (carte TV, webcam,...)
Ne pas utiliser OSS, mais ALSA.
Vous pouvez utiliser lsmod pour savoir quel module utiliser (entre EHCI, OHCI et UHCI). Ensuite, c'est à vous de savoir quel matériel vous avez!
Si vous vous demandez ce que c'est, c'est que vous n'en avez pas besoin!
Mettre N partout
Même si vous ne vous sentez pas l'âme d'un hacker, je vous conseille de mettre Y à
Kernel debugging
Magic SysRq Key
Comme cela, en cas de plantage du système, vous pourrez utiliser les touches magiques pour démonter les partitions et redémarrer "proprement" (sans appuyer sur le bouton reset)
Vous n'avez sûrement pas besoin de configurer SELinux ou d'autres méthodes de haute sécurité. Donc, un petit N suffit.
Les mettre en module ne fait pas de mal.
Idem, en module, ça peut éventuellement servir.
Pour lancer la compilation du noyau, rien de plus simple. Il suffit de lancer:
make && make bzImage modules_install
La compilation peut être relativement longue.
Maintenant, on va préparer le système à redémarrer avec le nouveau noyau:
cp arch/architecture/boot/bzImage /boot/kernel-X.Y.Z
où architecture correspond à votre architecture (i386 pour un système 32bits, x86_64 pour un amd64)
cp System.map /boot/System.map-X.Y.Z
Si le fichier /boot/System.map est un lien, le supprimer, sinon le renommer.
Ensuite, nous allons créer le lien suivant:
ln -s /boot/System.map-X.Y.Z /boot/System.map
Autant copier le fichier de configuration du noyau, on ne sait jamais:
cp .config /boot/config-X.Y.Z
Enfin, si vous utilisez un ramdisk au boot, il faut le recréer en lançant la commande suivante:mkinitrd
, puis copier l'initrd dans /boot.
Remarque sur initrd :
La plupart des distributions récentes utilisent souvent par défaut un disque RAM initial (initrd) afin de démarrer le système. Ce n'est pas nécessaire en général, sauf si votre système de fichiers racine / a besoin de modules pour être chargé (par exemple, s'il se trouve sur un disque SCSI, et que le support SCSI est en modules). Si vous incluez les modules nécessaires au chargement de votre système de fichiers racine (en répondant Y au lieu de M), vous pouvez vous passer d'initrd.
Il ne reste plus qu'à configurer le gestionnaire de démarrage (grub, lilo ou loadlin). Pour bien le faire, le mieux est de lire la doc sur léa!
make menuconfig
donne l'écran suivant :
L'écran suivant contient la liste des sous-menus de configuration.
Déplacez vous avec les flèches, et tapez 'Entrée' pour entrer dans chaque sous-menu.
Linux Kernel v2.2.13 Configuration ------------------------------------------------------------------------------ +------------------------------- Main Menu ------------------------------- | 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. | | Legend: [*] built-in [ ] excluded <M> module < > module capable | | +---------------------------------------------------------------------+ | | | Code maturity level options ---> | | | | Processor type and features ---> | | | | Loadable module support ---> | | | | General setup ---> | | | | Plug and Play support ---> | | | | Block devices ---> | | | | Networking options ---> | | | | SCSI support ---> | | | | Network device support ---> | | | | Amateur Radio support ---> | | | | IrDA subsystem support ---> | | | | ISDN subsystem ---> | | | | Old CD-ROM drivers (not SCSI, not IDE) ---> | | | | Character devices ---> | | | | Filesystems ---> | | | | Console drivers ---> | | | | Sound ---> | | | | Kernel hacking ---> | | | | --- | | | | Load an Alternate Configuration File | | | | Save Configuration to an Alternate File | | | | | | | +---------------------------------------------------------------------+ | +-------------------------------------------------------------------------+ | <Select> < Exit > < Help > | +------------------------------------------------------------------------- |
Sur les écrans déplacez vous avec les flèches, tapez 'Y' pour include une fonction, 'M' pour l'inclure en tant que module. Tapez '?' ou 'H' pour avoir de l'aide sur la fonction sélectionnée (je vous recommande de lire l'aide de chaque fonction, et si vous ne comprenez pas, prenez la valeur conseillée). Tapez 'Esc' afin de sortir d'un sous-menu.
Après avoir configuré votre noyau, sélectionnez "Save Configuration to an Alternate File", afin d'enregistrer le fichier de configuration et de pouvoir le réutiliser ultérieurement. Enfin, quittez en pressant 'Esc' et enregistrez la configuration.
make xconfig
donne la fenêtre suivante :
Ce premier écran contient des boutons qui mènent aux différents sous-menus de configuration :
Error creating thumbnail: Unable to save thumbnail to destination
|
Pour chaque option, cliquez sur le bouton [Help] afin de lire la documentation de l'option. Après avoir configuré votre noyau, sélectionnez "Store Configuration to File", afin d'enregistrer le fichier de configuration et de pouvoir le réutiliser ultérieurement. Enfin, quittez en pressant 'Esc', et enregistrez la configuration. |
Copyright © 06/11/1999, Jean-Christophe Cardot
Error creating thumbnail: Unable to save thumbnail to destination Error creating thumbnail: Unable to save thumbnail to destination Error creating thumbnail: Unable to save thumbnail to destination Error creating thumbnail: Unable to save thumbnail to destination
|
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |