Noyau à la vanille façon Debian
Aide-mémoire perso qui peut éventuellement servir à d’autres : compilation d’un
noyau Linux upstream en utilisant les outils fournis par Debian (Lenny) pour
construire un paquet .deb
du noyau et l’installer sans douleur.
Télécharger les sources du noyau sur kernel.org. Pour une version
stable (ex. aujourd’hui : 2.6.27.7), utiliser le lien F (full source) sur la
ligne. Dans tous les autres cas, il faut télécharger le patch (lien du numéro
de version, ex. 2.6.28-rc6) et la base à laquelle l’appliquer, donnée par le
lien B sur la même ligne. Dans les exemples qui suivent, je suppose que les
trucs sont enregistrés sous ~/tmp
.
Ajouter son utilisateur au groupe src
si ce n’est pas déjà fait. Par
exemple :
# adduser mpg src
Puis se relogguer avec cet utilisateur pour que la modification soit effective.
Le vérifier en tapant id
ou groups
.
En utilisateur, aller dans /usr/src
, y détruire le lien symbolique linux
.
Décompresser l’archive des sources. S’il s’agit d’une version à patcher,
procéder comme dans l’exemple suivant.
% tar xjf ~/tmp/linux-2.6.27.tar.bz
% bunzip2 ~/tmp/patch-2.6.28-rc6.bz2
% cp -r linux-2.6.27 linux-2.6.28-rc6
% cd linux-2.6.28-rc6
% patch -p1 <~/tmp/patch-2.6.28-rc6
Une fois obtenue une belle arborescence des sources dûment patchée au besoin,
rétablir le lien symbolique linux
vers sa racine.
Il faut maintenant configurer le nouveau noyau. Pour partir de la configuration de l’ancien, faire par exemple
% cp /boot/config-2.6.27.5 /usr/src/linux/.config
Aller alors dans /usr/src/linux
et y lancer alors make menuconfig
. (Il faut
sans doute installer un ou deux paquets pour ça, dont libncurses-dev
et
peut-être d’autres.) Selon les besoins, sélectionner les drivers voulus (chez
moi, c’est ath9k
qui m’a motivé à installer une version récente du noyau, et
que je vais activer la première fois dans Device driver -> Networks device
support -> Wireless Lan -> Atheros 802.11n wireless cards support).
Il est alors temps de construire le noyau. Pour cela, il faut avoir installé
les paquets nécessaires : kernel-package
, fakeroot
, build-essential
et
initramfs-tools
en font partie, et je crois qu’ils suffisent. Exécuter alors
% fakeroot make-kpkg clean
% fakeroot make-kpkg --initrd kernel_image
(Si on envisage de faire plusieurs noyaux personnalisés successifs à partir
d’une même version upstream, on a intérêt à utiliser l’option
--append-to-version=.20081107
(ou tout autre numéro) pour les distinguer et ne
pas mélanger leurs modules.) C’est en tout cas le moment de s’en jeter une
petite de son breuvage favori, ou de faire autre chose d’intéressant sur sa
machine si on elle a un double cœur.
Maintenant, la seule étape nécessitant les droits de root
: l’installation
du paquet créé.
# dpkg -i /usr/src/linux-image-2.6.27.5_2.6.27.5-10.00.Custom_amd64.deb
Voilà, il ne reste plus qu’à rebooter sur le nouveau noyau, et éventuellement recompiler les modules externes.