====== Compilation du noyau ======
{{wiki:travaux.png}}
> Sujet : Compilation du noyau 2.6.12 sous Debian avec les patchs "CK" et "Bootsplash".
> Niveau : Avancé
> Distribution : [[.|Debian]] SID
> Auteur : Compilé par [[utilisateurs:Calimarno]] à partir des messages de [[http://forum.swisslinux.org/viewtopic.php?id=213|WaVeR]] et [[http://forum.swisslinux.org/viewtopic.php?id=210|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 =====
{{wiki:nok.png}}
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
lilo -v
==== 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:
- Choix du théme? Réponse: On laisse par defaut
- Sélection d'une image initrd? Réponse: none
- Séléction de la résolution? Réponse: 1024x768 dans mon cas
- Séléction du bootloader? Réponse: lilo dans mon cas
- 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 800x600. Le thème Debian-Mist ne supporte que le 800x600 et le 1024x768 :
* Pour les 1027x768 # splash -s -f /etc/bootsplash/themes/current/config/bootsplash-1024x768.cfg > /boot/initrd.splash
* Pour les 800x600 # 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 =====
* [[.:..:kernel_patch|Patcher les sources du noyau]]
* http://ernest2.cheska.net/index.shtml ¦¦ Site en français avec pas mal de doc et de tutos, dont un "simple" pour la compilation de kernels sous Debian.
* [[http://www.bootsplash.de/|Le site pour les SplashScreens]], en anglais.
* http://packages.debian.org ¦¦ Librairie de packages pour Debian, avec moteur de recherche avancé.