Il existe deux méthodes pour compiler un noyau Linux :
la méthode générique, qui peut être utilisée pour toutes les distributions, y compris Debian ;
la méthode spécifique à Debian, qui consiste à créer un package contenant le noyau puis à l'installer. Cette méthode a l'avantage de pouvoir facilement compiler le noyau sur une machine pour l'installer sur une autre, mais elle a l'inconvénient d'être très peu pratique (à mon goût...) quand on veut compiler des modules du noyau dont les sources ne sont pas intégrées dans le noyau officiel (c'est le cas des modules ALSA pour les cartes son par exemple).
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.
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.
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 |
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.
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 |
où 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.
![]() | Exemple :
Le champ description confirme que c'est bien le module que l'on cherche :
Le fichier /etc/modprobe.d/reseau devra donc contenir :
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. |
![]() | Si vous avez plusieurs cartes réseau, il faut répéter cette ligne plusieurs fois :
|
[TODO : Normalement, ça marche tout seul grâce à hotplug... à confirmer !]
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 |
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 |
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 |
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 |
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' |
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. |
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.
![]() | 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 ! |
Redémarrez sur le nouveau noyau :
# reboot |
Si le redémarrage sur le nouveau noyau se passe mal et que votre Linux se bloque au démarrage, il va falloir redémarrer sur votre ancien noyau. Pour cela, faites Ctrl-Alt-Suppr, puis quand le menu de LILO s'affiche, sélectionnez LinuxOLD. Vous n'avez plus qu'à recompiler un nouveau noyau... en vous aidant des dernières lignes qu'il vous a affiché avant de se bloquer au démarrage pour essayer de trouver l'origine du problème et changer la configuration du noyau en conséquence. Bonne chance !
Si le redémarrage s'est bien passé... félicitation, vous avez réussi l'une des étapes les plus difficiles !
Les drivers annexes ont généralement besoin que l'on ait préalablement rebooté pour que la réinstallation se passe bien.
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.
Précédent | Sommaire | Suivant |
Configuration du noyau Linux | Niveau supérieur | Tirer parti du nouveau noyau - 1 |