Kompilace jádra ve zkratce

Založil Petr Slunský, 01. 02. 2009, 16:30:10

Předchozí téma - Další téma

Petr Slunský

Ahoj, psali jste, abych sem vylepil návod na kompilaci jádra. Na netu je jich sice dost, ale budiž. Příklad používá jako vzor jádro 2.6.20. Upravte na aktuální jádro.

Edit:
Předpoklady pro kompilaci:
sudo aptitude install build-essential kernel-package libncurses5 libncurses5-dev cpp gcc fakeroot


Pro případ, že nepoužíváte "sudo", tak příkaz "aptitude install..." vyvolat jako superuživatel

Kompilace kernelu

1. stáhnout kernel a poslední patch (například níže, postupem času budou jistě novější)

Code:
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2
wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-2.6.20.1.bz2

2. zkonfigurovat kernel


Nejdříve rozbalit do src adresáře
Code:
cd /usr/src
tar jxf /path/to/linux-2.6.20.tar.bz2


Aplikovat patch
mv linux-2.6.20/ linux-2.6.20.1
cd linux-2.6.20.1/

...na zkoušku
bzcat /path/to/patch-2.6.20.1.bz2 | patch -p1 --dry-run

... a pokud nejsou chyby, tak naostro
bzcat /path/to/patch-2.6.20.1.bz2 | patch -p1


zkopírovat aktuální .configuraci z běžícího kernelu
cp /boot/config-$(uname -r) .config

make menuconfig

... po zkonfigurování
fakeroot make-kpkg clean

fakeroot make-kpkg --append-to-version "<-suffix>" --revision "<revision#>" --us --uc --initrd kernel_image kernel_headers


a pak už jen naistalovat.
Debian

Erich Stark

Niekde som čítal že pred kompiláciou treba doinštalovať aj nejaké ďalšie balíky a knižnice, je to tak?
" The box said that I needed to have Windows XP or better ... so I installed Debian ."

Ahmul

Jaký je správný postup, pokud chci aplikovat nový patch? Doposud jsem to řešil smazáním celého zdrojáku a převedením situace na předchozí případ.


Xgamer

Ja mám pocit že treba nainštalovať baličky fakeroot build-essential a ešte dačo to si už nespominam:D
Scio me nihil scire.

Jakub Lucký

Tady by mě zajímalo, jak si pak s celou věcí poradí module-assistant, protože s ním instaluju docela dost důležitých věcí
Developers, developers, developers, developers, developers!

Petr Slunský

Citace od: Erich Stark kdy 01. 02. 2009, 17:09:02
Niekde som čítal že pred kompiláciou treba doinštalovať aj nejaké ďalšie balíky a knižnice, je to tak?

Pro úspěch je třeba splnit předpoklady, tj. mít v systému nainstalováno:

apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
Debian

Petr Slunský

Citace od: Ahmul kdy 02. 02. 2009, 09:37:09
Jaký je správný postup, pokud chci aplikovat nový patch? Doposud jsem to řešil smazáním celého zdrojáku a převedením situace na předchozí případ.



Můj názor je takový, že pokud je patch aplikovatelný proti stejnému zdroji, tak jej samozřejmě aplikovat jde i bez mazání a převodu na předchozí stav. Dělal jsem si tak tickless jádro s hpet a dalšími věcmi pomocí několika patchů.
Postup je vždy stejný, např. ten, co jsem popsal výše.
Debian

Ahmul

CitaceMůj názor je takový, že pokud je patch aplikovatelný proti stejnému zdroji, tak jej samozřejmě aplikovat jde i bez mazání a převodu na předchozí stav. Dělal jsem si tak tickless jádro s hpet a dalšími věcmi pomocí několika patchů.
Postup je vždy stejný, např. ten, co jsem popsal výše.

Myšlena byla spíše situace, kdy vyjde jádro, např. 2.6.28. Člověk nakonfiguruje, zkompiluje a beží na něm. Pak vyjde první oprava. Nikde se nic nemaže, aplikuje se patch, udělá se clean, zkompiluje a jede se. Pak vyjde druhá oprava a tady je problém, protože mám dojem, že ta je oproti původnímu stromu. Takže to řeším právě smazáním celého zdrojáku a převedením na předchozí problém, než se snažit revertovat předchozí opravu.

Petr Slunský

patche jsou kumulativní. vyzkoušel bych dry-run a viděl bych jestli to prošlo. 2x provedená stejná změna může znamenat stejný výsledek, a nové změny se aplikují v pořádku.
Debian

Ahmul

Výňatek z README ve zdrojácích kernelu

Citace
94    Unlike patches for the 2.6.x kernels, patches for the 2.6.x.y kernels
95    (also known as the -stable kernels) are not incremental but instead apply
96    directly to the base 2.6.x kernel.

Ale jak se píše dále v dokumentaci, tak existují jak patche oproti základnímu stromu, tak inkrementální patche
alias
ftp://ftp.kernel.org/pub/linux/kernel/v2.6/incr
místo
ftp://ftp.kernel.org/pub/linux/kernel/v2.6/
Takže odteď alespoň vím, které patche si mám stahovat:)

Petr Slunský

myslím, že je to to, co jsem psal. Patche nejsou přírůstkové (incremental) ale souhrnové (kumulativní) a aplikují se vždy proti základnímu stromu. Ale to jistě víte. :)
Debian

Erich Stark

Inak nedalo by sa do jadra nejak zakompilovat hned aj ovladac na grafiku?
" The box said that I needed to have Windows XP or better ... so I installed Debian ."

tom.i

Ja bych se chtel zeptat na jednu vec, kdyz si zkompiluji vanilku (2.6.28 napr.) kdyz do nej budu chtit pridat bezpecnostni aktualizace, ktere vychazeji, nebo dokazal by mi nekdo vysvetlit jak je to s bezpecnostnimi aktualizacemi a jejich implementacemi do vanila kernelu? Je to presne jak je tu napsano?
Diky.
HP 6715b, 2 GB RAM, TL-60 Turion64 X2, 2 GHz, ATI X1250, 15,4" 1680x1050, Debian Lenny 64bit, KDE 4.2

Jakub Lucký

Citace od: tom.i kdy 08. 02. 2009, 09:47:59
Ja bych se chtel zeptat na jednu vec, kdyz si zkompiluji vanilku (2.6.28 napr.) kdyz do nej budu chtit pridat bezpecnostni aktualizace, ktere vychazeji, nebo dokazal by mi nekdo vysvetlit jak je to s bezpecnostnimi aktualizacemi a jejich implementacemi do vanila kernelu? Je to presne jak je tu napsano?
Diky.

Takto nainstalovaný kernel si musíte aktualizovat sám... Tedy sledovat chyby a když se objeví, tak stáhnout patch, aplikovat, překompilovat, rebootovat
Developers, developers, developers, developers, developers!

Erich Stark

Dnes som sa pokusal kompilovat kernel ale ani som sa tam nedostal..je to dost zlozite :(
" The box said that I needed to have Windows XP or better ... so I installed Debian ."