Kompilace kernelu v Linuxu pro lamy

MyEgo.cz

home foto blogy mywindows.cz kontakt

Kompilace kernelu v Linuxu pro lamy

Linux 26.09.04
kernel

Kompilace kernelu na Linuxu je věc povinná. Dá se sice fungovat s kernelem, který byl dodán s Vaší distribucí, nicméně, ten je kompilován pro i386 bez zvláštních optimalizací a obsahuje mraky ovladačů pro hardware, který jste nikdy ani neviděli. Tudíž, takovýto kernel je pomalý (relativně, pořád je rychlejší než Windows XP), a méně stabilní (jsou tam věci, které nepotřebujete).

Tento článek chce přinést lamám návod, jak si kernel překompilovat.

Nejdříve budete potřebovat nějakou Linuxovou distribuci. Řekněme, že třeba SuSE 9.1 Personal.

Protože v této distribuci nejsou žádné vývojářské nástroje, budete si je muset stáhnout. Zde je to, co potřebujete:

Instalovat tyto knihovny můžete bud přes rpmi -i název_souboru.rpm, nebo tak, že na ně kliknete v Konqueroru, a potvrdíte jejich instalaci.

Potom je nutné si stáhnout kernel z kernel.org, aktuální verze je 2.6.8.1 a má asi 35MB (zabalená bzip2).

Po stažení se přihlašte jako root a kernel rozbalte:

su
cd /usr/src
tar jxvf linux-2.6.8.1.tar.bz2
ln -s linux-2.6.8.1 linux
cd linux

Teď máte zdrojáky kernelu v /usr/src/linux. Následně je velice vhodné přistoupit k záloze Vašeho stávajícího kernelu, pokud něco dopadne při Vašich pokusech špatně, můžete vždy nabootovat kernel stávající. V následujícím příkazu přepište číslo 2.6.4-52 na verzi Vašeho kernelu (pokud máte SuSE 9.1, tak by to mělo být toto; předpokládám, že máte grub jako loader, pokud ne, tak dejte pryč lilo a nahraďte je grubem, umí toho více a je komfortnější)…

cd /boot
ls
ln -s initrd-2.6.4-52 initrd2
ln -s vmlinuz-2.6.4-52 vmlinuz2

Tímto vytvoříte symbolické odkazy, na které se odkážete v grub konfiguraci. Soubory initrd a vmlinuz budou při instalaci nového kernelu nahrazeny, proto ta dvojka na konci odkazů.

Následně si spusťte mc, nebo třeba vim, a zeditujte soubor /boot/grub/menu.lst. Uvidíte tam něco takovéhoto:

title Linux
    kernel (hd1,1)/boot/vmlinuz root=/dev/hdb2 desktop resume=/dev/hdb1 showopts
    initrd (hd1,1)/boot/initrd

Tak to tam ponechte, jen to mírně zmodifikujte, a doplňte novou sekci:

title Linux NEW
    kernel (hd1,1)/boot/vmlinuz root=/dev/hdb2 desktop resume=/dev/hdb1 showopts
    initrd (hd1,1)/boot/initrd

title Linux OLD
    kernel (hd1,1)/boot/vmlinuz2 root=/dev/hdb2 desktop resume=/dev/hdb1 showopts
    initrd (hd1,1)/boot/initrd2

Pod Linux NEW budete mít nový kernel, a pod Linux OLD Váš dosavadní kernel v boot menu.

Nyní se tedy můžete pustit do konfigurace a kompilace kernelu.

cd /usr/src/linux
make clean
make menuconfig

Zobrazí se Vám komfortní textové menu, ve kterém budete moci odpovědět asi na 1.000 otázek, týkajících se Vašeho kernelu a hardware. Nastavte si zde typ CPU, vyhoďte veškeré drivery které nepotřebujete, prostě s tím stravte 30-40 minut. Klávesa Esc nabídne uložení, ovšem 2x Esc vyskočí bez uložení, i po 30 minutách práce, takže… opatrně ;-)

Až jste s konfigurací spokojeni, můžete kernel kompilovat, nejdříve je ale vhodné ještě nastavit parametry kompilátoru. Pro moje P-IV/HT je vhodná tato kombinace:

export CFLAGS="-march=pentium4 -mfpmath=sse
  -msse2 -O2 -pipe -s -fomit-frame-pointer"

Pokud máte jiný CPU, podívejte se na kompilační parametry gcc a nalezněte si ty svoje.

Kompilace:

make

Instalace modulů a nového kernelu:

make modules_install
make install

To je celé! Máte instalován zbrusu nový kernel, včetně zachování toho starého :-)


Komentáře

  1. 1 Andy 26.09.04, 12:09:40
    FB

    Hele prosímtě, co jsem podle tebe, pokud vůbec nerozumím článku pro lamy???

  2. 2 FantomMax 26.09.04, 12:09:49
    FB

    tak to je teda článeček, všechna čest!

  3. 3 Jiří Macich ml. 26.09.04, 01:09:28
    FB

    Super, ale asi o půl roku později než bych potřeboval. Závidím dnešním začátečníkům, že se při své první kompilaci kernelu na míru tolik nezapotí jako já :-)

  4. 4 llook 26.09.04, 02:09:44
    FB

    Ne každá distribuce podporuje i386. Běžně bývá i486 nebo i586, protože s třiosmšestkama se už moc nepočítá (zvláště u desktopových distribucí). Je fakt, že zkompilovat na míru je ale lepší.
    Nevím, kolik lam ten článek pochopí. Pokud o někom předpokládáme, že nezvládne přečíst si README ke kernelu, nemůžeme moc předpokládat, že se vyzná v konfiguraci grubu.

  5. 5 Radek Hulán 26.09.04, 02:09:54
    FB

    [4] ale jo, jenže.. i586 je oproti P-IV/HT či Athlonu64 někde jinde.. Jinak, tento návod radí i jak upravit onen grub ;)

  6. 6 llook 26.09.04, 04:09:41
    FB

    [5] No dobře, ale která lama ví, co je to (hd1,1) apod. (zvlášť pokud na radu v článku smazala lilo a grub vidí poprvé v životě)? Co když zrovna na (hd1,1) má windows?
    Ale pokud to lamu aspoň nakopne zajímat se o podobné věci, pak je článek přínosný.

  7. 7 PJ 26.09.04, 07:09:03
    FB

    Sakryš, já proti tomu Linuxu nic nemám, ale jako člověk pohodlný a líný dělat cokoliv nad rámec nezbytně nutného musím říct, že raději jednou nainstaluju XP a mám pokoj.

    Nějaký kernel... Ať si tam je, když funguje (jakože funguje), proč bych do něho rýpal. Ano, všiml jsem si, že to není článek o jádru XP, ale myslím to tak nějak obecně.

  8. 8 Pavel@cetoraz 26.09.04, 07:09:35
    FB

    Nejsem vyhraněným zastáncem povinné kompilace jádra. Spíš tak, když má někdo silný stroj, ať si to zkompiluje, ale pokud je lama, ať si tak maximálně přes rpm -ihv nainstaluje updatovanou verzi jádra. Grub se mu upraví automaticky a (v podstatě) nemůže nic zkazit.

  9. 9 Lenin 15.06.05, 03:06:57
    FB

    Mam dojem ze pro lamu bude nejvetsi problem s nastavenim jadra a domnivam se ze formulace "Nastavte si zde typ CPU, vyhoďte veškeré drivery které nepotřebujete, prostě s tím stravte 30-40 minut." je jaksi nicnerikajici...