Kompilace kernelu v Linuxu pro lamy
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:
- The GNU Bourne Again shell (bash) - bash-2.05b-47.i586.rpm
- A GNU collection of binary utilities - binutils-2.15.90.0.1.1-31.i586.rpm
- A GNU general-purpose parser generator - bison-1.875-51.i586.rpm
- The C Preprocessor - cpp-3.3.3-41.i586.rpm
- A tool for creating scanners (text pattern recognizers) - flex-2.5.4a-293.i586.rpm
- Header and object files for development using standard C libraries - glibc-devel-2.3.3-98.i586.rpm
- A GNU tool which simplifies the build process for users - make-3.80-184.i586.rpm
- Header files and libraries for C++ development - libstdc++-devel-3.3.3-41.i586.rpm
- The GNU macro processor - m4-1.4o-622.i586.rpm
- The GNU cc and gcc C compilers - gcc-3.3.3-41.i586.rpm
- C++ support for gcc - gcc-c++-3.3.3-41.i586.rpm
- ncurses libraries - ncurses-5.4-61.3.i586.rpm
- ncurses development libraries - ncurses-devel.rpm
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 :-)
Hele prosímtě, co jsem podle tebe, pokud vůbec nerozumím článku pro lamy???
tak to je teda článeček, všechna čest!
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á :-)
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.
[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 ;)
[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ý.
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ě.
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.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...