You are on page 1of 8

Le noyau Linux

Stphane Gill Stephane.Gill@CollegeAhuntsic.qc.ca

Table des matires


Introduction Les modules Afficher les modules chargs Charger un module Paramtrage des modules Fichiers de dpendances Personnalisation du noyau Outils ncessaires Cration du fichier de paramtrage Compilation du noyau Installation du noyau Rfrences 2 2 2 3 5 5 6 6 6 7 8 8

Document crit par Stphane Gill Copyright 2004 Stphane Gill Ce document est soumis la licence GNU FDL. Permission vous est donne de distribuer et/ou modifier des copies de ce document tant que cette note apparat clairement.

Le noyau Linux

Introduction
Nombreux sont ceux qui pensent que Linux est lensemble des logiciels fournis par les distributions. Techniquement Linux est le noyau et seulement le noyau. Mme les logiciels indispensables comme linterprteur de commandes ou les compilateurs sont indpendants du noyau. Dans ce document, le concept de noyau modulaire est dabord prsent. Par la suite, les principales commandes permettant la gestion des modules sont prsentes. Finalement, les diffrentes tapes pour gnrer un noyau personnalis sont expliques.

Les modules
Le noyau Linux est de conception modulaire depuis la version 2.0.x. Cette modularit a permis de simplifier fortement la configuration du matriel. Auparavant, il tait ncessaire de gnrer un nouveau noyau pour permettre daccder une nouvelle carte dextension. Les possibilits offertes par le noyau 2.0.x permettent ainsi de charger sur demande des pilotes pour certains matriels. Les modules du noyau sont des fichiers objet (.o) produits par un compilateur C. La plupart des modules sont dj compils et disponibles dans la plupart des distributions. Les modules sont stocks dans le rpertoire /lib/modules/<version-du-noyau> o <version-du-noyau>est une chane de caractres dcrivant la version du noyau. La version du noyau peut tre obtenue par la commande uname, comme dans lexemple suivant: # uname r 2.4.7-10

Afficher les modules chargs


La commande lsmod affiche la liste des modules chargs par le systme et le nombre dautres modules qui les utilisent. Exemple :

Copyright 2004 Stphane Gill

Page 2

Le noyau Linux

Module iptable_filter ip_tables nfs lockd sunrpc soundcore ide-cd cdrom parport_pc lp parport autofs e100 microcode keybdev mousedev hid input usb-uhci usbcore ext3 jbd

Size 2412 15864 84632 59536 87452 7044 35836 34144 19204 9188 39072 13692 62148 5184 2976 5656 22308 6208 27468 82752 91464 56336

Used by

Not tainted

0 (autoclean) (unused) 1 [iptable_filter] 1 (autoclean) 1 (autoclean) [nfs] 1 (autoclean) [nfs lockd] 0 (autoclean) 0 (autoclean) 0 (autoclean) [ide-cd] 1 (autoclean) 0 (autoclean) 1 (autoclean) [parport_pc lp] 0 (autoclean) (unused) 1 0 (autoclean) 0 (unused) 1 0 (unused) 0 [keybdev mousedev hid] 0 (unused) 1 [hid usb-uhci] 2 2 [ext3]

Charger un module
Pour charger un module dans un noyau en marche, il faut utiliser la commande insmod ou modprobe. Par dfaut, ces commandes tentent de charger les modules partir du rpertoire /lib/modules/<version-du-noyau>/kernel/drivers/. Contrairement la commande insmod, modprobe vrifie les dpendances et charge les dpendances avant de charger le module. Exemple 1 : Charger le module du systme de fichier msdos. modprobe msdos Exemple 2 : Charger tous les modules rseau disponibles jusquau premier qui fonctionne. modprobe t net

Copyright 2004 Stphane Gill

Page 3

Le noyau Linux

Exemple 3 : Charger tous les modules rseau disponibles. modprobe at net Exemple 4 : Afficher la liste des modules disponibles. # modprobe -l /lib/modules/2.4.7-10/kernel/abi/cxenix/abi-cxenix.o /lib/modules/2.4.7-10/kernel/abi/ibcs/abi-ibcs.o /lib/modules/2.4.7-10/kernel/abi/sco/abi-sco.o /lib/modules/2.4.7-10/kernel/abi/svr4/abi-svr4.o /lib/modules/2.4.7-10/kernel/abi/uw7/abi-uw7.o /lib/modules/2.4.7-10/kernel/arch/i386/kernel/abi-machdep.o /lib/modules/2.4.7-10/kernel/arch/i386/kernel/cpuid.o /lib/modules/2.4.7-10/kernel/arch/i386/kernel/microcode.o ... Exemple 5 : Afficher la liste de modules rseau disponibles pour les cartes 3com. # modprobe lt net | grep 3c /lib/modules/2.4.7-10/kernel/drivers/net/3c501.o /lib/modules/2.4.7-10/kernel/drivers/net/3c503.o /lib/modules/2.4.7-10/kernel/drivers/net/3c505.o /lib/modules/2.4.7-10/kernel/drivers/net/3c507.o /lib/modules/2.4.7-10/kernel/drivers/net/3c509.o /lib/modules/2.4.7-10/kernel/drivers/net/3c515.o /lib/modules/2.4.7-10/kernel/drivers/net/3c59x.o /lib/modules/2.4.7-10/kernel/drivers/net/pcmcia/3c574_cs.o /lib/modules/2.4.7-10/kernel/drivers/net/pcmcia/3c589_cs.o Les commandes rmmod et modprobe permetent de retirer un module dun noyau en marche. Exemple 6 : Retirer les modules fat et msdos dun noyau en marche. modprobe r fat msdos rmmod fat msdos

