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.
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.
Przejście do konfiguracji kernela:
make-kpkg --config menuconfig
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
dpkg -i ../linux-*deb
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
|
![]() |
|