Start/microHowto/Debian Sarge Kernel Linux

Kompilacja własnego kernela

Przejście do katalogu /usr/src

cd /usr/src

Pobranie źródeł kernela

wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.6.tar.bz2

Pobranie łaty IMQ

wget http://www.linuximq.net/patchs/linux-2.6.20-imq.diff

Instalacja pakietu potrzebnego do stworzenia paczki z kernelem (kernel-package), pakietu niezbędnego do wykonania polecenia konfiguracji kernela make menuconfig (libncurses5-dev) oraz pakietu potrzebnego do rozpakowania archiwum bzip2 (bzip2)

apt-get install kernel-package libncurses5-dev bzip2

Rozpakowanie źródeł kernela

tar -xjf linux-2.6.20.6.tar.bz2

Przejście do katalogu ze źródłami:

cd linux-2.6.20.6

Skopiowanie działającej aktualnie konfiguracji kernela:

cp /boot/config-`uname -r` .config

Uwaga! jeśli działającym kernelem jest kernel dystrybucyjny, to większość składników jądra jest skonfigurowana jako moduły, dlatego jeśli nie planujemy użyć initrd, należy wszystkie niezbędne do uruchomienia komputera składniki (obsługa kontrolera dysków, systemu plików itp) wkompilować na stałe.

Patchowanie

Test nakładania łaty IMQ (lepiej wiedzieć że się nie uda, szczególnie jeśli zechcemy dołożyć jeszcze inne łaty):

patch --dry-run -p1 <../linux-2.6.20-imq.diff

Jeśli nie nastąpił błąd (tzn. dostaliśmy same komunikaty patching file..., i Hunk #x succeded...) to możemy wykonać właściwe nałożenie łaty IMQ:

patch -p1 <../linux-2.6.20-imq.diff
patching file drivers/net/Kconfig
patching file drivers/net/Makefile
Hunk #1 succeeded at 121 (offset 2 lines).
patching file drivers/net/imq.c
patching file include/linux/imq.h
patching file include/linux/netfilter_ipv4/ipt_IMQ.h
patching file include/linux/netfilter_ipv6/ip6t_IMQ.h
patching file include/linux/skbuff.h
Hunk #1 succeeded at 276 with fuzz 2 (offset 5 lines).
patching file net/core/skbuff.c
Hunk #1 succeeded at 428 with fuzz 2 (offset 15 lines).
Hunk #2 succeeded at 496 (offset 19 lines).
patching file net/ipv4/netfilter/Kconfig
Hunk #1 succeeded at 508 (offset 19 lines).
patching file net/ipv4/netfilter/Makefile
Hunk #1 succeeded at 81 (offset 1 line).
patching file net/ipv4/netfilter/ipt_IMQ.c
patching file net/ipv6/netfilter/Kconfig
patching file net/ipv6/netfilter/Makefile
patching file net/ipv6/netfilter/ip6t_IMQ.c
patching file net/sched/sch_generic.c

Sprawdzenie czy patch nie został odrzucony (jak nie chce nam się czytać powyższych komunikatów;)

find . -name "*.rej"

Jeśli nic się nie pokaże, to ok. Jeśli pojawiły się pliki .rej, należy obejrzeć zawartość takiego pliku i ręcznie poprawić odpowiedni plik.

Konfiguracja

Przejście do konfiguracji kernela:

make-kpkg --config menuconfig

Kompilacja kernela

make-kpkg kernel-image kernel-headers --append-to-version -mojkernel --revision 1.0

lub gdy chcemy wykorzystać initrd

make-kpkg kernel-image kernel-headers --initrd --append-to-version -mojkernel --revision 1.0

Instalacja

dpkg -i ../linux-*deb

Rekompilacja

Jeśli nam sie za 1 razem nie powiedzie .config to możemy rekompilacje zrobić

make-kpkg clean
make-kpkg kernel-image --append-to-version -mojkernel --revision 1.1

LiNiO 2006.02.17 / qel 2007.04.12


Google Polska Encyklopedia sieciowa
Asterix - Debian Wiki