Compilation d'un noyau à la sauce Debian
Article écrit par Arnaud Fontaine, Cédric Lignier et Patrice Vetsel, wikisé et relu par Arnaud Fontaine
Remis à jour le 29/07/2008 pour une Lenny par LeDub
Ce document est très largement inspiré de celui-ci ainsi que celui de Nicolas Boos. Avant de commencer la lecture de cet article, je vous conseille fortement de lire les documentations portant sur le noyau et en particulier le Kernel-HOWTO que vous pourrez trouver sur Traduc.org. N'oubliez pas non plus les pages de manuels pour obtenir de plus amples informations sur un paquet précis.
Vous vous demandez certainement pourquoi vous devriez recompiler votre noyau. Les réponses possibles à cette question peuvent être que vous souhaitez disposer d'une version plus récente du noyau, améliorer la rapidité d'amorçage de votre système (les images des noyaux de Debian ne sont pas très légers car ces noyaux sont compilés dans le but de satisfaire le plus d'utilisateurs possibles) ou tout simplement ajouter le support d'un périphérique non pris en charge par défaut.
Debian permet de compiler son noyau proprement grâce à la commande make-kpkg. Nous allons donc utiliser cette méthode propre à Debian pour compiler notre noyau et en expliquer les étapes. Cet article est plutôt centré sur le noyau 2.6, néanmoins les commandes restent les même et nous préciserons tout au long de l'article si certains détails concernent uniquement le 2.6. Ainsi vous pourrez utilisez cet article pour compiler les deux versions actuellement maintenus du noyau.
Description
Le noyau représente le coeur du système d'exploitation. En conséquence il est la partie la plus importante du système. C'est lui qui est l'aspect le moins apparent pour l'utilisateur, à l'opposé le serveur graphique qui représente l'aspect le plus proche de l'utilisateur final. C'est le noyau qui gère vos « périphériques et qui fournit aux programmes utilisateur une interface simplifiée avec le matériel » (Systèmes d'exploitation, Andrew Tanenbaum). Ainsi Linux représente le noyau, même si on a pour habitude de parler de Linux pour désigner le système entier, mais ceci reste un abus de langage.
Une distribution Debian GNU/Linux possède de nombreux avantages en termes de configuration et d'outils d'administration. Pour l'installation du noyau Linux il existe des paquets très utiles qui vont vous permettre d'installer votre noyau très rapidement.
Créer une disquette d'amorçage
La première chose à faire est de créer une disquette d'amorçage afin de pallier à toutes mauvaises manipulations qui pourraient empêcher le démarrage de votre système. La commande permettant de créer cette disquette est la suivante (cas où vous avez installé une Lenny testings avec le noyau 2.6) :
# ls -la /boot/vmlinuz*
# -rw-r--r-- 1 root root 1455800 avr 19 04:35 /boot/vmlinuz-2.6.24-1-686
ce qui donne
# mkboot /boot/vmlinuz-2.6.24-1-686
Il vous suffit d'adapter cette ligne de commande à votre configuration et de configurer votre BIOS afin qu'il puisse amorçer un système d'exploitation à partir d'une disquette. Si vous ne disposez pas de Lilo mais de GNU Grub, vous pouvez utiliser le script grub-install qui fait partie du paquet grub de cette manière :
# grub-install '(fd0)'
Pré-requis
Vous devez bien connaître le type de matériel que vous possédez sur votre machine pour déterminer les options de configuration à utiliser avec votre futur noyau. Pour découvrir les options de configuration du noyau et pour savoir lequelles activer, consulter l'annexe.
Les paquets nécessaires
Afin de pouvoir compiler votre noyau, quelques paquets sont nécessaires. Nous allons utiliser les sources du noyau de Debian, qui diffèrent des sources officielles du noyau Linux par des patchs appliqués par les mainteneurs du paquet.
De plus l'interface de configuration du noyau en mode graphique a quelque peu changé pour le 2.6 : vous pouvez choisir entre une interface QT (KDE) ou GTK (Gnome/Xfce) en plus celle du mode console appelée Ncurses.
Pour la version 2.4, vous aviez le choix entre la version TK et Ncurses.
Indépendamment de votre préférence quant à l'interface de configuration choisie, vous devez installer :
# aptitude install build-essential fakeroot kernel-package
Pour l'utilisation de l'interface GTK, vous devez installer
# aptitude install libglib2.0-dev libgtk2.0-dev
Pour TK, c'est
# aptitude install tk-dev
Pour QT,
# aptitude install libqt3-mt-dev
Pour Ncurses
# aptitude install libncurses5-dev
Le paquet kernel-package est un paquet indispensable pour compiler son noyau à la sauce Debian. La lecture du fichier README.gz, contenu dans ce paquet, est très instructif. Vous pouvez le visualiser en tapant la commande suivante :
$ zmore /usr/share/doc/kernel-package/README.gz
Mise en place des sources du noyau
Maintenant que vous avez installé les paquets nécessaires à la compilation d'un noyau à la sauce Debian, vous avez deux possibilités pour mettre en place les sources de votre futur noyau.
Soit vous utilisez les sources du noyau disponibles en paquet Debian (portant l'extension .deb), soit depuis les archives officielles du noyau disponibles au format .tar.gz ou .tar.bz2 à cette adresse.
Vous avez donc le choix car, de toutes façons, nous allons décrire ces deux possibilités.
Afin d'éviter de travailler sous root, nous allons compiler le noyau à partir d'un utilisateur normal. Pour ce faire il doit appartenir au group src :
# adduser VOTRE_UTILISATEUR src
Ajout de l'utilisateur « VOTRE_UTILISATEUR » au groupe « src »... Ajout de l'utilisateur VOTRE_UTILISATEUR au groupe src Terminé.
Pour que ce réglage soit pris en compte, il est nécessaire de déconnecter puis reconnecter votre compte. Vous pouvez aussi faire un :
$ su - VOTRE_UTILISATEUR
Entrez votre mot de passe comme demandé
Mot de passe : ******
Pour vérifier vous pouvez taper la commande suivante :
$ id
uid=1000(VOTRE_UTILISATEUR) gid=1000(VOTRE_UTILISATEUR) groupes=20(dialout),24(cdrom),25(floppy),29(audio),40(src),44(video),46(plugdev),106(netdev),109(powerdev),1000(VOTRE_UTILISATEUR)
Il est impératif que votre compte soit dans le groupe src, les autres groupes peuvent être différents
Sources disponibles en paquets au format Debian
Pour connaître la liste des différentes versions de paquets des sources du noyau Linux, il vous suffit simplement d'utiliser la commande aptitude search, ainsi :
# aptitude search linux-source
v linux- - v linux-source-2.6 - p linux-source-2.6.22 - Linux kernel source for version 2.6.22 with Debian patches p linux-source-2.6.24 - Linux kernel source for version 2.6.24 with Debian patches
Notez que le résultat de la commande précédente est donné suivant la version unstable ou Lenny de Debian, cela peut bien sûr être différent selon la version de Debian GNU/Linux dont vous disposez. Nous installons donc la version 2.6.24 :
# aptitude install linux-source-2.6.24
Cette dernière étape a pour effet de placer une archive nommée linux-source-2.6.24.tar.bz2
dans le répertoire /usr/src
.
Linus Torvalds conseille de ne pas compiler le noyau dans le répertoire /usr/src
. Voici un extrait du courriel qui explique pourquoi il ne faut pas compiler son noyau dans ce répertoire :
I would suggest that people who compile new kernels should: - NOT do so in /usr/src. Leave whatever kernel (probably only the header files) that the distribution came with there, but don't touch it. - compile the kernel in their own home directory, as their very own selves. No need to be root to compile the kernel. You need to be root to _install_ the kernel, but that's different. - not have a single symbolic link in sight (except the one that the kernel build itself sets up, namely the "linux/include/asm" symlink that is only used for the internal kernel compile itself). And yes, this is what I do. My /usr/src/linux still has the old 2.2.13 header files, even though I haven't run a 2.2.13 kernel in a _loong_ time. But those headers were what glibc was compiled against, so those headers are what matches the library object files. And this is actually what has been the suggested environment for at least the last five years. I don't know why the symlink business keeps on living on, like a bad zombie. Pretty much every distribution still has that broken symlink, and people still remember that the linux sources should go into "/usr/src/linux" even though that hasn't been true in a _loong_ time.
Pour les anglophobes, voici une traduction de cet extrait :
Je suggère aux personnes qui compilent un nouveau noyau de : - ne pas le faire dans /usr/src. Quelque soit le noyau provenant de votre distribution (probablement les fichiers d'entêtes uniquement), mais en tout cas n'y touchez pas. - compiler le noyau dans leur propre répertoire personnel. Il est inutile d'être root pour compiler le noyau. Vous avez besoin d'être root pour installer le noyau, mais c'est différent. - ne pas avoir l'intention de faire un lien symbolique (excepté celui que le noyau créé lui-même, à savoir le lien "linux/include/asm" qui est utilisé uniquement pour la compilation interne du noyau). Et bien sûr, c'est ce que je fais. Mon /usr/src/linux a encore les fichiers d'entêtes de mon ancien 2.2.13, bien que je n'ai pas utilisé le noyau 2.2.13 depuis très longtemps. Mais ces entêtes étaient ceux qu'avait compilé la glibc, donc ces entêtes sont ceux qui correspondent aux fichiers de la bibliothèque objet. Et c'est en fait ce qui a été l'environnement suggéré depuis au moins cinq ans. Je ne sais pas pourquoi l'habitude de faire des liens symboliques est restée ainsi. De nombreuses distributions ont ce lien symbolique cassé, et les gens se souviennent que les sources du noyau devraient être dans "/usr/src/linux" même si ce n'est pas vrai depuis très longtemps.
Avec votre utilisateur, placez vous dans votre répertoire personnel ${HOME}
puis créez un répertoire src/
, décompactez l'archive contenant les sources du noyau :
$ mkdir ${HOME}/src && cd ${HOME}/src/ $ tar -xvf /usr/src/linux-source-2.6.24.tar.bz2
Vous obtenez un répertoire ${HOME}/src/linux-source-2.6.24
. Nous allons faire un lien symbolique pointant sur le répertoire précédemment créé et nous placer enfin dans le répertoire des sources :
$ ln -s ${HOME}/src/linux-source-2.6.24 ${HOME}/src/linux
Vous pouvez passer dès maintenant à la section suivante concernant la Configuration du noyau.
Sources traditionnelles du noyau Linux
Une fois récupérée, sur Kernel.org ou tout autre miroir, l'archive contenant les sources du noyau linux-2.6.24.tar.bz2
, il vous reste à la décompresser dans votre répertoire ${HOME}/src/
et ça sans être root :
$ mkdir ${HOME}/src && cd ${HOME}/src/ $ tar -xvf linux-source-2.6.24.tar.bz2
Vous pouvez remarquer qu'un répertoire {HOME}/src/linux/
contenant les sources du noyau a été créé. Une fois que tout cela vous semble correct, vous pouvez passer à la section suivante.
Configuration du noyau
Choisir les options de son noyau
Avant de passer à la compilation proprement dite de votre noyau, vous allez dans un premier temps devoir choisir les options que vous allez y inclure. C'est un peu un choix à la carte. Vous ne prennez ce dont vous avez besoin.
Les options du noyau peuvent s'intégrer de deux manières différentes :
- Soit directement : on dit alors que l'on met l'option en dur.
- Elles peuvent être externes au noyau : on dit alors que l'on met l'option en module.
Les options en modules permettent d'alléger votre noyau. Il faut savoir que plus un noyau a une taille importante et plus le démarrage sera long.
Mais alors pourquoi ne pas mettre toutes les options du noyau en modules ? Et bien à causes de plusieurs raisons simples à comprendre :
- Certaines options n'existent qu'en dur.
- Certaines options doivent figurer obligatoirement en dur.
Il faut donc faire très attention, lors du choix de ces options, de bien mettre celles qui sont vitales en dur.
Configuration proprement dite
Cette configuration peut-être intégrée à la phase de création du fichier .deb
(création du paquet contenant le noyau) via l'utilisation de l'option –config
de la commande make-kpkg
présentée dans le paragraphe suivant.
Afin de choisir les options que vous souhaitez inclure ou non dans votre noyau. Il est préférable de configurer les options via une interface graphique ou console plutôt que d'éditer le fichier de configuration ${HOME}/src/linux/.config
.
/boot/config*
vers ${HOME}/src/linux/.config
Il existe plusieurs interfaces de configuration du noyau comme on a pu le voir précédemment. Le choix dépend des bibliothèques que vous avez installées. Voici la liste des principales interfaces de configuration disponibles que j'ai retenues :
- menuconfig : Interface utilisant la bibliothèque Ncurses, donc avec des menus en mode console.
- config : Interface utilisant la bibliothèque QT (noyau 2.6) ou TK (noyau 2.4), donc en mode graphique.
- gconfig : Interface utilisant la bibliothèque GTK, cette interface est disponible uniquement pour la version 2.6, elle est en mode graphique.
Dans votre ${HOME}/src/linux/
, tapez make
suivi d'un des trois arguments précédemment décrit, soit :
$ cd ${HOME}/src/linux/ $ make menuconfig
Pour une configuration du noyau via l'interface Ncurses, make config
pour une configuration par l'interface GTK.
Si vous avez choisi d'utiliser l'interface Ncurses, alors vous pourrez naviguer au sein des menus à l'aide des touches de direction, appuyez sur la touche Espace plusieurs fois sur une option de support de matériel afin de la mettre en dur, en module, ou de l'enlever du noyau.
On notera une grande différence entre la présentation des options du noyau de la série 2.4 et 2.6. En effet, cela est beaucoup mieux organisé dans la dernière série.
Afin d'obtenir plus de renseignements sur les options du noyau, vous pouvez consulter l'annexe de cet article. N'oubliez pas de sauvegarder la configuration avant de quitter.
Afin de connaître précisément votre matériel, vous pouvez utiliser les commandes lspci
, lshw
, sans oublier l'arborescence /proc/
$ lspci 00:00.0 Host bridge: VIA Technologies, Inc. VT8363/8365 [KT133/KM133] (rev 03) 00:01.0 PCI bridge: VIA Technologies, Inc. VT8363/8365 [KT133/KM133 AGP] 00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 40) 00:07.1 IDE interface: VIA Technologies, Inc. VT82C586/B/686A/B PIPC Bus Master IDE (rev 06) 00:07.2 USB Controller: VIA Technologies, Inc. USB (rev 16) 00:07.3 USB Controller: VIA Technologies, Inc. USB (rev 16) 00:07.4 Host bridge: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 40) 00:0a.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11) 00:0a.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11) 00:0c.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 07) 00:0c.1 Input device controller: Creative Labs SB Live! MIDI/Game Port (rev 07) 00:0d.0 Ethernet controller: Davicom Semiconductor, Inc. Ethernet 100/10 MBit (rev 31) 01:00.0 VGA compatible controller: nVidia Corporation NV10DDR [GeForce 256 DDR] (rev 10)
.config
. La configuration du noyau étant une opération longue et fastidieuse, je vous recommande vivement de copier ce fichier dans un autre répertoire pour éviter de devoir tout recommencer du début si, par mégarde, vous détruisiez le répertoire ${HOME}/src/linux/
.
La commande make-kpkg
Maintenant que votre noyau est configuré, nous allons décrire les différentes options de la commande make-kpkg qui est le coeur de la méthode Debian pour la compilation d'un noyau. Elle permet la construction d'un paquet Debian contenant l'image du noyau et les modules.
Les options importantes
Voici une liste des options importantes de la commande make-kpkg :
append-to-version
Cette option est très intéressante, voire indispensable. Vous pouvez obtenir le numéro de version de votre noyau en tapant la commande :
$ uname -a
Cette option permet d'ajouter une chaîne de caractères de votre choix permettant d'identifier votre noyau. Cela vous évite d'éditer le Makefile
des sources du noyau. Ainsi il est très pratique de faire ceci :
--append-to-version=.`date +%y%m%d`
Utiliser date
permet de spécifier le jour de la compilation de votre noyau.
Cette chaîne sera aussi ajoutée à la fin du nom du répertoire des modules, par exemple: /lib/modules/2.4.20.030810
. Ainsi les modules de chaque noyau compilés iront dans un répertoire dédié et on évite les conflits et les écrasements de fichiers entre les compilations.
Je vous conseille d'utiliser la date sous le format aammjj
(argument +%y%m%d
), qui permet de lister les différents noyaux dans l'ordre du plus récent au plus ancien à l'amorçage du système.
config gconfig|menuconfig|xconfig
Cette option vous évite de taper par exemple make xconfig
pour la configuration de votre noyau. En spécifiant –config xconfig
le menu de configuration du noyau en mode graphique sera lancé juste avant la compilation du noyau faite par les cibles que nous décrirons dans la suite de cet article.
initrd
Cela permet de créer un fichier initrd
. Cela est particulièrement utile si vous souhaitez utiliser des modules du noyau afin qu'ils soient pris en compte dès l'amorçage de l'image de votre noyau.
Notez que cette option nécessite les paquets ,
cramfsprogs
et initrd-tools
que vous pouvez installer en tapant :
# aptitude install cramfsprogs
Notez que cette option nécessite le paquet initramfs-tools
, que vous pouvez installer en tapant :
# aptitude install initramfs-tools
rootcmd fakeroot|sudo
Cet option permet de spécifier la manière d'accéder aux privilèges de root afin d'effectuer la compilation du noyau. Étant donné que nous avons choisi d'installer le paquet fakeroot
, nous utiliserons donc l'option ainsi :
--rootcmd fakeroot
Les cibles importantes
Voilà les cibles importantes de la commande make-kpkg
.
Cette section est donc vraiment à lire.
clean
Cette cible s'invoque toute seule et permet de « nettoyer le répertoire des sources du noyau de tous les fichiers créés par l'invocation de l'une des cibles données ci dessous, et effectue un make distclean » (traduction de la partie du manuel consacré à cette cible $ man make-kpkg
).
kernel_doc
Cette autre cible compile et crée pour vous un paquet Debian contenant les documentations fournis avec le noyau.
kernel_image
Celle-ci permet de compiler le noyau, de créer un paquet Debian contenant tout ce qui est nécessaire à l'amorçage de votre système (modules du noyau, images de celui-ci, fichier de configuration du noyau…), et enfin de modifier votre chargeur d'amorçage afin qu'il prenne en compte votre nouveau noyau (il supporte notamment GNU/Grub et Lilo). La procédure permettant de configurer automatiquement de GNU/Grub lors de l'installation du nouveau noyau est décrite dans une autre documentation disponible sur Andesi.
kernel_source
Cette cible construit un paquet Debian des sources du noyau Linux que vous compilez. Cela est particulièrement utile si vous souhaitez réutiliser ultérieurement les sources du noyau que vous souhaiteriez conserver.
kernel_headers
Celle-ci a pour but de produire un paquet Debian contenant les entêtes du noyau Linux. Les entêtes peuvent être nécessaires pour compiler certains programmes.
binary
Cette cible “construit les quatre paquets Debian du noyau en utilisant les cibles kernel_source, kernel_headers, kernel_doc et kernel_image” (traduction de la partie du manuel consacré à cette cible *$ man make-kpkg).
buildpackage
Cela a pour conséquence d'utiliser la cible clean
et binary
décrite ci-dessous. Cette cible englobe donc toutes les autres cibles que nous avons décrites.
modules_image
Cette cible a pour but de produire un paquet Debian pour chaque module supplémentaire que vous avez installé et qui se trouve dans le répertoire /usr/src/modules/
.
Compilation et installation du noyau
Maintenant que nous avons vu les différentes options et cibles de la commande make-kpkg
, nous pouvons enfin compiler le noyau, sans création de l'initrd
, à la sauce Debian en tapant la commande suivante :
$ cd ${HOME}/src/linux $ make-kpkg clean $ make-kpkg --rootcmd fakeroot --append-to-version=.`date +%y%m%d` --revision=2.6.24 kernel-image
Notez que si vous configurez une autre version de noyau vous devrez changer la valeur de l'option –revision
.
Pour créer le fichier initrd
, ajoutez l'option –initrd
à la commande précédente. Ce qui donne
$ make-kpkg --rootcmd fakeroot --initrd --append-to-version=.`date +%y%m%d` \ --revision=2.6.24 kernel-image
Nous compilons donc le noyau en utilisateur normal grâce à l'option –rootcmd
. Une fois la compilation terminée, pour installer le nouveau noyau, en tant que root,
* placez vous dans le répertoire ${HOME}/src/
,
* trouvez le paquet nommé kernel-image-2.6.24.*.deb
* Utilisez dpkg -i
pour installer ce précédent paquet
soit
# cd ${HOME}/src/ $ su
Mot de passe : ******
# ls *.deb
linux-image-2.6.24.080430_2.6.24_i386.deb
Évidemment faites correspondre le nom du fichier entre les commandes ls
et dpkg -i
.
# dpkg -i linux-image-2.6.24.080430_2.6.24_i386.deb
Ce qui donne ce genre de message :
Sélection du paquet linux-image-2.6.24.080430 précédemment désélectionné. (Lecture de la base de données... 36303 fichiers et répertoires déjà installés.) Dépaquetage de linux-image-2.6.24.080430 (à partir de linux-image-2.6.24.080430_2.6.24_i386.deb) ... Done. Paramétrage de linux-image-2.6.24.080430 (2.6.24) ... Hmm. There is a symbolic link /lib/modules/2.6.24.080430/build However, I can not read it: Aucun fichier ou répertoire de ce type Therefore, I am deleting /lib/modules/2.6.24.080430/build Hmm. The package shipped with a symbolic link /lib/modules/2.6.24.080430/source However, I can not read the target: Aucun fichier ou répertoire de ce type Therefore, I am deleting /lib/modules/2.6.24.080430/source Running depmod. Running postinst hook script update-grub. Searching for GRUB installation directory ... found: /boot/grub Searching for default file ... found: /boot/grub/default Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst Searching for splash image ... none found, skipping ... Found kernel: /boot/vmlinuz-2.6.24.080430 Found kernel: /boot/vmlinuz-2.6.18-6-686 Updating /boot/grub/menu.lst ... done
Vos messages peuvent ne pas être identiques à ceux-là.
L'installation de votre nouveau noyau est maintenant terminée, vous pouvez apprécier la simplicité et la puissance de cette commande spécifique à Debian
Vous pouvez également cumuler les cibles afin, par exemple, de créer un paquet contenant les documentations du noyau (cible kernel_doc
, les sources du noyau Linux (cible kernel_source
) et le reste (cible kernel_image
par exemple) puis d'installer tout ceci ainsi :
$ cd ${HOME}/src/linux $ make-kpkg clean $ make-kpkg --rootcmd fakeroot --revision=2.6.24 --append-to-version=.`date +%y%m%d` kernel_doc kernel_source kernel_image $ cd ${HOME}/src/ $ su
Mot de passe : ******
# ls *.deb
linux-image-2.6.24.080430_2.6.24_i386.deb
# dpkg -i linux-image-2.6.24.080430_2.6.24_i386.deb
Une fois encore, faites correspondre le nom du fichier .deb
.
INUTILITÉ À CONFIRMER
La commande dpkg
, qui va permettre l'installation du noyau, va vous poser quelques questions :
Installation du noyau (dpkg) | ||
---|---|---|
kernel-image | Question | Réponse à apporter |
dpkg | Would you like to create a boot floppy now? | No |
dpkg | Install a boot block using the existing /etc/lilo.conf? | No |
dpkg | Wipe out your old LILO configuration and make a new one? | No |
FIN DU
Si tout c'est bien passé, dpkg
ne devrait pas vous retourner de message d'erreur. Un nouveau répertoire a été créé dans /lib/modules/
, il porte le nom de votre nouveau noyau :
# ls -la /lib/modules/ total 9 drwxr-xr-x 4 root root 1024 2008-04-30 12:32 . drwxr-xr-x 12 root root 6144 2008-04-18 15:30 .. drwxr-xr-x 3 root root 1024 2008-04-18 13:04 2.6.18-6-686 drwxr-xr-x 3 root root 1024 2008-04-30 12:32 2.6.24.080430
Dans notre exemple c'est le répertoire 2.6.24.080430
.
Configuration du gestionnaire d'amorçage
Cette partie n'est que purement informative car l'utilisation de dpkg -i
fait les modifications nécessaires au moins pour ce qui est de GNU Grub.
Pour preuve voici un extrait du résultat de dpkg -i
Searching for GRUB installation directory ... found: /boot/grub Searching for default file ... found: /boot/grub/default Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Configuration de Lilo
Si vous utilisez Lilo, éditez le fichier /etc/lilo.conf
et ajouter à la fin de ce dernier les lignes suivantes :
image=/boot/vmlinuz-2.6.24.080430 label=2.6.24.080430 read-only
Le paramètre image spécifie l'emplacement de l'image de votre nouveau noyau, qu'il faudra adapter à votre configuration.
Le paramètre label contient la description de votre noyau qui est affiché dans LILO. Attention, la taille de ce paramètre est limitée !
C'est pratique lorsque l'on installe un seul noyau. Mais si l'on en installe plusieurs, on perd lors de l'amorçage du système le choix des autres noyaux.
Après avoir enregistré les modifications, n'oubliez pas de mettre à jour LILO à l'aide de cette commande :
# lilo -v
Il ne vous reste plus qu'à redémarrer votre machine sur votre nouveau noyau :
# reboot
Configuration de GNU Grub
Pour GNU Grub, il vous suffit d'éditer le fichier /boot/grub/menu.lst
et d'ajouter les lignes suivantes :
title Debian GNU/Linux, kernel 2.6.24.080430 root (hd0,0) kernel /boot/vmlinuz-2.6.24.080430 root=/dev/hda1 ro savedefault title Debian GNU/Linux, kernel 2.6.24.080430 (single-user mode) root (hd0,0) kernel /boot/vmlinuz-2.6.24.080430 root=/dev/hda1 ro single
Dans cet exemple, l'option
* title permet de donner le titre qui apparaîtra au lancement de GNU Grub.
* root permet de définir la partition racine (pour plus d'informations, consultez l'article au sujet de GNU Grub).
* kernel permet de donner l'emplacement de l'image en spécifiant grâce à root que la partition racine est /dev/hda1
.
N'oubliez pas d'adapter ces lignes au nom de fichier vmlinuz et à votre partition racine, généralement la même que celle contenant votre ancien noyau.
Aller plus loin dans la compilation du noyau
Présentation
make-kpkg
est un programme très puissant qui vous permet de faire beaucoup de choses lors de la compilation de votre noyau. Vous pouvez ainsi créer des paquets Debian pour installer certains modules, comme par exemple les pilotes Nvidia, qui ne sont pas inclus dans le noyau, ou encore patcher ce dernier pour lui ajouter de nouvelles options de configuration telle que l'utilisation d'image au démarrage.
Pour l'ajout de patches, vous devez installer un paquetage supplémentaire :
# aptitude install kernel-package
Ajouter des modules externes à son noyau
Dans cette section, nous allons voir différentes possiblités de la commande make-kpkg
.
Présentation
Le paramètre –added_modules
indique à make-kpkg
de générer des paquets Debian pour l'installation de modules installés séparement du noyau.
Ce paramètre peut prendre plusieurs modules séparés par une virgule. Les noms des modules que vous pouvez ajouter sont ceux qui correspondent aux noms des répertoires présents dans /usr/src/modules/
.
Module : nVidia
Si vous êtes posseseur d'une carte graphique à base de chipset Nvidia GeForce vous pouvez compiler le driver de cette carte lors de la compilation de votre noyau. Vous devez télécharger le paquet nvidia-kernel-source :
# apt-get install nvidia-kernel-source
Une fois les paquets téléchargés, vous devez comme d'habitude les décompresser. Ces derniers s'installeront dans le répertoire /usr/src/modules/
:
$ cd /usr/src $ tar xfvz nvidia-kernel-src.tar.gz $ tar xfvz nvifia-glx-src.tar.gz
Il ne vous reste plus qu'à ajouter lors de la compilation de votre noyau le paramètre :
- -added_modules=nvidia-kernel
Reportez vous à l'article pour terminer l'installation de votre carte graphique. Vous pouvez également utiliser la cible modules_image
qui généra également un paquet pour les modules des pilotes Nvidia. La principale différence que –added_modules
permet d'ajouter des modules spécifiques tandis que la cible précédemment décrite compile tous les modules disponibles dans le répertoires /usr/src/
.
Module : ALSA (noyaux 2.4.x uniquement)
Si vous utiliser l'architecture ALSA pour votre carte son, et un noyau de la branche des 2.4 vous devez télécharger le paquet alsa-source :
# apt-get install alsa-source
Une fois le paquet téléchargé, vous devez le décompresser :
$ cd /usr/src $ tar xfvz alsa-source.tar.gz
Il ne vous reste plus qu'à ajouter lors de la compilation de votre noyau le paramètre :
- -added_modules=alsa-driver
Reportez vous à l'article pour terminer l'installation de votre carte son.
Patcher son noyau
Présentation
Le paramètre –added_patches
indique à make-kpkg
d'inclure des rustines (ou patches) à votre noyau.
Ce paramètre peut prendre plusieurs patches séparés par une virgule. Les noms des patches que vous pouvez ajouter sont ceux qui correspondent aux noms des répertoires présents dans /usr/src/kernel-patches/all/apply/
.
Lorsque vous patcher votre noyau, les nouvelles options de configuration disponibles sont automatiquement affichées et l'on vous demande si vous souhaitez les inclure à votre noyau.
Patch : debianlogo
Le patch debianlogo vous permet de remplacer le pingouin que vous trouvez au démarrage de votre Debian GNU/Linux par un beau logo aux couleurs de Debian. Pour cela vous devez télécharger le paquet kernel-patch-debianlogo
:
# apt-get install kernel-patch-debianlogo
Il ne vous reste plus qu'à ajouter lors de la compilation de votre noyau le paramètre :
- -added_patches=debianlogo
Patches : preempt et lowlatency (noyaux 2.4.x uniquement)
Les patches preempt et lowlatency vous permettent de donner plus de réactivité à votre station de travail qui utilise un noyau de la série 2.4.x. Les noyaux 2.6.x intégrent nativement cette option. Enfin il ne faut pas utiliser ces patches si votre Debian GNU/Linux est utilisé en tant que serveur. Vous devez télécharger les paquets kernel-patch-2.4-preempt et kernel-patch-2.4-lowlatency :
# apt-get install kernel-patch-2.4-preempt kernel-patch-2.4-lowlatency
Il ne vous reste plus qu'à ajouter lors de la compilation de votre noyau le paramètre :
- -added_patches=preempt,lowlatency
Désinstaller
Vous pouvez supprimer aussi facilement que vous venez de l'installer le noyau que vous venez de configurez. Cependant, il ne faut pas que ce soit le noyau qui est en cours d'exécution car vous allez rendre votre système instable. Pour supprimer le noyau que je viens d'installer :
# apt-get remove --purge kernel-image-2.6.7-`date +%y%%m%d`
Annexes:
Les options du Noyaux
Les options du Noyau sont disponibles dans dans un autre article.