Table des matières

Compilation du noyau

Sujet : Compilation du noyau 2.6.12 sous Debian avec les patchs “CK” et “Bootsplash”.
Niveau : Avancé
Distribution : Debian SID
Auteur : Compilé par Calimarno à partir des messages de WaVeR et phoenix818.

Lisez toute cette page avant de faire quoi que ce soit! N'oubliez pas de sauvegarder vos données, tant sous Windows que sous une version de Gnu/Linux.

Introduction

Il faut prévoir assez pour / de manière à ne pas être géné quand vous installez/décompressez les sources du noyau.

Prérequis

Commencez par installer les outils nécessaires :

# apt-get install build-essential fakeroot kernel-package modutils module-init-tools libncurses5-dev cramfsprogs initrd-tools

Il existe deux méthodes pour se procurer les sources du noyau :

Méthode 1 : kernel.org
Méthode 2 : apt

Si vous utilisez cette méthode, la plupart des commandes décrites ci-après nécessiteront les droits superutilisateur puisque les sources ne se trouvent pas dans votre répertoire utilisateur.

Patches (facultatif)

Procédure

    Code maturity level options --->
    [*] Prompt for development and/or incomplete code/drivers
    Processor type and features --->
    [*] MTRR (Memory Type Range Register) support
    Device Drivers ---> Block devices --->
    <*> Loopback device support
    <*> RAM disk support
    (4096) Default RAM disk size
    [*] Initial RAM disk (initrd) support
    Graphics support --->
    [*] Support for frame buffer devices
    [*] VESA VGA graphics support
    Console display driver support --->
    [*] Video mode selection support
    <*> Framebuffer Console support
    Bootsplash configuration --->
    [*] Bootup splash screen

Et absolument décocher:

    Device Drivers ---> Graphics support --->
    < > nVidia Riva support
    Logo configuration --->
    [ ] Bootup logo

Cette étape nécessite du temps. Armez-vous de patience!

    $ make-kpkg clean
Méthode 1
    $ make-kpkg --rootcmd fakeroot --append-to-version=.X --revision=2.6.12 kernel-image

Il faut remplacer X par un chiffre de 0 à 9.

Pour ceux qui utilisent initrd:

    $ make-kpkg --rootcmd fakeroot --initrd --append-to-version=.X --revision=2.6.12 kernel-image
Méthode 2
    # make-kpkg --revision=Release1.0 kernel_image

L'option –revision= est un moyen de repère pour vous tout comme debian. Mettez par exemple la version, voire carrément la date à laquelle vous avez compilez votre noyau.

!! Attention: il faut y mettre un nom de version, et un numéro de version, sinon ce n'est pas accepté!!

FIXME Une fois la compilation finie, passez dans le répertoire src (?) et installez le paquet contenant l'image du noyau.

    $ cd .. && su
    # dpkg -i kernel-image-2.6.12-ck2.X_2.6.12_i386.deb

Choisissez les choix par défaut aux questions qui vous seront posées.

