Qu'est-ce que le noyau Linux ?
C'est le coeur de ton nouveau système d'exploitation. C'est
lui qui fait l'interface entre les programmes et le matériel, c'est lui
qui gère les processus, la mémoire, les droits d'accès, etc...
C'est ce noyau qui est sous licence GPL (General Public
Licence) et que l'on retrouve dans toutes les distributions. C'est ce
noyau qui a fait la preuve de sa stabilité et de sa rigueur au niveau de
la sécurité.
- Pourquoi recompiler un noyau ?
Le noyau qui tourne en ce moment sur ton Linux faîchement
installé est le noyau fournit en standard dans la distribution Debian.
C'est un noyau assez gros qui est destiné à pouvoir fonctionner sur la
plupart des machines.
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.
- Quel noyau choisir ?
Il faut aujourd'hui choisir entre la branche "2.2" et la
branche "2.4" du noyau Linux. Ces deux branches sont dites "stables".
En effet, les branches "instables", qui servent au développement, ont le
deuxième chiffre impair : "2.1" pour le développement de la branche
"2.2", "2.3" pour le développement de la branche "2.4", et maintenant
"2.5" pour le développement de la future branche stable "2.6".
La branche "2.4" est la plus récente, et c'est elle que nous
utiliserons. Cependant, elle n'est pas supportée en standard par la
version "stable" de la Debian, appellée "Potato". Si tu veux mettre
un noyau "2.4" sur une "Potato", va sur le site officiel de Debian www.debian.org, clique sur "News"
et suis les instructions écrites dans la nouvelle du 15 Avril 2001
intitulée "Running Linux 2.4.x with Debian GNU/Linux 2.2".
Dans les deux cas, il faut prendre le dernier noyau de chaque
branche. A l'heure où j'écris cette page, il s'agit du noyau :
- 2.2.20 pour la branche "2.2",
- 2.4.17 pour la branche "2.4".
La version "woody" de la Debian que nous utilisons supporte
en standard le noyau 2.4. C'est donc le noyau 2.4.17 que nous allons
utiliser.
- C'est parti...
La plus grande partie de la procédure ne nécessite pas d'être
root. Cependant, il va falloir d'abord ajouter l'utilisateur que tu es
au groupe "src". En root, tape :
adduser toto src où toto est ton nom d'utilisateur.
Il te faudra aussi installer le package "libncurses5-dev",
qui n'est pas installé par défault :
apt-get install libncurses5-dev
Maintenant que tu as les droits et les packages nécessaires,
nous allons repasser en simple utilisateur et télécharger les sources du
noyau :
Place-toi dans le répertoire /usr/src et tape :
lftp ftp.via.ecp.fr
cd pub/linux/kernel/v2.4
get linux-2.4.17.tar.gz
exit
Décompresse les sources :
tar -xvzf linux-2.4.17.taz.gz
Il te crée alors un nouveau répertoire "linux" que tu
vas t'empresser de renommer en "linux-2.4.17" :
mv linux linux-2.4.17
- Configurer le noyau
C'est de loin la partie la plus difficile. Mets-toi dans le
répertoire /usr/src/linux-2.4.17. Pour te faciliter la tâche, j'ai mis
sur ftp.via.ecp.fr dans le répertoire pub/via/formation-linux un fichier
config-2.4.17 qui est un bon fichier de configuration du noyau pour un
ordinateur avec une carte 3Com PCI (celles de VIA), une carte son SB
PCI 128 et un Disque Dur IDE, un lecteur de CD ou DVD IDE et un graveur
IDE. Même si ta config est différente, n'hésite pas à prendre ce fichier
comme base de travail. Pour cela :
lftp ftp.via.ecp.fr
cd pub/via/formation-linux
get config-2.4.17
exit
mv config-2.4.17 .config
Pour lancer l'utilitaire de configuration du noyau avec ce
fichier de configuration, tape, toujours en tant que simple utilisateur :
make menuconfig
Tu arrives dans l'interface de configuration du noyau. Tu peux
naviguer avec les flèches et entrer dans les menus en appuyant sur
Enter.

