LéaBook
, Chapitre :
Noyau & modules
par tous les amis de Léa
Le copyright de chaque article est détenu
par son auteur.
Le copyright du livre lui-même est détenu par Léa
(Association Loi 1901).
Les articles de ce livre sont diffusés selon la license GPL (GNU
General Public License), sauf mention explicite dans l'article.
Copyright (c) 2003 Association Léa.
This documentation is free documentation; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This documentation is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of
the GNU General Public License along with this program; if not,
write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
MA 02139, USA.
For the purpose of applying the GPL to this document, I
consider "source code" to refer to the html source.
Où vous allez voir que la compilation du noyau
(ou kernel) n'est pas si compliquée...
par Jean-Christophe
Où vous apprendrez à compiler votre noyau Linux sans soucis.
C'est facile, il suffit de lancer uname -sr pour avoir la réponse.
Note sur la numérotation des noyaux :
Les noyaux sont numérotés sur 3 nombres x.y.z.
Je vous conseille, pour le noyau précompilé, de ne pas mettre à jour votre distribution avec le package d'une autre distribution. Si la version que vous désirez n'est pas disponible pour votre distribution, passez plutôt par la compilation des sources (voir ci-dessous).
Attention, si vous installez un package RPM : il ne faut jamais
mettre à jour un noyau par l'intermédiaire de la commande
"rpm -U" (upgrade). Cette commande supprimera votre noyau actuel.
Si le nouveau noyau ne fonctionne pas, il ne vous restera plus qu'à
réinstaller votre système :-(
En fait, il faut installer (et non mettre à jour) le nouveau
noyau par l'intermédiaire de la commande "rpm -i kernel-2.x.x.i586.rpm".
And last, but not least...
Une contribution : compiler un noyau à la sauce Debian. à lire si vous utilisez cette distribution.
Archive au format .tar.bz2 ou .tar.gz
Tant que vous y êtes, récupérez l'archive contenant
la dernière version du noyau si vous le souhaitez (attention, ces
fichiers sont volumineux, dans les 14 Mo pour les derniers noyaux), puis
décompressez là au bon endroit en suivant les indications
suivantes :
[root@taz root]# cd /usr/src/
[root@taz src]# ls -l
total 4
lrwxrwxrwx 1 root root 12 Jun 20 22:23 linux -> linux-2.2.10/
drwxr-xr-x 15 root root 1024 Jun 20 22:38 linux-2.2.10/
drwxr-xr-x 15 root root 2048 Jun 16 19:52 linux-2.2.9/
drwxr-xr-x 7 root root 1024 Jul 7 16:57 RPM/
En général, /usr/src/linux représente un
lien vers le répertoire courant contenant les sources, ici linux-2.2.10.
Dans ce cas, faites :
[root@taz src]# rm -f linux
Dans le cas où linux est un répertoire (pas un lien), renommez
le : mv linux linux-2.x.x, où 2.x.x est la version de votre
noyau.
Puis faites :
[root@taz src]# tar yxvf /chemin/de/linux-2.2.13.tar.bz2
ou
[root@taz src]# tar zxvf /chemin/de/linux-2.2.13.tar.gz
A ce moment là, un répertoire linux a été
créé, qui contient les sources de Linux 2.2.13. Afin de recréer
un environnement propre, je vous suggère de renommer ce répertoire
en linux-2.2.13 et de créer un lien linux qui
pointe dessus :
[root@taz src]# mv linux linux-2.2.13
[root@taz src]# ln -s linux-2.2.13 linux
Remarque : Le lien /usr/src/linux est nécessaire à la compilation du noyau et afin que les fichier d'entêtes (les "includes") du noyau soient disponibles pour des compilations futures d'applications.
[root@taz src]# cd linux
[root@taz linux]# make mrproper (ça nettoie l'arborescence des sources)
pour une configuration en mode graphique :
[root@taz linux]# make xconfig
ou pour une configuration en mode texte avec menus (ncurses) :
[root@taz linux]# make menuconfig
ou pour une configuration en mode texte pur (longue suite de questions/réponses) :
[root@taz linux]# make config
(voir les annexes pour la manipulation de menuconfig et de xconfig).
Le 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.
Pour en savoir plus, vous pouvez demander de l'aide pour chaque option
(touche [H] dans la console ou bouton [Help] sous X). Reportez vous aussi
à l'annexe sur les options pour avoir une
aide afin de les choisir.
Je vous conseille de sauvegarder votre config dans un fichier pour la réutiliser plus tard. Par exemple, sauvegardez là dans /root/kernel.config-2.2.13. Ainsi vous pourrez recompiler le noyau en rechargeant cette config, et n'ajuster que les paramètres nécessaires. De plus, même en cas de montée de version du noyau, vous pourrez réutiliser ce fichier de config qui reste compatible (et vérifier les nouvelles options, bien sûr).
ou :
[root@taz linux]# make dep
[root@taz linux]# make clean
[root@taz linux]# make bzImage
pour compiler le noyau lui-même, et pour compiler et installer les
modules (i.e. les drivers) :
[root@taz linux]# make modules
[root@taz linux]# make modules_install
Les modules seront installés dans le répertoire /lib/modules/2.2.13/.
Remarque : Si vous voulez juste recompiler le noyau, sans monter
de version, je vous conseille de déplacer le répertoire /lib/modules/2.x.x
(remplacez par votre version) vers /lib/modules/old-2.x.x par
exemple, avant la phase de compilation, afin que l'installation des modules
recrée ce répertoire et y place les nouveaux modules : cela
vous épargnera des problèmes si la nouvelle configuration
du noyau a modifié celle des modules.
Si tout fonctionne correctement après le redémarrage,
vous pourrez supprimer /lib/modules/old-2.x.x.
Voici un exemple de ce à quoi nous aboutissons :
boot=/dev/hda
# remplacez hda par le disque
# où vous installez LILO
map=/boot/map
install=/boot/boot.b
prompt
timeout=15
image=/boot/vmlinuz-2.2.13
label=linux
root=/dev/hdb1
# remplacez hdb1 par
# votre partition racine
read-only
image=/boot/vmlinuz-2.2.10
label=old
root=/dev/hdb1
read-only
Ensuite, placez vous dans /usr/src/linux, et installez le nouveau noyau par la commande suivante : [root@taz linux]# make install
Cela copie le noyau et le fichier System.map dans le répertoire /boot, puis lance lilo afin de prendre en compte les changements que nous avons apporté à /etc/lilo.conf.
Si tout s'est bien passé, vous n'avez plus qu'à rebouter
:
[root@taz linux]# reboot
Au prompt LILO, tapez 'linux' pour démarrer le nouveau noyau, et si cela ne fonctionne pas 'old' pour démarrer l'ancien noyau et aller corriger ce qui ne va pas (c'est à ce moment que vous serez content d'avoir sauvegardé les informations de configuration du noyau dans un fichier :).
Déterminez le nom de l'image noyau (ici vmlinuz) dans le fichier de configuration de Grub. Puis copiez le noyau :
mv /boot/vmlinuz-2.4.18 /boot/vmlinuz-2.4.18.old
cp arch/<architecture>/boot/bzImage /boot/vmlinuz-2.4.18
avec <architecture> étant égal à i386 pour un PC compatible Intel, ppc pour un Macintosh PowerPC, etc.
mv /boot/System.map-2.4.18 /boot/System.map-2.4.18.old
cp System.map /boot/System.map-2.4.18
Remarque : ces instructions sont valables quelque soit le chargeur de démarrage...
Enfin, pour faire prendre en compte la nouvelle image noyau à Grub, tapez :
grub root (hdC,P) setup (hd0)
En remplaçant C par le numéro du disque dur, selon la correspondance suivante : hda:C=0, hdb:C=1, hdc:C=2, etc. et P par le numéro de partition sur le disque, c'est à dire hdx1:P=0, hdx2:P=1, hdx3:P=2, etc.
Copiez le noyau vers l'endroit ou vous avez l'habitude de le faire (en
général dans le premier disque DOS, par exemple dans C:\LINUX),
monté par exemple dans /mnt/dosc :
[root@taz linux]# cp arch/i386/boot/bzImage /mnt/dosc/linux/vmlinuz2
Si vous utiliser initrd, regénérez-le :
[root@taz linux]# mkinitrd
[root@taz linux]# cp /boot/initrd /mnt/dosc/linux/initrd2
Reboutez sous DOS, et démarrez Linux par :
C:\>LOADLIN vmlinuz2 root=/dev/hdb1 ro
(remplacez /dev/hdb1 par votre partition racine).
Ou si vous utilisez initrd : C:\>LOADLIN c:\linux\vmlinuz2 initrd=c:\linux\initrd2
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. |
make xconfig donne la fenêtre suivante :
Ce premier écran contient des boutons qui mènent aux différents
sous-menus de configuration :
![]() |
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. |
Afin de choisir vous-même vos options, passez les en revue l'une après l'autre dans l'ordre, en consultant si besoin l'aide disponible pour chacune d'entre elles. Si vous ne comprenez pas l'anglais, une traduction de l'aide existe en français à l'adresse http://www.linux-kheops.com/traduc/kernels/. Remplacez le fichier /usr/src/linux/Documentation/Configure.help par le fichier traduit.
Aller plus loin : si vous désirez comprendre un peu mieux "comment ça marche", lisez les documents présents dans le répertoire /usr/src/linux/Documentation. Ils sont souvent très intéressants.
Il faut répondre Y à la question du support des modules, ainsi qu'à celle du chargement automatique des modules par le kernel (kerneld Y), sinon vous devrez les monter en mémoire à la main !
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 port parallèle,
le support ppp (pour internet par modem), le CD-ROM, etc.
Si vous avez du matériel PnP et que vous voulez utiliser le
support PnP de Linux, passez tous les drivers pour ces cartes en
modules aussi et configurez votre PNP (voir la rubrique
Plug'n Play afin de configurer ensuite les modules dans /etc/conf.modules).
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.
Prompt for development and/or incomplete code/drivers : Y Ca n'engage à rien :)
définissez ici votre type de processeur, la quantité de mémoire vive maxi que vous voulez gérer Math emulation N
Si vous avez un processeur x86
MTRR Y
une chtite optimisation
Symmetric multi-processing support N
c'est l'option pour les multi processeurs !
Enable loadable module support Y
Set version information on all symbols for modules : Y
Kernel module loader Y
Networking support Y
même si vous ne faites ni réseau ni internet
PCI support Y
évidemment
Advanced Power Management BIOS support Y
si vous avez un portable ca peut être utile Remarque (merci Fred !) : le support du BIOS APM n'est pas utile qu'au portable ! Si en plus vous cochez "Make CPU Idle when IDLE" : quand votre PC ne fait rien, il refroidit. Ca permet d'overclocker un CPU sans acheter de ventilateur plus gros ! (en fait sur les sites d'overclockeur on trouve des programmes en shareware qui font la même chose !) Ca n'a aucun impact (notable) sur le PC sinon que chaque fois qu'il ne fait rien, Linux le dit au processeur qui fait ce qu'il faut !Sinon pour les autres options, laissez la valeur par défaut ou bien lisez l'aide jointe.
Plug and Play support Y
si vous souhaitez utilisez le PnP de Linux
Auto-probe for parallel devices M
permet de tester les perifs sur le port //
Normal PC floppy disk support Y
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support Y
Include IDE/ATA-2 DISK support Y
Include IDE/ATAPI CDROM support Y
à moins que vous ayez un CD non IDE
Et si vous connaissez le chipset qui est sur votre carte mère, vous pouvez choisir les options correspondantes. Dans le doute, si l'option corrige un bug, choisissez Y, sinon choisissez N.
Loopback device support M
utile pour voir ce que contient une image ISO
RAM disk support (CONFIG_BLK_DEV_RAM) Y
si vous utilisez un ramdisk pour booter (N sinon)
Parallel port IDE device support M
si vous avez un CD, disque dur... sur le port //
dans ce cas, prenez tous les protocoles en module
pour être sûr que ça marche, et prenez aussi
l'autoprobe (voir plus haut)
Les networking options peuvent être laissées telles quelles si vous ne faites rien de spécial.
Même si vous n'avez rien de SCSI, cette section peut vous intéresser (graveur IDE, CD, disque dur ou ZIP sur port parallèle, etc.). SCSI support (CONFIG_SCSI) Y
si partition racine sur disque SCSI
ou M
si CD SCSI ou graveur (même IDE : voir plus bas)
SCSI disk, tape, CD-ROM support Y
si vous avez ce périphérique
Enable vendor-specific extensions Y
ca peut pas faire de mal :) + indisp. graveur IDE
Pour les SCSI low-level drivers, choisissez seulement celui de votre carte SCSI, Y ou M selon votre partition racine, et N pour les autres. (graveur IDE : M pour n'importe lequel). Si vous avez un ZIP sur le port parallèle, choisissez (dans les SCSI low-level drivers) : IOMEGA parallel port (ppa - older drives) M
IOMEGA parallel port (imm - newer drives) M
Si vous avez une carte réseau ou si vous utilisez un modem en ppp pour aller sur internet, soit dans la plupart des cas : Network device support (CONFIG_NETDEVICES) Y
Dummy net driver support (CONFIG_DUMMY) Y ou M
et vous pouvez raisonnablement mettre les autres options à N.
Choisissez le driver pour votre carte réseau, Y ou M, et mettez les autres à N.
Vous pouvez tout mettre à N ici, sauf bien sûr si vous voulez faire de l'Appletalk. Mais si vous vous connectez à internet avec un modem : PPP (point-to-point) support (CONFIG_PPP) Y ou M
A moins d'une configuration spécifique, vous pouvez tout mettre à N dans ces trois rubriques.
Configurez IrDA suivant votre utilisation, je ne connais pas :) voir http://www.cs.uit.no/~dagb/irda/.
Si vous utilisez IrDA, configurez ici votre "low level driver".
si vous avez un modem Numéris(tm) choisissez : ISDN support : M
ainsi que le driver pour votre modem à M.
si vous avez un vieux lecteur de CD-ROM, ni IDE ni SCSI, c'est à dire connecté à une carte propriétaire ou une carte son en général, vous pouvez essayer de le faire fonctionner avec ces drivers.
Virtual terminal Y
Support for console on virtual terminal Y
Standard/generic (dumb) serial support Y
Parallel printer support M
et pour le reste, laissez la valeur par défaut et supprimez (N) les périphériques qui ne vous concernent pas.
Si vous avez une souris série, vous n'avez rien à faire.
Si vous avez une souris PS/2 : PS/2 mouse (aka "auxiliary device") support Y
Dans la majorité des cas (qui n'a pas une souris série
ou PS/2 ?) vous pouvez répondre N aux autres options.
Vraisemblablement vous n'en avez pas : mettez tout à N, sinon vous savez certainement ce que vous faites :)
Cela concerne les personnes qui ont une carte tuner TV ou radio ou une web cam supportée (voir la rubrique TV). Si c'est votre cas, choisissez : Video For Linux M
puis mettez en module les drivers nécessaires. Par exemple, si vous possédez une carte Miro PCTV (ou compatible BT8xx), choisissez : BT848 Video For Linux M
Si vous en avez un ou plusieurs, choisissez : Joystick support : M puis mettez en module les drivers pour les joysticks qui vous intéressent.
Attention, les drivers pour joysticks NES, SNES, PSX, Sega, etc. (Multisystem) nécessitent que vous fabriquiez une interface spéciale pour les connecter au port parallèle... à vos fers à souder !
Vous avez un lecteur de bande branché avec le lecteur de disquettes ? Cette rubrique vous concerne.
Les systèmes de fichiers. Choisissez ceux dont vous avez besoin : minix, ext2 (second extended), /proc, /dev/pts sont indispensables.
Plus en général : DOS FAT + VFAT, ISO 9660 (pour les CD-ROMS) et les extensions Joliet (noms longs sur les CD),
plus romfs qui peut être utile pour ceux qui utilisent initrd.
Choisissez les options NFS si vous souhaitez monter des disques partagés en NFS,
choisissez les options SMB afin de monter les répertoires partagés Windows par réseau. (si vous ne voulez pas monter de répertoire partagé, mais plutôt en partager avec Samba, vous n'avez pas besoin de répondre Y ou M ici).
Vous pouvez sûrement répondre N partout ici, sauf si vous en avez besoin, mais si c'est le cas, vous le savez :)
Linux est localisé, c'est à dire qu'il peut être utilisé dans tous les pays avec les caractères spécifiques au pays. A priori en France il suffit de choisir en module : Codepage 850 et NLS ISO 8859-1. Les autres peuvent être mis à N.
Vous pouvez laisser les options par défaut, sauf si vous voulez utiliser la console en mode frame buffer, avec le serveur X pour frame buffer (pratique si votre carte, récente, n'est pas encore supportée par XFree).
Dans ce cas, choisissez : Support for frame buffer devices Y
et configurez les options qui en dépendent.
Nous allons ici configurer la carte son. Si vous en avez une, choisissez : Sound card support MOuf... c'est fini :-)
Vous pouvez aussi utiliser le PC Speaker : Internal PC speaker support M
Ensuite, choisissez le "low level driver" de votre carte. Si vous le mettez en module (conseillé), ce n'est pas la peine de mettre ici les paramètres de la carte (irq, dma, etc.)
Les graveurs IDE sont reconnus sans problème en tant que lecteur de CD-ROM, mais pour ce qui est de s'en servir comme d'un graveur, vous allez devoir utiliser "l'émulation SCSI", comme sous Windows d'ailleurs (ASPI, ca vous dit quelquechose ?). Pour ce faire, il faut choisir les options suivantes dans le noyau : Enhanced IDE/MFM/RLL... Y
IDE/ATAPI CDROM M
SCSI hostadaptor emulation M
Loopback device M
SCSI support Y ou M
SCSI CD-ROM support Y ou M
Enable vendor-specific Y
SCSI generic support Y ou M
(choisir un driver SCSI, n'importe lequel)
ISO 9660 CDROM filesystem Y
Microsoft Joliet cdrom... M
Pour le reste de la configuration, celle-ci ne concerne pas le noyau. Allez la consulter dans la rubrique trucs.
Remarque : les distributions récentes ont souvent le support de l'émulation SCSI déjà inclus, il suffit alors de le configurer selon ce qui est indiqué dans la rubrique trucs.
Menu Code maturity level options
Prompt for development and/or incomplete code/drivers : Y
Menu Console drivers
Video mode selection support : Y
Support for frame buffer devices : Y
VESA VGA graphic console : Y
Pour le reste de la configuration du frame buffer, par exemple le serveur X, voir la rubrique correspondante.
Pour les utilisateurs d'un modem adsl USB, voici les options que vous devriez choisir :
- Menu [Network Device Support]
PPP (point-to-point protocol) support (CONFIG_PPP) [M]
PPP support for sync tty ports (CONFIG_PPP_SYNC_TTY) [M]
- Menu [Character devices]
[*] Non-standard serial port support
HDLC line discipline support
[*] Unix98 PTY support
- Menu [USB support]
Support for USB (CONFIG_USB) [M]
Preliminary USB device filesystem (CONFIG_USB_DEVICEFS) [Y]
UHCI (Intel PIIX4, VIA, ...) support (CONFIG_USB_UHCI) [M]
UHCI Alternate Driver (JE) support (CONFIG_USB_UHCI_ALT) [M]
OHCI (Compaq, iMacs, OPTi, SiS, ALi, ...) support (CONFIG_USB_OHCI) [M]
par Sébastien Kalt
Même sur une Debian ;) on peut compiler son noyau sans pépin.
La distribution Debian met à notre disposition des outils spécifiques pour 'faciliter' la compilation et la mise en place d'un nouveau noyau. On crée en fait un paquet Debian contenant le noyau et ses modules qu'il suffit ensuite d'installer comme n'importe quel paquet !
[root@localhost linux]# make-kpkg clean [root@localhost linux]# make-kpkg --revision=CUSTOM.1.0 kernel_imageC'est la phase de compilation proprement dite. Elle vous laissera un paquet kernel-image-2.0.36_CUSTOM.1.0_i386.deb dans le répertoire '/usr/src'.
[root@localhost linux]# mv /lib/modules/2.0.36 /lib/modules/2.0.36.old
Pensez à remplacer '2.0.36' par la version actuelle de votre noyau. Vous pouvez par la suite, quand vous êtes sûr que votre noyau marche parfaitement, supprimer ce répertoire.
Viens ensuite la phase d'installation proprement dite :
[root@localhost linux]# dpkg -i ../kernel-image-2.0.36_CUSTOM.1.0_i386.debSi vous tentez d'installer un noyau plus ancien que celui qui tourne actuellement 'dpkg' vous affichera le message d'avertissement suivant :
dpkg - avertissement: kernel-image-2.0.36 mis à jour de CUSTOM.1.4 vers l'ancienne CUSTOM.1.0.Ensuite on vous proposera de créer une disquette de boot. Je ne saurais que trop vous conseiller de faire cette disquette. En effet suite à quelques problèmes avec ma table de partition, ma disquette de boot Linux est la seule chose qui m'a permis de réparer les dégâts en m'évitant de réinstaller tout mon disque dur.
Si vous utilisez 'lilo', l'installation vous proposera d'utiliser votre fichier de configuration actuel pour ré-installer le chargeur. Si vous recompilez le même noyau vous n'avez rien à changer. Par contre si vous compilez un autre noyau il faut modifier votre '/etc/lilo.conf' pour qu'il boote bien sur '/boot/vmlinuz-2.X.XX' et non sur '/boot/vmlinuz-2.0.36' par exemple.
Enfin, si vous êtes sûr que tout s'est bien déroulé, il ne vous reste plus qu'à rebooter :
[root@localhost linux]# shutdown -r now
Et voilà, vous venez de compiler et d'installer un noyau aux
petits oignons ! Félicitations.
[root@localhost linux]# cd ../modules/pcmcia-cs [root@localhost pcmcia-cs]# make clean [root@localhost pcmcia-cs]# make configVoici une petite aide pour répondre au questionnaire proposé:
Linux source directory [/usr/src/linux]: si vous avez fait comme on vous a dit le répertoire proposé est le bon,
Alternate target install directory []: ça c'est si vous voulez compiler pour une autre machine, non compatible avec la compilation Debian,
Module install directory [/lib/modules/2.0.36]: répertoire normal, rien à changer,
Build 'trusting' versions of card utilities (y/n) [n]: ça permet de ne pas recompiler les modules PCMCIA à chaque recompilation du noyau. Je vous conseille de répondre 'non',
Include 32-bit (CardBus) card support (y/n) [n]: ben là ça dépend de vous, et surtout des cartes que vous comptez utiliser,
How would you like to set kernel-specific options?
1 - Read from the currently running kernel
2 - Read from the Linux source tree
3 - Set each option by hand (experts only!)
Enter option (1-3) [2]: 1 Si vous avez déjà
installé le noyau alors prenez l'option 1. Si vous venez de le compiler
mais qu'il n'est pas installé, prenez l'option 2. Une petite remarque
pour dire que le paquet pcmcia-source de la Potato ne propose
plus l'option 3.
Et voilà, vos modules PCMCIA sont maintenant configurés.
Il ne reste plus qu'à les compiler et les installer.
[root@localhost pcmcia-cs]# cd ../../linux [root@localhost linux]# make-kpkg --revision=CUSTOM.1.0 modules_imageAttention, ici il faut mettre la même révision que le noyau que vous venez de compiler, sinon vous ne vous y retrouverez plus.
[root@localhost linux]# dpkg -i ../modules-image-2.0.36-3.1.4-2+CUSTOM.1.0_i386.debEt voilà, maintenant il ne vous reste plus qu'à rebooter, et normalement tout marche comme sur des roulettes.
Retourner à la rubrique compilation du noyau.
par Jean-Christophe
Que faut-il installer pour pouvoir compiler un programme.
Pour voir si un tel package est installé sur votre ordinateur, utilisez les utilitaires graphiques comme kackage ou gnorpm, ou utilisez rpm en ligne de commande. Pour rechercher un package avec rpm, tapez :
[jice@taz jice]$ rpm -qa | grep makeCette commande vous renverra tous les packages dont le nom contient "make".
[jice@taz jice]$ rpm -qR kernel-source
kernel-headers = 2.2.13-7mdk glibc-devel ncurses-devel /bin/sh ld-linux.so.2 libc.so.6 libm.so.6 /usr/bin/perl libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libm.so.6(GLIBC_2.0) libm.so.6(GLIBC_2.1) |
-> pkg kernel-headers -> pkg glibc-devel -> pkg ncurses-devel |
Résumé des packages pour compiler le noyau
:
(si j'en ai oublié, dites-le
moi :)
Dans quasiment tous les cas, il faut au moins un compilateur, les utilitaire standard (make et binutils) et les librairies standard, soit :
En effet, chaque programme particulier utilisant une ou plusieurs bibliothèques,
vous avez besoin de la version de développement de la librairie
(nommée en général librairie-devel) afin
de compiler votre programme. Si vous voulez être tranquilles, je
vous conseille d'installer tous les packages de votre distribution qui
se terminent par "devel". Cela suffit dans la plupart des cas, mais vous
verrez parfois qu'il faut encore installer une librairie particulière.
De toute façon, tout ceci est normalement expliqué dans
le fichier README livré avec l'archive du programme à compiler.
Comme disent les anglophones : RTFM (Read The Fucking Manual !).
Bon, je ne résiste pas à l'envie de placer ici toutes les librairies que j'ai installées chez moi (Mandrake 6.1 avec ajouts perso) :
[jice@taz jice]$ rpm -qa|grep -i "-devel" faces-devel-1.6.1-11 libtermcap-devel-2.0.8-15mdk libjpeg-devel-6b-10mdk libpng-devel-1.0.3-4mdk gdbm-devel-1.8.0-2mdk xpm-devel-3.4k-6mdk Mesa-devel-3.0.99-4mdk zlib-devel-1.1.3-7mdk newt-devel-0.40-10mdk readline-devel-4.0-3mdk rpm-devel-3.0.3-31mdk libgr-devel-2.0.13-9mdk glibc-devel-2.1.1-16mdk libungif-devel-4.1.0-4mdk libstdc++-devel-1.1.3-3mdk ClanLib-devel-0.1.15-1 gtk+-devel-1.2.3-15mdk imlib-devel-1.9.5-6mdk kmp3-devel-19990829-1mdk libmikmod-devel-3.1.6-2mdk libtiff-devel-3.4-8mdk ncurses-devel-5.0_990703-4mdk qt-devel-1.44-12mdk slang-devel-1.3.8-1mdk svgalib-devel-1.4.0-10mdk XFree86-devel-3.3.5-3mdkPlus...
Glide2x_SDK-2.1-3 Hermes-1.2.5-1 lesstif-0.87.0-1 OpenPTC-x11-1.0.0-2
par Jean-Christophe
Comment fonctionnent ces mystérieux modules ?
Ce répertoire contient les dossiers suivants qui permettent de
séparer les modules selon leur type :
block/ | périphériques de type bloc |
fs/ | systèmes de fichier (FAT, ext2, etc.) |
misc/ | périphériques divers (carte tuner TV, port parallèle, carte son, joystick, etc.) |
net/ | drivers des cartes réseaux et protocoles |
scsi/ | périphériques SCSI |
cdrom/ | drivers CDROM non IDE (anciens CD-ROMs) |
ipv4/
ipv6/ |
protocole IP v4 et v6(protocole réseau) |
pcmcia/ | modules pour gérer les cartes PCMCIA |
video/ | gestion des cartes video en console, framebuffer |
Ce répertoire peut contenir d'autres dossiers, plus un fichier nommé modules.dep, qui contient les dépendances entre modules (le module parport_ide à besoin du module parport, etc.). Ce fichier est généralement regénéré à chaque boot par la commande "depmod -a" placée dans les scripts de démarrage.
Ce qu'on veut, c'est que le bon module se charge lorsqu'on utilise le périphérique (/dev/le_periph) correspondant. C'est simple. Il faut indiquer au chargeur de modules que pour acceder à ce périphérique il doit charger le module le_module. Cela se fait via son fichier de configuration : /etc/conf.modules.
Pour qu'un module soit chargé automatiquement, faire :
# ls -l /dev/le_periph
qui affiche une ligne ressemblant à :
crw------- 1 user group 144,
12 May 25 2000 /dev/le_periph
Dans la ligne qui s'affiche, noter le numéro dit "majeur",
c'est à dire le premier numéro qui suit le groupe, ici "144".
Notez ce numéro.
Enfin, si vous voulez lancer une commande avant ou après que
le module soit chargé en mémoire, vous pouvez ajouter une
ligne du type :
pre-install le_module la_commande , ou :
post-install le_module la_commande
Voilà, c'est tout, maintenant lorsqu'un programme utilisera le periphérique, plus besoin de charger le module à la main, cela se fera automatiquement.
Pour plus d'infos, regardez la page man de depmod, et des autres programmes (insmod, lsmod, etc.).
Remarque : on peut faire des tas de choses "intéressantes" avec les modules, allez voir cette page par exemple... En résumé, si vous êtes un paranoïaque de la sécurité, n'utilisez pas les modules et compilez-vous un noyau complètement monolithique sans chargeur de modules (merci à BooK pour l'info).
Fin du chapitre