Voilà ce qu'il a fait pendant l'installation du kernel-image-2.6.12-ck2.X_2.6.12_i386.deb: 1. installé le fichier /boot/vmlinuz-2.6.12-ck2.X (c'est le noyau), 2. installé le fichier /boot/System.map-2.6.12-ck2.X (c'est la System map), 3. installé le fichier /boot/config-2.6.12-ck2.X (c'est le fichier de configuration du noyau), 4. installé les modules dans le répertoire /lib/modules/2.6.12-ck2.X/, 5. modifié le lien symbolique /vmlinuz pour qu'il pointe sur le noyau que vous venez d'installer, 6. modifié le lien symbolique /vmlinuz.old pour qu'il pointe sur le noyau actuel, 7. exécuté lilo.

On vous proposera de faire une disquette de boot en cas de gros soucis…. petit conseil: si vous êtes soucieux, acceptez.. et si vous l'êtes pas, acceptez quand même.. Personnellement, jamais eu de problème, mais…

Et je vous conseille de Réexécutez <code>lilo -v</code>

Bootsplash (facultatif)

Jusqu'à présent tout est bien, ce qu'il nous reste c'est de Pour mettre en place le bootsplash, ajoutez la ligne suivante dans le fichier /etc/apt/sources.list

    deb http://www.bootsplash.de/files/debian unstable main

Puis, faites :

# apt-get update
# apt-get install bootsplash sysv-rc-bootsplash

Le paquet sysv-rc-bootsplash va patcher les scripts de boot /etc/rc?.d/ , pour que les animations fonctionnent. Bootsplash va installer les utilitaires et un thème par défaut dans /etc/bootsplash/themes/

Pendant l'installation vous aurrez droit à ses questions:

  1. Choix du théme? Réponse: On laisse par defaut
  2. Sélection d'une image initrd? Réponse: none
  3. Séléction de la résolution? Réponse: 1024×768 dans mon cas
  4. Séléction du bootloader? Réponse: lilo dans mon cas
  5. Il va vous dire ce que vous devriez faire/ajouter dans votre fichier de configuration du bootloader (Lilo/Grub).

Normalement après tout ça le bootsplash est mis en place avec le thème par défaut, il ne reste qu'à modifier le fichier lilo.conf.

Pour mettre un autre thème que celui offert par défaut :

    # cd /etc/bootsplash/themes && wget http://www.bootsplash.de/files/themes/Theme-Debian-Mist.tar.bz2 && tar xjvf Theme-Debian-Mist.tar.bz2
    # rm -f current
    # ln -sf /etc/bootsplash/themes/Debian-Mist/ current

Il ne reste plus qu'à créer un initrd qui chargera le bootsplash en mémoire en même temps que le noyau. La commande à taper dépend de la résolution d'écran que peux supporter votre frameBuffer. Si vous l'ignorez, je vous conseille 800×600. Le thème Debian-Mist ne supporte que le 800×600 et le 1024×768 :

LILO / GRUB

Il nous nous reste que configurer lilo ou grub, la configuration du chargeur de boot est simple, il suffit de lui indiquer l'initrd à charger ainsi que la résolution à laquelle il démarrera le noyau. Pour spécifier une résolution à un chargeur d'OS, le plus simple est de renseigner la variable vga avec le code de la résolution. Parmi les codes possibles, on a:

    vga=788 - pour 800 x 600 - 16 bits
    vga=791 - pour 1024 x 768 - 16 bits
    vga=794 - pour 1280 x 1024 - 16 bits
    vga=834 - pour 1400 x 1050 - 16 bit

LILO

La modification concernant le bootsplash dans lilo.conf est en gras:

    image=/vmlinuz
            label=Linux
            vga=791
            initrd=/boot/initrd.splash
    #      append="splash=silent"
            append="splash=verbose"
            read-only
    #       restricted
    #       alias=1

Dans mon cas j'ai choisis le mode verbose ce qui me donne une image dans le fond et mes messages de démarrage. Il faut relancé la commande

lilo -v

pour voir si tout est Ok.

Mode Verbose: http://users.linuxbourg.ch/waver/tmp/image/verbose.png Mode Silent: http://users.linuxbourg.ch/waver/tmp/image/silent.png Voilà à quoi ressemble ma console: http://users.linuxbourg.ch/waver/tmp/image/console-thumb.png

GRUB

Pour ceux qui utilise grub je suppose que leur fichier doit ressemblé a ceci:

    title Linux
    root (hd0,0)
    kernel (hd0,0)/vmlinuz splash=silent vga=791 root=/dev/hda1
    initrd /boot/initrd.splash

Conclusion

Ben voilà j'arrive à la fin, Il ne vous reste plus qu'à redémarrer votre machine :

# reboot

Si tout se passe bien, tant mieux… sinon, rebootez sous l'ancienne version du noyau, et faites:

# apt-get remove kernel-image-2.X.Xperso

OU

# apt-get remove –purge kernel-image-2.x.Xperso ¦¦ Permet de tout virer, fichier de config compris

Liens