Table des matières
Compiler son propre kernel
Ce tuto est basé sur celui de Crazy posté sur le forum officiel le dimanche 8 avril 2007.
Prérequis
Premièrement, vous n'avez pas besoin du paquet kernel-source car nous allons en créer un pour votre kernel personnalisé.
Ensuite vous aurez besoin d'une configuration valide pour le kernel que vous voulez compiler qui n'a pas besoin d'être la dernière version stable.
Prenons les outils nécessaires :
# pacman -S pacman-tools
# repoman update
Créer un répertoire de travail comme:
$ mkdir ~/kernel $ cd ~/kernel
Création du FrugalBuild
Ecrivez votre FrugalBuild dans ce répertoire
exemple pour un kernel stable :
pkgver=2.6.20 pkgrel=1 _F_kernel_name="-multimedia" _F_kernel_patches=(http://people.redhat.com/mingo/realtime-preempt/older/patch-2.6.20-rt8) Finclude kernel
Ceci va compiler le kernel 2.6.20+rt-patch sans les patchs stable XX. Si vous savez si vos patchs fonctionnent avec les patchs 'stable .XX' alors ajoutez :
_F_kernel_stable=X
Où X est le numéro de release STABLE. Par exemple :
_F_kernel_stable=6
Ceci va compiler un kernel 2.6.20.6 + vos patchs
Lorsque vous compilé un kernel personnalisé, vous devriez le compiler pour votre CPU (que vous devez indiquer dans votre config). Puis ajoutez:
_F_kernel_dontsedarch=1
au FrugalBuild.
Les patchs
Vous pouvez ajouter plus d'une URL de patchs ou de patchs à to _F_kernel_patches. Comme par exemple:
_F_kernel_patches=(http://baz.org/foo.patch \ bar1.patch foo2.diff \ ftp://my.ftp.org/foo/my.patch)
NOTE: Les patchs sans URL doivent se trouver dans le répertoire de travail. (dans notre exemple ~/kernel ).
Création de la config du kernel
Maintenant vous en avez fini avec le FrugalBuild mais il vous reste à faire une config .
Si vous en avez déjà une, mettez cette config dans le répertoire ~/kernel, dans le cas contraire faites juste:
touch ~/kernel/config
Maintenant lancez :
makepkg -Hgdu
Ceci va télécharger le tarball du kernel + vos patches.
cd src
et décompressez le tout (kernel, patches..etc)
cd linux-*
et patchez avec vos_patches.
Si vous aviez déjà une config, faîtes:
cp ../config .config && make oldconfig cp .config ~/kernel/config && cd ~/kernel && rm -rf src pkg
Si vous n'en aviez pas, faîtes:
make defconfig && make menuconfig
et créez votre config, sauvegardez la et :
cp .config ~/kernel/config && cd ~/kernel && rm -rf src pkg
OK maintenant nous avons ce qu'il faut et nous pouvons compiler le kernel.
Compilation du kernel
lancez
makepkg -Hcu
et attendez que le kernel soit compilé .
Utiliser votre tout nouveau kernel personalisé
Une fois terminé, vous aurez 3 fichiers *.fpm dans le répertoire ~/kernel.
En tant que root (ou avec sudo) faites:
pacman -U *.fpm
Une dernière chose avant de rebooter : vous devez ajouter une ligne pour votre kernel au fichier /boot/grub/menu.lst.
Comme :
title My New Cool RT Kernel - 2.6.20-multimedia-fw1 kernel (hd0,0)/boot/vmlinuz-2.6.20-multimedia-fw1 root=/dev/XXX ro vga=791
Sauvegardez le fichier et vous pourrez rebooter.
En cas de problèmes vous pourrez toujours rebootez sur l'ancien kernel et réparer les erreurs, ou demander sur le forum ou reporter un bug au mainteneur du kernel_patcheset.
Notes concernant les kernels rc ou git
Pour ce qui est des kernel rc ou git, vous pouvez les compiler également.
- Si vous voulez compiler le dernier patchset rt ( qui est pour le 2.6.21-rc6 au moment de l'écriture de ce tuto) ajoutez ceci au FrugalBuild :
_F_kernel_rc=X
Où X est le numéro RC. Exemple :
_F_kernel_rc=6
Ceci va compiler le kernel 2.6.21-rc6 + vos patches.
NOTE: Le kernel est toujours appelé 2.6.20.
La cause est que nous utilisons vanilla .20 + le patch rcX ( ce qui vous évitera de télécharger environ 40 Mo à chaque fois que vous compilez ou recompilez ce kernel )
- Si vous voulez le dernier kernel 'git' snaphot, alors ajoutez :
_F_kernel_git=X
Où X est le numéro git snapshot. Exemple:
_F_kernel_git=1
NOTE: Si vous compilez des kernels 'git', les 2 fonctions _F_kernel_rc=X et _F_kernel_git=X *need* doivent être présentes.
Dans cet exemple vous compilerez le kernel 2.6.21-rc6-git1
En espérant que cela vous aidera à compiler votre kernel perso.I
Retrouvez plus d'infos avec 'man kernel.sh' et la page des FrugalBuild pour kernel.