Vlastní jádro v Debianu

10.01.2005, 0:00
Poslední změna: 03.02.2009, 0:00

Úvod

Binární jádro dodávané přímo v Debianu je funkční a rychlé, ale člověk často potřebuje nějaký ovladač nebo vlastnost, která ve standardním jádře zakompilovaná není. Anebo jen chce mít jádro „šité na míru“, ať už pro lepší pocit, úsporu místa nebo trošku vyšší výkon. Tento návod by vám měl pomoci s překladem jádra řady 2.6.x v Debianu.

Návod je zaměřen na kompilaci originálního jádra z kernel.org pomocí nástrojů Debianu. Akce označené příkazem sudo je třeba provádět jako root. Ostatní příkazy doporučuji spouštět pod účtem uživatele. Zdrojové kódy umístíme do adresáře src v home adresáři uživatele a jádro budeme konfigurovat a překládat zde.

Požadované balíčky

Potřebovat budeme kompilátor gcc a základní utility jako wget, tar, bzip2, patch, make apod. Předpokládám, že jsou nainstalované.

Debianí nástroje pro práci s kernelem se nachází v balíčku kernel-package, potřebovat budeme také fakeroot.

Zprovoznění grafické konfigurace voleb jádra (příkaz make xconfig) vyžaduje vývojový balíček knihovny Qt3 – libqt3-mt-dev. Alternativou je příkaz make menuconfig, pak stačí libncurses5-dev.

sudo apt-get install kernel-package fakeroot libqt3-mt-dev

Získání zdrojových kódů jádra

Na webu kernel.org vybereme verzi jádra a stáhneme archív se zdrojovými kódy. Kompletní archív poslední stabilní verze jádra se ukrývá pod písmenem F na prvním řádku. Stáhneme jej a rozbalíme.

Jako pomůcku si zavedeme proměnnou kver s verzí jádra, kterou budeme používat.

export kver=2.6.28.3
cd ~/src
wget "http://kernel.org/pub/linux/kernel/v2.6/linux-$kver.tar.bz2"
tar xjf linux-$kver.tar.bz2

Patche

Podle potřeby můžeme na jádro aplikovat různé patche. Jako příklad uvedu patchset tp_smapi pro laptopy ThinkPad.

tar xzf tp_smapi-0.40.tgz
cd tp_smapi-0.40
make patch KVER=$kver KSRC=~/src/linux-$kver KBUILD=~/src/linux-$kver
patch -p1 -d ~/src/linux-$kver < tp_smapi-0.40-for-$kver.patch

Konfigurační volby

Nyní již můžeme jádro nakonfigurovat a přeložit. Napoprvé určitě nebude jádro fungovat tak, jak bychom chtěli, takže tento postup několikrát zopakujeme :-) Jako výchozí bod použijeme konfiguraci běžícího jádra.

cd ~/src/linux-$kver
cp /boot/config-`uname -r` ./.config
make-kpkg --config xconfig configure

Otevře se okno s volbami jádra. Vybereme vše, co potřebujeme. Zaškrtnuté políčko znamená, že součást bude zakompilována přímo do jádra, puntík označuje modul.

Chceme-li získat jádro bez zaváděcího ram disku (initrd), musíme přímo do jádra zakompilovat vše, co je potřeba k načtení souborů z hlavního oddílu disku. Tedy souborový systém, řadič disku apod. V tomto případě vynecháme volbu --initrd při spouštění překladu.

Překlad a instalace jádra

Následující příkaz spustí proces překladu jádra a jeho zabalíčkování pro Debian. Volby --append-to-version a --revision si upravíme podle vlastních představ. První volba přidá řetězec k verzi jádra, například 2.6.28.3-tp1. Tím jednoznačně odlišíme naše jádro od jader distribučních a umožníme instalaci více jader zkompilovaných ze stejné verze zdrojových kódů. Druhá volba nastavuje revizi balíčku. Změníme-li později pouze revizi, bude možné dříve nainstalované jádro upgradovat na nové.

Proměnnou CONCURRENCY_LEVEL nastavíme podle počtu jader, na kterých má překlad probíhat.

make-kpkg -j2 --rootcmd fakeroot --append-to-version=-tp1 --revision=1 \
--initrd kernel_image modules_image kernel_headers

Pokud nedojde k chybě, vzniknou o adresář výše balíčky linux-image-(verze).deb a linux-headers-(verze).deb. Balíčky nainstalujeme.

sudo dpkg -i ~/src/linux-image-$kver-tp1_1_amd64.deb \
  ~/src/linux-headers-$kver-tp1_1_amd64.deb

A to je vše. V zavaděči Grub se objeví nová položka a po restartu můžeme nabootovat s vlastnoručně vytvořeným jádrem. Nepotřebné jádro je možné odinstalovat jako každý jiný balíček.

Vyčištění zdrojového stromu jádra

Před opětovným překladem s novou konfigurací je vhodné vyčistit strom zdrojových kódů. To provedeme následujícím příkazem.

make-kpkg clean

Soubor .config s nastavením zůstane nedotčen, ostatní se uvede do původního stavu.

Odkazy