Chapitre 10. Compiler le noyau

Table des matières
1. La méthode générique
1.1. La compilation du noyau
1.2. L'installation du noyau
2. Préparer le chargement automatique des modules
2.1. La carte réseau
2.2. Modem câble USB
2.3. La carte son
2.4. update-modules
2.5. Le fichier /etc/modules
2.6. Les périphériques USB
2.7. Le support du bus PCMCIA
3. Préparer le redémarrage
3.1. Le fichier de configuration de LILO
3.2. Ecrire les changements sur le MBR
4. Redémarrer
5. Réinstaller les modules annexes

Il existe deux méthodes pour compiler un noyau Linux :

La méthode générique est expliquée ci-dessous, et je vous conseille de l'utiliser dans un premier temps. La méthode Debian est expliquée en annexe La méthode Debian pour compiler un noyau.

1. La méthode générique

1.1. La compilation du noyau

Assurez-vous que vous êtes toujours dans le répertoire /usr/src/linux-version/. Lancez la compilation du noyau et des modules :


% make

Il faut alors s'armer de patience, surtout si vous avez un ordinateur peu puissant ! Sur un ordinateur récent, cela prend plusieurs minutes.

1.2. L'installation du noyau

Commencez par installer les modules :


# make modules_install

Puis copiez le noyau dans le répertoire /boot/ avec la commande suivante, en remplaçant X par le numéro de version du noyau :


# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.X

Copiez également dans le même répertoire la System Map et faites une sauvegarde du fichier de configuration du noyau :


# cp System.map /boot/System.map-2.6.X
# cp .config /boot/config-2.6.X

Mettez à jour les liens symboliques qui se trouvent à la racine du système de fichiers : le nouveau noyau devient votre noyau par défaut, et le noyau actuel devient le noyau de secours :


# cd /
# mv vmlinuz vmlinuz.old
# ln -sf boot/vmlinuz-2.6.X vmlinuz

2. Préparer le chargement automatique des modules

L'idéal est que les modules du noyau se chargent tout seuls quand on a besoin d'eux. Pour cela, il faut dire au système que quand il veut accéder au périphérique machin il doit charger le module truc. La procédure est d'écrire un fichier de configuration dans le répertoire /etc/modprobe.d/, puis d'exécuter le script update-modules qui va concaténer tous les fichiers de ce répertoire et mettre à jour le fichier de configuration des modules /etc/modprobe.conf.

2.1. La carte réseau

Si vous avez bien suivi mes instructions pour la configuration du noyau, vous avez noté le nom du module de votre carte réseau. Créez un fichier /etc/modprobe.d/reseau et écrivez dans ce fichier la ligne suivante :


alias eth0 nom_du_module

nom_du_module est le nom du module de votre carte réseau, sans l'extension ".ko".

Si le nom n'était pas indiqué dans l'aide associée à l'option de votre carte réseau lors de la configuration du noyau, allez dans le répertoire /lib/modules/numero_de_version_du_noyau/kernel/drivers/net/et regardez les fichiers qui se trouvent dans ce répertoire et dans ses sous-répertoires. Essayez de deviner le module contenant le driver de votre carte réseau (Indice : ce ne sont ni les fichiers mii.ko, slhc.ko et bsd_comp.ko, ni les fichiers dont le nom commence par ppp). Une fois que vous pensez avoir trouvé le module, utilisez la commande modinfo pour avoir des informations sur le module et lisez le champ description.

Note

Exemple :


% modinfo e100.ko

Le champ description confirme que c'est bien le module que l'on cherche :


description:    Intel(R) PRO/100 Network Driver

Le fichier /etc/modprobe.d/reseau devra donc contenir :


alias eth0 e100

Cette ligne signifie tout simplement que quand le système veut accéder au device eth0 (qui correspond à la première carte réseau Ethernet), il doit charger le module e100.

Attention

Si vous avez plusieurs cartes réseau, il faut répéter cette ligne plusieurs fois :


alias eth0 nom_du_module_de_la_carte_réseau_n°1
alias eth1 nom_du_module_de_la_carte_réseau_n°2
alias eth2 nom_du_module_de_la_carte_réseau_n°3

2.2. Modem câble USB

[TODO : Normalement, ça marche tout seul grâce à hotplug... à confirmer !]

2.3. La carte son

Installez les deux packages nécessaires au bon fonctionnement d'ALSA :


# apt-get install alsa-base alsa-utils

Copiez mon fichier de configuration type :


# cp ~/config/alsa /etc/modprobe.d/

ou :


% wget http://people.via.ecp.fr/~alexis/formation-linux/config/alsa
# mv alsa /etc/modprobe.d/

