Maintenant, deux possibilités s'offrent à vous. Soit vous installez les
sources du noyau disponibles en .deb
avec la distribution, soit depuis des
archives en .tar.gz
récupérables sur Internet à l'adresse
http://www.kernel.org (ou l'un des ses
miroirs), par exemple.
La première solution vous permet donc de recompiler les sources des noyaux fournis avec Debian GNU/Linux. Personnellement, je n'aime pas trop cette méthode ; les noyaux fournis sont parfois des pré-versions et auxquels l'équipe Debian a souvent rajouté des patches venant de droite et de gauche (par exemple les noyaux fournis avec 2.2r0 étaient des 2.2.17pre6...), et on peut donc avoir parfois, mais très rarement, quelques surprises.
Pour connaître la liste des différents paquets disponibles et contenant les sources du noyau Linux, c'est très simple, on utilise la méthode classique du "apt-cache search". Démonstration :
apt-cache search kernel-source
Résultat :
kernel-source-2.2.18pre21 - Linux kernel source for version 2.2.18pre21 kernel-source-2.0.36 - Linux kernel source. kernel-source-2.0.38 - Linux kernel source for version 2.0.38 kernel-source-2.2.10 - Linux kernel source. kernel-source-2.2.12 - Linux kernel source. kernel-source-2.2.13 - Linux kernel source. kernel-source-2.2.15 - Linux kernel source for version 2.2.15 kernel-source-2.2.17 - Linux kernel source for version 2.2.17
Nous avons donc maintenant le choix entre différentes versions du noyau Linux. Prenons alors ici la dernière disponible, à savoir la 2.2.18pre21. On l'installe le plus normalement possible :
apt-get install kernel-source-2.2.18pre21
Cette dernière étape à pour effet de placer les sources du noyau dans /usr/src
,
dans un ficher nommé kernel-source-2.2.18pre21.tar.bz2
.
Cette archive bzippée relativement volumineuse est donc à décompresser, comme ceci :
tar xvfI kernel-source-2.2.18pre21.tar.bz2
Ensuite on se retrouve avec un répertoire kernel-source-2.2.18pre21
. Reste
à ne pas oublier de faire un lien symbolique linux
vers ce dernier :
ln -s kernel-source-2.2.18pre21 linux
Vous pouvez alors dès à présent passer à l'étape de configuration du noyau.
A l'heure où j'écris cet article, la dernière version du noyau Linux est la 2.2.18 (Oui, le 2.4.0 est sorti... Bref, pour aujourd'hui on va pas chipoter...). C'est probablement l'un des meilleurs noyau qui soit sorti dans la série des 2.2. Il inclus un grand nombre choses (l'AGP, DRM, USB, SBLive! et j'en oublie sûrement beaucoup d'autres...) qui permettent largement de se passer du tout nouveau 2.4.0.
Tout d'abord, procurez vous une archive contenant les sources du noyau,
linux-2.2.18.tar.gz
ou linux.2.2.18.tar.bz2
sur
http://www.kernel.org ou tout autre miroir. Ensuite,
placez vous dans le répertoire /usr/src
. Vérifiez qu'il n'y a pas déjà un répertoire
linux. Si tel était le cas, renommez ou déplacez ce dernier. Décompressez enfin
l'archive que vous avez rapatrié (selon celle-ci):
tar xvfz linux-2.2.18.tar.gz
ou
tar xvfI linux-2.2.18.tar.bz2
Vous vous retrouverez alors avec un répertoire /usr/src/linux
qui contient
donc les sources de votre noyau Linux. Comme toujours, lisez bien le Kernel-HOWTO
(et en particulier le volet 3.2) pour plus d'information.
Pour que la compilation puisse s'effectuer à l'étape suivante, il est nécessaire
de définir au noyau un fichier de configuration. Ce dernier se trouve placé
dans la racine du répertoire linux
crée lors de la décompression de l'archive
contenant les sources ; ce fichier se nomme .config
(et est donc un fichier
"caché"). Vous pouvez l'éditer à la main, mais c'est un travail fastidieux pour
le non-spécialiste. Le plus facile est plutôt de définir la configuration à
l'aide d'une interface graphique qui s'occupera ensuite d'écrire un fichier
.config
pour vous. Pour cela, lancez la commande suivante, en faisant toujours
bien attention de vous trouver positionné dans /usr/src/linux
:
make menuconfig
Il y a un tas de rubriques, avec des cases à cocher ou non. Faites selon vos besoins puis quittez l'interface en prenant soin de confirmer l'enregistrement de vos modifications si besoin était. Pour plus de précisions n'hésitez pas à consulter le Kernel-HOWTO.
C'est ici que vous allez apercevoir l'originalité Debian. Nous avons la possibilité de mettre sous forme de paquets le noyau, plus précisément ce dernier et ses modules, la documentation de celui ci, ses fichiers d'en-têtes ainsi que ses sources. De ce fait on peut installer et retirer facilement un noyau précis et ce qui gravite autour de celui-ci très facilement. Aussi, lorsque l'on souhaite tester un nouveau noyau, la procédure d'installation est largement automatisée, et nous facilite ainsi le travail.
Classiquement sous Linux, après avoir configuré le noyau, on passe par différentes étapes. En général, on fait un nettoyage dans les sources (fichiers objets d'une ancienne compilation par exemple), puis on cherche les dépendances, on compile le noyau, puis ses modules et enfin on installe le tout (les commandes exécutées pour effectuer une compilation traditionnelle sont généralement celles-ci: make clean, make dep, make bzImage, make modules...).
Avec Debian, il y quelques changements, notamment le nettoyage ce fait plutôt comme ceci:
make-kpkg clean
Ensuite, cela devient très simple:
make-kpkg --revision=2.2.18-1 kernel_image
Avec cette dernière commande, le système effectue plusieurs tâches successivement
; il vérifie les dépendances, compile le noyau, après il s'occupe des modules,
et enfin très important il fabrique pour vous un paquet .deb
où il inclura
tout le travail réalisé (i.e le noyau et les modules).
Aussi, il est possible de construire d'autres paquets, par exemple et successivement avec les commandes suivantes, on obtient soit les sources, soit la documentation ou encore les fichiers d'en-têtes (nécessaires pour certaines de vos compilations):
make-kpkg kernel_source make-kpkg kernel_doc make-kpkg kernel_headers
Pour pouvez également faire "la totale", i.e. un make-kpkg clean
et make-kpkg
kernel_*
, tout cela avec une seule commande:
make-kpkg buildpackage
--revision
Une dernière note concernant l'option --revision
introduite ci-dessus avec
la commande make-kpkg kernel_image
; cette option permet de "personnaliser" un
peu le paquet produit. Ici, j'ai choisi d'y intégrer le numéro du noyau (2.2.18),
ainsi qu'un numéro de révision (1). Faites attention, n'y mettez pas n'importe
quoi, vous pourriez avoir des surprises ; lisez donc très attentivement la
page de manuel de make-kpkg
.
Une fois la compilation terminée, et si celle-ci c'est déroulée correctement,
vous devriez avoir selon vos désirs auparavant exigés, un ou plusieurs nouveaux
fichiers situés dans /usr/src
. Nous allons ici prendre le cas où l'on spécifie
à make-kpkg
la cible buildpackage
pour pouvoir établir une petite liste exemple
des fichiers produits que voici:
kernel-doc-2.2.18-mmedia_2.2.18-3_all.deb
kernel-headers-2.2.18-mmedia_2.2.18-3_i386.deb
kernel-image-2.2.18-mmedia_2.2.18-3_i386.deb
kernel-source-2.2.18-mmedia_2.2.18-3.dsc
kernel-source-2.2.18-mmedia_2.2.18-3.tar.gz
kernel-source-2.2.18-mmedia_2.2.18-3_all.deb
kernel-source-2.2.18-mmedia_2.2.18-3_i386.changes
Vous l'aurez tous deviné, le premier fichier inclus la documentation et le deuxième les fichiers d'en-têtes. Le troisième correspond au paquet le plus essentiel du lot ; il inclus donc le noyau et ses modules. Pour l'installer, rien de plus facile:
dpkg -i kernel-image-2.2.18-mmedia_2.2.18-3_i386.deb
Le processus d'installation se déclenchera et vous posera normalement quelques questions. Répondez y consciencieusement. Une fois terminé, et si tout c'est bien passé, vous n'avez plus qu'à redémarrer pour essayer votre nouveau noyau. Si ce dernier vous convient alors tant mieux, dans le cas contraire (si vous n'arrivez pas à démarrer le système correctement, faites le avec la disquette de démarrage de votre ancien noyau, disquette que vous devriez normalement et impérativement avoir...), retirez le avec la commande suivante:
apt-get remove kernel-image-2.2.18-mmedia
Ensuite, n'oubliez surtout pas de réinstaller votre ancien noyau convenablement.
Pour finir, l'avant dernier fichier de la liste correspond simplement aux
sources incluses dans un paquet au format .deb.