Professional Documents
Culture Documents
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
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
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
Page 4
Le noyau Linux
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
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>.
Page 6
Le noyau Linux
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.
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.
Page 8