Copyright 2004 Stphane Gill

Page 4

Le noyau Linux

Paramtrage des modules


Le fichier /etc/modules.conf (ou /etc/conf.modules) enregistre la liste de tous les modules qui doivent tre chargs au dmarrage. Les modules qui sont ainsi chargs sont alors accessibles par le nom dalias qui leur est affect. Vous trouverez, ci-aprs, le listing du fichier /etc/conf.modules sur un ordinateur Linux Red Hat quip dune carte rseau Standard Microsystems et dune carte rseau NE 2000 : alias alias alias options scsi_hostadapter aha1740 eth0 eth1 ne smc-ultra ne io=0x280 irq=10

Ce fichier de configuration permet alors daccder la carte rseau SMC par lalias eth0 et la carte NE2000 par lalias eth1. Dans le cas de la carte rseau NE2000, la dernire ligne dfinit ladresse de base dentres-sorties et le numro dinterruption utilis. Cette option permet de dsactiver lidentification automatique des paramtres de la carte (Autoprobing), qui pose des problmes avec certaines cartes rseau. Les noms des cartes rseau prises en charge par le module du noyau se trouvent dans le rpertoire /lib/modules/<version-noyau>/net.

Fichiers de dpendances
Le fichier modules.dep contient les dpendances entre les modules. Si un module utilise les fonctionnalits dun autre module, ce fait est indiqu dans ce fichier. Le listing suivant reprsente un extrait de ce fichier : /lib/modules/2.2.19-7.0.8-e-smith/net/ppp.o: \ /lib/modules/2.2.19-7.0.8/net/slhc.o /lib/modules/2.2.19-7.0.8-e-smith/net/ppp_mppe.o: \ /lib/modules/2.2.19-7.0.8-e-smith/net/ppp.o /lib/modules/2.2.19-7.0.8/fs/nfs.o: \ /lib/modules/2.2.19-7.0.8/misc/sunrpc.o \ /lib/modules/2.2.19-7.0.8/fs/lockd.o /lib/modules/2.2.19-7.0.8/fs/nfsd.o: \ /lib/modules/2.2.19-7.0.8/misc/sunrpc.o \ /lib/modules/2.2.19-7.0.8/fs/lockd.o

Copyright 2004 Stphane Gill

Page 5

Le noyau Linux

Vous pouvez constater que le module nfs ne dpend que des modules sunrpc et lockd.

Personnalisation du noyau
Linux est un systme dexploitation open source , le code source du noyau est donc disponible et peut facilement tre personnalis, mis--jour ou modifi. Pour identifier les diffrentes versions du noyau le systme de numrotation suivant est utilis : majeur.mineur.revision o majeur est un numro pour identifier des dveloppements majeurs du noyau; mineur est un numro pour identifier des dveloppements significatifs du noyau; rvision identifie des modifications mineures du noyau.

Outils ncessaires
Pour compiler le noyau il est ncessaire davoir certains outils de dveloppement dj install : Le compilateur GNU C; Lutilitaire make; Les fichiers sources du noyau; Les fichiers den-ttes du noyau.

Sur la plupart des systmes, les sources sont installes dans le rpertoire /usr/src/linux. Ce rpertoire est un lien symbolique sur le rpertoire /usr/src/linux-<version-du-noyau>.

Cration du fichier de paramtrage


La premire tape dans la cration dun nouveau noyau est la cration du fichier de paramtrage /usr/src/linux/.config et la personnalisation du fichier makefile. Il existe trois faons de crer ce fichier:

Copyright 2004 Stphane Gill

Page 6

Le noyau Linux

make config; make menuconfig; make xconfig.

Il faut tre dans le rpertoire /usr/src/linux pour excuter lune de ces trois commandes.

Compilation du noyau
Une fois les fichiers .config et makefile personnaliss le nouveau noyau peut tre compil laide des tapes suivantes.

tape 1 : make dep


cette tape, les fichiers sources sont analyss afin didentifier les dpendances entre les fichiers den-tte (.h). Un fichier .depend contenant les dpendances est cr dans chaque rpertoire contenant des fichiers sources.

tape 2 : make clean


Les fichiers de sorties du noyau prcdent sont effacs de faon crer un nouveau noyau propre. Il est parfois ncessaire dutiliser la commande make mrproper.

tape 3 : make bzImage


Le nouveau noyau est cr cette tape.

tape 4 : make modules


Les modules sont cr cette tape.

tape 5 : make modules_install


Les modules compils ltape prcdente sont installs dans le rpertoire /lib/modules/<version-du-noyau>. Aprs avoir complt ces tapes, limage du nouveau noyau se trouve dans le fichier /usr/src/linux/arch/i386/boot/bzImage.

Copyright 2004 Stphane Gill

Page 7

Le noyau Linux

Installation du noyau
La premire tape de linstallation dun noyau est de copier limage au bon endroit. cp p /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-<version-du-noyau> Il est parfois ncessaire de crer un disque virtuel laide de la commande mkinitrd. mv /boot/initrd-<version-du-noyau>.img /boot/initrd-<version-du-noyau>.img.old mkinitrd ifneeded /boot/initrd-<version-du-noyau>.img <version-du-noyau> Ajouter maintenant une nouvelle section dans le fichier lilo.conf ou grub.conf afin de tester le nouveau noyau.

Rfrences
Red Hat Linux 9 : Guide de rfrence Red Hat . Red Hat Inc., 2003. Jeffrey Dean LPI Linux Certification in a Nutshell, A Desktop Quick Reference , OReilly, 2001.

Copyright 2004 Stphane Gill

Page 8

You might also like