Le mpg-blog

LaTeX et autres geekeries

Noyau à la vanille façon Debian

without comments

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-devet 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.

Written by mpg

décembre 6th, 2008 at 10:21

Posted in Geekeries diverses

Tagged with , ,