Fichiers
de config Noyau -- Kernel Linux
Le noyau est la
partie du système d'exploitation qui fait
l'interaction entre le matériel et les
logiciels/utilisateurs.
Pour visualiser la configuration matériel de votre machine,
en root, tapez:
lspci
0000:00:00.0
Host bridge: Intel Corp. 440LX/EX - 82443LX/EX Host bridge (rev 03)
0000:00:01.0 PCI bridge: Intel Corp. 440LX/EX - 82443LX/EX AGP bridge
(rev 03)
0000:00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 01)
0000:00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
0000:00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev
01)
0000:00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 01)
0000:00:08.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL-8139/8139C/8139C+ (rev 10)
0000:00:0a.0 RAID bus controller: Silicon Image, Inc. (formerly CMD
Technology Inc) PCI0680 Ultra ATA-133 Host Controller (rev 02)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc Rage 128
PF/PRO AGP 4x TMDS
ou lshw
Principe
Sous linux, toutes les distributions sont fournis avec un
un noyau
précompilé. C'est à dire qu'il est
fourni sous
forme de package.
Une bonne partie du noyau est mis en module, ainsi vous n'avez plus
qu'à charger les modules spécifiques à
votre
matériel pour que ce dernier fonctionne.
Lorsque vous voulez mettre à jour le noyau, il suffit de
mettre
à jour le package du noyau disponible pour votre
distribution.
Les Avantages
- Vous vous occupez de rien ( configuration / compilation )
à part la mise à jour du package comme tout
programme,
sur une distribution de type Debian cela se fera avec apt (pour plus
d'informations, reportez-vous au Tutorial apt),
sous Fedora avec yum (voir le Tutorial yum),
sous Mandriva avec urpmi.
- Etant donné que casiment tous les
drivers/options sont
disponibles en module, si vous ajoutez ou changer de
matériel,
vous n'avez jusqu'à charger le module ( et configurer le
module
pour être chargé au démarrage ). Mais
surtout nul
besoin de recompiler le noyau à la main.
Les Inconvénients
- Il y a décallage de plusieurs versions entre la
dernière version du noyau Linux disponible et les packages
des
noyaux précompilés fournis par les distributions,
dans
certains cas cela peut-être pénalisant
(corrections de
bugs, fonctionnalités manquantes etc..)
- Les patchs fournis sous forme de package sont assez
limités,
de ce fait, vous êtes obligé de recompiler le
noyau
à la main, si vous désirez patcher le noyau pour
ajouter
de nouvelles fonctionnalités, si le patch n'est pas
disponible
en package.
FXExemple de noyau précompilé disponible :
apt-cache search kernel-image
[...]
kernel-image-2.4-386 - Linux kernel image for version 2.4 on 386
kernel-image-2.4-586tsc - Linux kernel image for version 2.4 on
Pentium-Classic
kernel-image-2.4-686 - Linux kernel image for version 2.4 on
PPro/Celeron/PII/PIII/P4
kernel-image-2.4-686-smp - Linux kernel image for version 2.4 on
PPro/Celeron/PII/PIII/P4 SMP
kernel-image-2.4-k6 - Linux kernel image for version 2.4 on AMD
K6/K6-II/K6-III
[...]
kernel-image-2.6-em64t-p4 - Linux kernel image for version 2.6 on Intel
EM64T systems
kernel-image-2.6-em64t-p4-smp - Linux kernel image for version 2.6 on
Intel EM64T SMP systems
kernel-image-2.6-k7 - Linux kernel 2.6 image on AMD K7 machines -
transition package
kernel-image-2.6-k7-smp - Linux kernel 2.6 image on AMD K7 SMP machines
- transition package
kernel-image-2.6.8-11-amd64-generic - Linux kernel image for version
2.6.8 on generic x86_64 systems
kernel-image-2.6.8-11-amd64-k8 - Linux kernel image for version 2.6.8
on AMD64 systems
[...]
kernel-image-2.6.8-11-em64t-p4-smp - Linux kernel image for version
2.6.8 on Intel EM64T SMP systems
kernel-image-2.6.8-2-386 - Linux kernel image for version 2.6.8 on 386.
kernel-image-2.6.8-2-686 - Linux kernel image for version 2.6.8 on
PPro/Celeron/PII/PIII/P4.
kernel-image-2.6.8-2-686-smp - Linux kernel image for version 2.6.8 on
PPro/Celeron/PII/PIII/P4 SMP.
kernel-image-2.6.8-2-k7 - Linux kernel image for version 2.6.8 on AMD
K7.
[...]
Définition des
modules
Techniquement, les modules sont des
morceaux de noyau qui peuvent être
insérés ou enlevés sans
redémarrer l'ordinateur. Cela présente l'avantage
d'avoir un noyau de taille raisonnable tout en procurant une grande
souplesse.
En pratique, un module est un
pilote d'un
périphérique ou d'une fonctionnalité.
Par exemple, pour faire marcher une carte réseau, on a
besoin d'insérer le module conçu pour cette carte
réseau.
source:
ici
Compiler son noyau soit
même
Les
Paquets necessaires
libncurses5-dev
make
gcc
cpp
Récupérer
les sources du noyau
L'autre solution consiste à
télécharger les
sources vous-mêmes à partir de
http://www.kernel.org et
à compiler vous même le noyau.
Pour cela :
- Allez dans /usr/src/l
puis télécharger les
sources avec lynx ou wget par exemple à partir de http://kernel.org.
- Décompressez les sources
- Faites un lien symbolique entre le répertoire
des sources
et /usr/src/linux
lrwxrwxrwx 1 root
src
12 2005-08-07 15:56 linux -> linux-2.6.12
NOTES :
Dans
/usr/src/linux
doit TOUJOURS se trouver la dernière version que vous avez
compilé mais surtout
la version du noyau utilisé par le système.
Lorsque vous compilez des
programmes qui créait des modules, ces dernières
vont directement voir
dans
/usr/src/linux.
Si la version du des sources du noyau présente dans
/usr/src/linux
et celle du système, le
module compilé par le programme ne pourra pas être
chargé.
La configuration du noyau
- Allez dans le dossier /usr/src/linux puis tapez :
- make menuconfig si vous
désirez rester en console pur
- make
xmenuconfig si vous êtes en émulation console
depuis X
Vous arrivez dans une interface. Cette interface permet
de choisir les
fonctionnalités/drivers que vous désirez compiler
par la suite.
Je vous conseil de
commencer par le haut pour finir par le bas pour ne rien oublier. En
effet, si vous oubliez une option, une partie du matériel
ou
fonctionnalité ne sera pas accessible. Votre linux risque de
ne
pas démarrez ou vous risquez de perdre des
fonctionnalités ( son etc.. ). Vous
devez donc sélectionnez les parties du noyau que vous voulez
compiler.
En cochant avec une * vous compilez la
fonctionnalité/drivers en dur.
En cochant avec un M vous compilez la fonctionnalité/drivers
en module.
N'oubliez
pas de compiler les
drivers que lspci vous a donné. De plus, vous devez
compiler dans "Device Drivers" le support ATA ou SATA ou SCSI ( selon
votre matériel et le File System utilisé par
votre linux
( par défaut Ext3 ) qui est celui par défaut. Je
vous
conseil de compiler ces options en dur et non en module (sinon cela
necessite un initrd ce qui complique la chose). Si vous ne
faites
pas ceci, votre ordinateur ne démarrera pas ( vous
aurez un
kernel panic "Kernel panic: VFS: unable to mount root fs on ..."
N'hésitez pas à vous aider de l'aide pour avoir
des
informations sur les options du noyau et savoir à quoi ils
correspondent.
Quand vous avez terminé, enregistrez et quittez, cela
créé un fichier .config. Ce fichier sous forme de
texte
contient toutes les fonctionnalités et drivers que vous avez
sélectionné dans l'interface. Il est conseille de
le
garder pour une future compilation !
Les Options
qu'il faut activer dans le kernel pour
Le support ipv6
activer
pour une connexion
ADSL avec modem USB
activer
pour une
souris USB
activer
pour carte ATI
activer
pour activer les sensors
Lancer
la compilation
Pour lancer la compilation :
make bzImage cela compile le noyau
Quand c'est terminé vous devez compiler les modules pour
cela :
make modules
( ces derniers se trouvent dans /lib/modules/version_du_noyau )
La compilation est alors terminée, vous devez copier le
noyau
dans le répertoire /boot pour qu'il soit chargé
au
démarrage de l'ordinateur. Pour cela :
cp arch/i386/boot/bzImage
/boot/vmlinuz-numeronoyau
cp System.map
/boot/System.map-numeronoyau
Configuration du
loader Lilo
La partie importante, où vous
définissez
les noyau à charger au démarrage de votre linux
est
celle-ci :
#
Boot up Linux by default.
#
default=2.6.12-sec
prompt
timeout=20
image=/boot/vmlinuz-2.6.12-sec
label=2.6.12-sec
read-only
image=/boot/vmlinuz-2.6.12
label=2.6.12
read-only
- Default
définit
l'entrée ( label ) à charger par
défaut, je vous
conseil de ne jamais mettre un noyau que vous venez de compiler, car
ci-celui ne boot pas, vous serez embéter ( bien que l'on
puisse
changer le noyau à charger avec shift ).
- Image
définit le
chemin du noyau à charger, c'est en fait le bzImage issu de
la
compilation du noyau ( voir plus haut lors de la copie après
la
compilation ).
- label
permet de nommer le
noyau, c'est ce qui apparait sur le tableau lorsque vous avez le choix
sur les noyaux surlequels vous désirez démarrer.
Vous devez rajouter une entrée comme ci-dessous, avec le
noyau fraichement compilé.
Enregistrez votre fichier lilo.conf puis tapez : lilo pour
créer les entrées.
Il ne reste plus qu'à redémarrez l'ordinateur.
Autres docs sur le noyau :
ici
et
ici
Retour à la page
d'accueil