Compiler son kernel sous ubuntu

Je voulais recompiler un noyau récent et optimisé pour mon Athlon X2, avec ma distrib Ubuntu 9.04
Le noyau actuel est compilé pour x86_64. Je voulais pas être trop bourrin et donc utiliser les outils Debian pour générer un paquetage.
A noter qu’il faut environ 5Go pour la compilation.

Plusieurs méthodes sont données dans ubuntu.fr :
2 méthodes donc une avec make-kpkg
Cette méthode est traduite de cette page en anglais.
Noter qu’il y a quand même quelques différences dans les lignes de commandes utilsisées, en particulier le strip des binaires et la compilation ‘parallèle’ non appelé dans la version française.

Les étapes sont donc les suivantes :

  • On télécharge un kernel et on de décompresse.
  • Configuration du noyau
  • Compilation et installation.
  • Pour le téléchargement j’ai choisi la dernière version stable chez kernel.org. pour savoir quel est la dernière version stable il suffit de chercher le fichier LATEST-IS-2.6.36.2 dans la page de téléchargement

    Dans le choix de la config, on peut utiliser la config par défaut apportée par le noyau mais elle est minimaliste (il suffit de la comparer avec la version installée, le fichier de conf est situé dans le /boot). Je préfère donc rappatrier la conf ‘ubuntu’ et appeler un make oldconfig, qui au passage m’a demandé pleins de choses dont l’architecture du CPU ce qui était plutôt bon.

    Pour la compilation j’utilise make-kpkg en tenant compte que j’ai 2 CPU.
    INSTALL_MOD_STRIP=1 CONCURRENCY_LEVEL=3 make-kpkg --initrd --append-to-version=-selso kernel_image kernel_headers modules_image
    La compilation et la génération des package s’est mal passée, à cause d’un bug de cet utilitaire pour la vérification de la version du package .
    echo "The UTS Release version in include/linux/version.h" ....
    Le problème est expliqué ici. Il y a plusieurs solutions données j’ai choisi d’utiliser celle qui demande de corriger le ficchier :
    ./debian/ruleset/misc/version_vars.mk, on corrige le chemin vers le fichier version.h et ça compile.

    Installation : pas de problème avec dpkg. La mises à jour de GRUB est automatique.

    Au démarrage j’ai quelques soucis pas forcément liées au ce noyau :
    GRUB ne trouvait plus le fichier. La partition pointait au mauvais endroit j’ai alors utilisé le rescueCD et lancé dans le prompt GRUB un find /boot/grub/menu.lst qui donne pour résultat le bon disque à utiliser hd(x,y). On corrige dans le fichier menu.lst et on redémarrage.
    Comme pour diminer le temps de compilation j’ai supprimé quelques modules j’ai malheureusement perdu le support du clavier (logitech wave). J’ai donc ajoute le support HID/raw.
    La ça se complique car apparemment make-kpkg ne met pas à jour ses binaires.
    Par tatonnement j’ai réussi à ne pas reprendre tout à zéro avec make-kpkg clean (compilation directement avec le makefile et suppression du répertoire debian/stamps).

    Il me reste à vérifier que les modules vbox peuvent être ré-installés avec ce noyau.

    A noter cette page pour la recompilation automatique des drivers NVidia. Je ne le fais pas car j’ai deux versions de noyau et je ne sais pas si des versions différentes des drivers NVidia peuvent être générées et cohabiter.

    Voilà J’espérais boucler ça en deux heures et ça m’a prit la soirée, avis aux amateurs.

    À propos de Selso

    Salut ! Je m'appelle Selso. Je vis à Saint-Etienne depuis 2005. Je suis ingénieur en informatique embarquée en poste chez CIO Systèmes Embarqués.
    Cette entrée a été publiée dans Développement, Informatique. Vous pouvez la mettre en favoris avec ce permalien.

    Laisser un commentaire