Swisslinux.org

− Le carrefour GNU/Linux en Suisse −

 

Langue

 

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 :

  • en les téléchargeant sur kernel.org
  • en les téléchargeant via apt
Méthode 1 : kernel.org
  • Téléchargez les sources du noyau depuis kernel.org :
    $ mkdir $HOME/src && cd $HOME/src/ && wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.tar.bz2
  • Décompressez l'archive contenant les sources du noyau et créez un lien symbolique :
    $ tar xvfj linux-2.6.12.tar.bz2 1>/dev/null && ln -s linux-2.6.12 linux
Méthode 2 : apt
  • Téléchargez les sources qui vous intéressent avec apt :
    # apt-get install kernel-source-2.6.12

    (NB : remplacez le numéro de version par celui désiré.)

  • Connectez-vous en tant qu'utilisateur standard et ouvrez une console afin de décompressez les sources du noyau.
    $ su
    Password:
    # cd /usr/src
    # tar jxvf kernel-source-2.X.X.tar.bz2
  • Il est recommandé de créer un lien symbolique :
    # ln -s kernel-source-2.6.12 linux 

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)

  • Si vous souhaitez utilisez les patches “CK” et “bootsplash”, téléchargez-les et décompressez-les :
    $ wget http://ck.kolivas.org/patches/2.6/2.6.12/2.6.12-ck2/patch-2.6.12-ck2.bz2 && bunzip2 patch-2.6.12-ck2.bz2 && wget http://www.bootsplash.de/files/bootsplash-3.1.6-2.6.12.diff && cd linux
  • Vérifiez qu'aucune erreur ne soit détectée quand vous simulez l'application des patches :
    $ patch -p1 --dry-run -s < ../patch-2.6.12-ck2 && patch -p1 --dry-run -s < ../bootsplash-3.1.6-2.6.12.diff
  • Si vous n'obtenez aucun message d'erreur, vous pouvez alors patcher les sources du noyau :
    $ patch -p1 -s < ../patch-2.6.12-ck2 && patch -p1 -s < ../bootsplash-3.1.6-2.6.12.diff

    (Je fais un petit contrôle stupide ^^:

    $ cat Makefile |grep -- -ck
    EXTRAVERSION =-ck2

Procédure

  • Vous devez maintenant configurez vos modules selon vos besoins/matériels.
    $ make menuconfig

    Si vous désirez un paramétrage graphique du kernel, installez libsoqt-dev

    # apt-get install libsoqt-dev

    et exécutez

    # make xconfig

    au lieu de make menuconfig.

  • Pour que le bootsplash fonctionne, vous devez avoir les options suivantes au niveau de votre noyau:
    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
  • Une fois que vous avez configuré votre noyau, débutez la compilation:

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 :

  • Pour les 1027×768
    # splash -s -f /etc/bootsplash/themes/current/config/bootsplash-1024x768.cfg > /boot/initrd.splash
  • Pour les 800×600
    # splash -s -f /etc/bootsplash/themes/current/config/bootsplash-800x600.cfg > /boot/initrd.splash

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

Powered by Dokuwiki - fr/documentation/debian/kernel_compilation.txt · Dernière modification: 2011/07/18 08:44 (modification externe)