Pour certaines options du noyau, tu as le choix entre mettre
l'option "en dur" ou "en modules". Les modules sont comme des "morceaux
de noyau" qui peuvent être insérés ou enlevés sans devoir rebooter le
système. Cette configuration présente l'intéret de générer un noyau de
taille raisonnable, et de supporter de très nombreux matériels. Nous
allons donc mettre un maximum de périphériques en modules... mais pas
tous !
Il y a donc deux types d'options (on passe d'une option à la
suivant en appuyant sur espace) :
- Les options entre crochets :
[ ]. Tu as le choix entre
mettre cette option :
- "en dur" dans le noyau : tu dois faire apparaître une étoile :
[*],
- ou ne pas la mettre : la case doit rester vide :
[ ].
- Les options entre inférieur et supérieur :
< >. Tu as
le choix entre mettre cette option :
- "en dur" dans le noyau : tu dois faire apparaître une étoile :
<*>,
- "en module" : tu dois faire apparaître un "M" :
,
- ou ne pas la mettre : la case doit rester vide :
< >.
Certaines options ne sont destinées qu'à faire apparître de
nouvelles options. C'est par exemple le cas du premier menu.
Dans tous les cas, n'hésite pas à lire l'aide qui est
attachée à chaque option. Tu y trouveras généralement des informations
pertinantes te permettant de juger si tu dois activer l'option ou
pas. Pour cela, place-toi sur une option et appuie sur "Tab" jusqu'à
être positionné sur "Help" et appuie sur "Enter".
Nous allons maintenant passer en revue chaque menu :
Code maturity level options ---> Ce menu ne contient
qu'une seule option qui, si elle est cochée, fait apparaître les options
considérées comme "instables". Ces options apparaissement alors avec un
flag [EXPERIMENTAL] ou même [DANGEROUS].
Loadable module support ---> C'est là que tu lui dis
que ton noyau doit être capable d'insérer et d'enlever des modules à la
volée sans rebooter. Il faut donc activer au minimum les options "Enable
loadable module support" et "Kernel module loader".
Processor type and features ---> Dans ce menu, tu
commences par définir ton type de processeur. Ensuite, il faut activer
"MTRR (Memory Type Range Register) support" et, si tu as la chance
d'avoir une babasse multi-processeur, il faut aussi activer "Symmetric
multi-processing support".
General setup ---> Dans tous les cas, tu auras besoin
des options "System V IPC", "BSD Process Accounting", "Sysctl support"
et "Kernel support for ELF binaries". Mets toutes ces options en dur.
En plus, il faut activer, si tu en as besoin :
- le support du bus PCI : coche "PCI support" et "PCI device name
database". Pour "PCI access mode" mets "Any".
- le support du bus ISA : coche "EISA support".
- le support du bus PCMCIA : coche "Support for hot-pluggable devices"
et va dans le sous-menu "PCMCIA/CardBus support" qui apparaît. Dans ce
sous-menu, mets en dur "PCMCIA/CardBus support", "CardBus support",
"i82092 compatible bridge support" et "i82365 compatible bridge support".
- le support du Power Management : mets en dur "Power Management
support", "Advanced Power Management BIOS support" et "Enable PM at boot
time".
Memory Technology Devices (MTD) ---> Tu n'en as pas
besoin.
Parallel port support ---> Tu peux mettre, si tu en
as un, le port parallèle en module. Pour cela, met les options
"Parallel port support" et "PC-style hardware" en modules.
Plug and Play configuration ---> Tu peux activer le
support du Plug & Play pour tes périphériques, mais ce n'est pas
obligatoire.
Block devices ---> Met le lecteur de disquettes "Normal
PC floppy disk support" en modules. Tu peux aussi mettre "Loopback
device support" en modules, ça peut toujours servir pour plus tard...
Multi-device support (RAID and LVM) ---> Si tu as une
babasse "normale", ne mets rien.
Networking options ---> C'est là qu'il faut demander
à ton noyau de supporter le protocole TCP/IP et d'autres choses
nécessaires au bon fonctionnement du réseau. Les quatres options :
- "Packet socket"
- "Unix domain sockets"
- "TCP/IP networking"
- "IP Multicast" (pour faire marcher VideoLAN...)
- "IP: TCP syncookie support (disabled per default)"
sont à mettre en dur dans le noyau. Pour info, le dernier sous-menu
intitulé "QoS and/or fair queueing" est ce qui est utilisé par VIA pour
réguler la bande passante Internet au niveau de son Firewall.
Telephony Support ---> Ne rien mettre.
ATA/IDE/MFM/RLL support ---> C'est là qu'il ne faut
pas se tromper. Nous supposons que tu bootes sur un disque dur IDE qui
contient ton noyau Linux. Il faut donc que ton disque dur soit "en dur"
dans le noyau et non en module... car Linux à bien entendu besoin du
support du disque dur dans le noyau pour pouvoir ensuite lire les
modules qui sont écrits sur le disque dur.
- Tu vas donc mettre "en dur" l'option "ATA/IDE/MFM/RLL support",
aller dans le sous-menu qui s'affiche, et mettre en dur "Enhanced
IDE/MFM/RLL disk/cdrom/tape/floppy support" et "Include IDE/ATA-2 DISK
support".
- Tu vas mettre l'option pour le lecteur de CD-ROM "Include IDE/ATAPI
CDROM support" en module.
- Ensuite, on trouve l'option "SCSI emulation support" qui est
nécessaire pour graver avec un graveur IDE : si tu as un tel
graveur, met cette option en module.
- Il faut mettre en dur les options "Generic PCI IDE chipset support",
"Sharing PCI IDE interrupts support", "Generic PCI bus-master DMA
support" et "Use PCI DMA by default when available".
- Enfin, tu trouves une liste de chipsets. Ces options servent à
optimiser les performances du chipset de ta carte mère. Si tu ne
trouves pas ton chipset, ce n'est pas grave du tout, on survit très bien
sans ça.
SCSI support ---> Si tu veux graver sous Linux, il
faut encore mettre en modules les options "SCSI support", "SCSI CD-ROM
support" et "SCSI generic support". Si tu as un disque dur ou un lecteur
de CD SCSI, il faut activer "SCSI disk support" (en dur si il est
destiné à accueillir ton noyau) et/ou "SCSI CD-ROM support" et trouver
ta carte SCSI dans la liste du sous-menu "SCSI low-level drivers" (la
mettre en dur si ton disque dur SCSI accueille le noyau).
Fusion MPT device support ---> Ne rien mettre.
I2O device support ---> Ne rien mettre.
Network device support ---> Il faut trouver ton modèle
de carte réseau. Coche "Network device support" pour voir apparaître
les options et les sous-menus.
- Si tu as une carte réseau PCI, ISA ou intégrée à ta carte mère, vas
dans le sous-menu "Ethernet (10 or 100Mbits" :
- si tu as une carte PCI de VIA, coche "3COM cards" et mets en module
"3c590/3c900 series (592/595/597) 'Vortex/Boomerang' support",
- si tu as une carte ISA de VIA, coche "3COM cards" et mets en module
"3c509/3c529 (MCA)/3c579 "EtherLink III" support",
- si tu as une carte perso... il va falloir essayer de trouver une
option qui la supporte dans la liste...
- Si tu as une carte réseau PCMCIA, vas dans le sous-menu "PCMCIA
network device support" :
- si tu as une carte PCMCIA 10Mb de VIA, met en module "3Com 3c589
PCMCIA support",
- si tu as une carte PCMCIA 100Mb de VIA, met en module "3Com 3c574
PCMCIA support",
- si tu as une carte PCMCIA perso... il va falloir essayer de trouver
une option qui la supporte dans la liste...
- si tu as une carte PCMCIA pour réseau sans-fil (VIA n'a pas encore
de réseau sans-fil, mais ça ne saurait tarder...), coche la case "Pcmcia
Wireless LAN" et choisi ton modèle de carte dans la liste qui apparaît.
C'est tout ce qu'il y a à faire, sauf si tu veux pouvoir te connecter
par modem à Internet : il faut alors mettre en module le protocole "PPP
(point-to-point protocol) support".
Amateur Radio support ---> Ne rien mettre.
IrDA (infrared) support ---> Sauf si tu veux faire
joujou avec de l'infrarouge, il ne faut rien mettre.
ISDN subsystem ---> C'est pour les modems ISDN (RNIS ou
Numéris en français). Ne rien mettre.
Old CD-ROM drivers (not SCSI, not IDE) ---> Ne rien
mettre, sauf si tu as un très vieux matériel (genre un CD-ROM qui se
branche sur la carte son...)
Input core support ---> Ne rien
mettre, sauf si tu as une souris USB (expliqué sur www.linux-usb.org).
Character devices --->
- Certaines options sont à mettre "en dur" pour tout le monde :
"Virtual terminal", "Support for console on virtual terminal" et "Unix98
PTY support".
- Pour tout le monde, mettre en module "Enhanced Real Time Clock Support".
- Si tu as un port série, tu peux mettre en module "Standard/generic
(8250/16550 and compatible UARTs) serial support".
- Pour activer le support de la souris, va dans le sous-menu "Mice" et
sélectionne, en dur ou en module :
- "Bus Mouse Support" si tu as une souris sur port série,
- "Mouse Support (not serial and bus mice)" et "PS/2 mouse (aka
'auxiliary device') support" si tu as une souris sur port PS/2.
- Si tu as une carte video sur port AGP, sélectionne "/dev/agpgart
(AGP Support)" et éventuellement l'option qui correspond à ton chipset
si tu en trouves une.
Multimedia devices ---> Sauf si tu as une carte Télé
que tu veux faire marcher sous Linux, ne mets rien.
File systems ---> Là aussi, il ne faut pas se tromper.
- On va commencer par mettre le système de fichier sur lequel est
stocké le noyau "en dur" dans le noyau. Comme on utilise LILO, notre
noyau va se trouver sur une partition de type "LINUX NATIVE" aussi
appelée "Ext 2". Il faut donc absolument mettre en dur l'option "Second
extended fs support".
- Il faut aussi mettre en dur "/proc file system support" et "/dev/pts
file system for Unix98 PTYs".
- Ensuite, on peut passer au facultatif : mettre "DOS FAT fs support"
et "MSDOS fs support" en modules pour pouvoir lire des disquettes
formatée en DOS.
- Met en plus "VFAT (Windows-95) fs support" en module pour pouvoir
lire et écrire sur des partitions FAT 16 ou FAT 32, qui est le système
de fichier utilisé par Windows 3.x, 95, 98, ME.
- Ajoute "ISO 9660 CDROM file system support" en module et "Microsoft
Joliet CDROM extensions" en dur pour pouvoir lire des CD-ROMs.
- Pour ceux qui ont des partitions NTFS (système de fichier utilisé
par Windows NT4, 2000 et XP) et qui veulent y accéder en lecture
seule sous Linux, mettre "NTFS file system support (read only)" en
module. L'option "NTFS write support" est flaggée [DANGEROUS], donc je
ne te la conseille pas...
En bas, on trouve trois sous-menus :
Network File Systems ---> Nous allons activer les
options "NFS file system support" en module et "Provide NFSv3 client
support" en dur pour pouvoir monter des répertoires en partage NFS. De
même, nous allons activer "SMB file system support (to mount Windows
shares etc.)" en module pour pouvoir monter des répertoires en partage
sur le voisinage réseau. Il est bon de cocher "Use a default NLS" et
de mettre la code page 850 pour avoir les caractères européens dans
les noms des fichiers et des répertoires. Pour cela, on fait enter sur
"Default Remote NLS Option:" en on tape "cp850".
Partition Types ---> Ne rien mettre.
Native Language Support ---> Met en module les
Codepages 437 et 850, ainsi que "NLS ISO 8859-1" et "NLS ISO 8859-15".
C'est pour pouvoir avoir des caractères européens sur les noms des
fichiers et des répertoires des partitions Windows et des CD-ROMs.
Console drivers ---> Active "VGA text console" et
éventuellement "Video mode selection support" pour pouvoir sélectionner
la "résolution" en mode console dans LILO. Nous n'activerons pas le
"Frame-Buffer" pour l'instant.
Sound ---> C'est là qu'il va falloir trouver ta
carte son. Ce n'est pas toujours évident. Par exemple, si tu as une
carte SB PCI 128, met en module l'option "Creative Ensoniq AudioPCI
97 (ES1371)". N'hésite pas à utiliser l'aide.
USB support ---> Ne sert que si tu veux faire
marcher des périphériques USB. Je ne détaillerais pas cette partie, qui
ne te seras nécessaire dans l'immédiat que si tu as une souris USB.
Bluetooth support ---> Pour les périphériques Bluetooth
: ne rien mettre.
Kernel hacking ---> Il peut être utile d'activer les
options "Kernel debugging" et "Magic SysRq key".
Une fois que tu penses que ton noyau est bien configuré, fais
"exit" et accepte d'enregistrer la nouvelle configuration du noyau.
Voilà, c'est un permier essai dans l'objectif d'avoir le noyau
parfait, c'est à dire un noyau qui te permet de faire marcher tous tes
périphériques sans option inutile. Tu verras, tu auras probablement à
t'y reprendre à plusieurs fois avant d'avoir un noyau parfait... mais
après, la configuration du noyau Linux n'aura plus aucun secret pour
toi !
- Compiler le noyau
C'est la partie la plus simple. Toujours en simple
utilisateurs, tape :
make dep
pour les dépendances,
Puis, il faut faire le ménage :
make clean
On peut ensuite recompiler le noyau en lui-même :
make bzImage
Compile les modules :
make modules
Installer les modules : loggue-toi en root, puis tape :
make modules_install
- Préparer le reboot
Pour changer de noyau, il faut rebooter. C'est en théorie la
seule raison de rebooter pour un ordinateur sous Linux... enfin... en
théorie.
En root, on va déplacer le nouveau noyau dans le répertoire
/boot :
>
cp /usr/src/linux-2.4.17/arch/i386/boot/bzImage
/boot/vmlinuz-2.4.17
>
Il faut aussi bouger la map du system :
>
cp /usr/src/linux-2.4.17/System.map /boot/System.map-2.4.17
On va aussi sauvegarder dans /boot le fichier de configuration
du noyau :
>
cp /usr/src/linux-2.4.17/.config /boot/config-2.4.17
Il faut maintenant dire à LILO que l'on veut pouvoir choisir
ce nouveau noyau au démarrage. Pour cela, édite /etc/lilo.conf et
rajouter un paragraphe qui ressemble à ça :
image=/boot/vmlinuz-2.4.17
>
label=2417
>
read-only
Si tu veux booter sur ce nouveau noyau par défault, il
faut changer la ligne qui commence par "default=" en
"default=2417".
Une fois que tu as enregistré les modifications et que tu
es sorti de ton éditeur de texte favori, ne pas oublier d'exécuter
LILO pour qu'il écrive les changements sur le MBR : il suffit de taper
lilo.
- Rebooter
Soit tu fais Ctrl+Alt+Suppr, comme sous Windows, soit tu tapes
reboot en root.
Si le reboot sur le nouveau noyau se passe mal et que ton
Linux se bloque au démarrage, il va falloir booter sur ton ancien
noyau. Pour cela, Ctrl+Alt+Suppr, puis quand "LILO" s'affiche, appuie
sur Majuscule, puis sur Tab pour avoir la liste des choix possibles.
Tu ancien noyau s'appelle probablement "linux". Tapes "linux" puis
Enter. Tu n'as plus qu'à recommencer... en t'aidant des dernières lignes
qu'il t'as affiché avant de se bloquer au démarrage pour essayer de
trouver l'origine du problème et de changer la configuration du noyau en
conséquence. Bonne chance !
Si le reboot s'est bien passé... passe à la page suivante où
on va tester ce nouveau noyau.
Précédent
Index
Suivant