Editez le fichier /etc/modprobe.d/alsa que vous venez d'installer et, à la quatrième ligne non commentée, remplacez nom_du_module_ALSA par le nom du module ALSA avec le préfixe snd-. Si vous n'êtes pas sûr du nom, listez les fichiers du répertoire /lib/modules/numero_de_version_du_noyau/kernel/sound/pci/ (dans le cas d'une carte PCI ou intégrée) et vous trouverez le module ALSA de votre carte son.

Ensuite, éditez le fichier de configuration d'ALSA /etc/alsa/alsa-base.conf et modifiez le premier paramètre de configuration pour que la compatibilité avec OSS soit effective dès le démarrage d'ALSA :


startosslayer=true

2.4. update-modules

Maintenant que les fichiers de configuration nécessaires ont été crées dans le répertoire /etc/modprobe.d/, il faut exécuter un script pour qu'il concatène tous ces fichiers et génère le fichier de configuration des modules /etc/modprobe.conf :


# update-modules

2.5. Le fichier /etc/modules

Tout d'abord, commentez toutes les lignes de ce fichier.

Ensuite, si vous comptez utiliser les fonctions de firewalling, ajoutez les lignes suivantes :


ip_conntrack_ftp
ip_conntrack_irc

2.6. Les périphériques USB

Si vous avez des périphériques USB, installez les packages hotplug et usbutils (sauf si vous l'avez déjà fait au début du chapitre Faire marcher la connexion Internet) qui permettent de brancher à chaud des périphériques USB sans se préoccuper de charger les modules à la main :


# apt-get install hotplug usbutils

2.7. Le support du bus PCMCIA

Editez le fichier /etc/default/pcmcia et modifiez-le pour qu'il contienne :


PCMCIA=yes
PCIC=yenta_socket
PCIC_OPTS=
CORE_OPTS=
CARDMGR_OPTS=

Normalement, vous avez dû modifier la ligne qui commence par PCIC=. Cette ligne précise le type de connexion entre le bus PCMCIA et le reste du système ; sur tous les portables pas trop vieux équipés d'un bus CardBus, il faut mettre yenta_socket. Si vous êtes dans ce cas et que vous ne voulez pas que le contrôleur PCMCIA émette des bips, vous pouvez modifier la ligne CARDMGR_OPTS ainsi :


CARDMGR_OPTS='-q'

3. Préparer le redémarrage

3.1. Le fichier de configuration de LILO

Dans cette section, nous allons nous intéresser à la configuration de LILO. Editez le fichier de configuration de LILO /etc/lilo.conf et modifiez-le en regardant le fichier de configuration d'exemple ci-dessous et en l'adaptant à votre configuration personnelle. Normalement, vous n'avez pas grand chose à modifier, et seulement quelques options ou définitions d'O.S. à ajouter ou retirer.


# /etc/lilo.conf
# Fichier de configuration de LILO
# Formation Debian GNU/Linux par Alexis de Lattre
# http://www.via.ecp.fr/~alexis/formation-linux/

# Plus d'information dans "man lilo.conf"

# DEBUT de la partie GLOBALE

# Support des disques de grande capacité
lba32

# Disque sur lequel LILO va écrire le MBR
boot=/dev/hda

# La partition racine de Linux
root=/dev/hdXY

# Boot loader à utiliser
install=/boot/boot-menu.b

# Emplacement de la "map"
map=/boot/map

# Je veux que LILO affiche un menu pour choisir entre les O.S.
prompt

# Temps en dixièmes de secondes au bout duquel LILO
# lance l'O.S. définit par défaut
timeout=150

# Choix du mode VGA pour la console
vga=normal

# FIN de la partie GLOBALE

# DEBUT de la partie de définition des O.S.

# "Label" de l'O.S. booté par défaut
default=Linux

# Définition de Linux avec son noyau principal
image=/vmlinuz
	label=Linux
	read-only

# Définition de Linux avec son noyau de secours
image=/vmlinuz.old
	label=LinuxOLD
	read-only

# Définition d'un éventuel Windows 95, 98, ME, 2000 ou XP
# Partition sur laquelle est installé Windows
other=/dev/hdXY
	label=Windows

# FIN de la partie de définition des O.S.

3.2. Ecrire les changements sur le MBR

Maintenant que le fichier de configuration est prêt, exécutez LILO pour qu'il écrive les changements sur le MBR :


# lilo

Il vous affiche alors la liste des O.S. que vous avez définis :



Added Linux *
Added LinuxOLD
Added Windows

L'étoile correspond au système d'exploitation booté par défaut. S'il vous affiche des messages d'erreur, c'est probablement qu'il y a un problème dans le fichier de configuration ou dans les liens symboliques qui se trouvent à la racine du système de fichiers : faites les modifications nécessaires puis réexécutez LILO.

Avertissement

Il faut exécuter lilo si vous avez modifié les liens symboliques qui se trouvent à la racine du système de fichiers et / ou si vous avez changé les fichiers vers lesquels ils pointent, même si vous n'avez pas modifié le fichier /etc/lilo.conf, sous peine de ne plus pouvoir démarrer Linux !

4. Redémarrer

Redémarrez sur le nouveau noyau :


# reboot

5. Réinstaller les modules annexes

Les drivers annexes ont généralement besoin que l'on ait préalablement rebooté pour que la réinstallation se passe bien.

5.1. Driver du modem ADSL USB SAGEM F@st 800

Débranchez le modem et procédez à la réinstallation du driver :


% cd /usr/src/eagle-version/
% make clean
% ./configure
% make
# make install

Ensuite, vous pouvez rebrancher le modem et lançer la commande servant à établir la connexion.