Strona 1 z 1

[+] jądro 2.6.32.10 z łatą grsec wysypuje sie podczas kompilacji

: 21 marca 2010, 02:55
autor: bryn1u
Witam.

Mam taki problem. Nałożyłem łatę na ta wersję jajka 2.6.32.10. Korzystałem z tego opisu.

Kod: Zaznacz cały

apt-get update
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
Mamy już wszystko czego potrzebujemy do poprawnej kompilacji, czas zabrać się za pobranie ze strony http://www.kernel.org najnowszej stabilnej wersji jądra. W naszym przypadku jest to jądro 2.6.27.7.

Kod: Zaznacz cały

wget -c [url]http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.7.tar.bz2[/url]
Jak widzimy warto jest ściągnąć wersję w formacie .tar.bz2 z tego względu, że jest to dobrze skompresowane archiwum i ściąganie trwa krócej.

Gdy mamy już nasze jajeczko w najnowszej wersji przenosimy je do katalogu /usr/src i wypakowujemy je następującym poleceniem:

Kod: Zaznacz cały

tar xvjf linux-2.6.27.7.tar.bz2
Następnie tworzymy dowiązanie symboliczne:

Kod: Zaznacz cały

ln -s linux-2.6.27.7.tar.bz2 linux
Przechodzi do katalogu /usr/src/linux i wykonujemy następująco:

Kod: Zaznacz cały

make clean && make mrproper
cp /boot/config-`uname -r` ./.config
Drugie polecenie spowoduje wczytanie pliku konfiguracyjnego aktualnie używanego jądra do poprawnej kompilacji nowej wersji jądra.

Kompilację uruchamiamy poprzez dowolny program (oczywiście do tego przeznaczony), ja posłużyłem się tutaj narzędziem menuconfig.

Kod: Zaznacz cały

make menuconfig
Zaznaczamy pole:

Kod: Zaznacz cały

Load an Alternate Configuration File
spowoduje to wczytanie pliku .config.

Gdy wszystko pójdzie bez najmniejszego problemu, najeżdżamy na pole ,,Exit'', zostaniemy zapytani, czy chcemy zapisać nową konfiguracje jądra:

Kod: Zaznacz cały

Do you wish to save your new kernel configuration?
oczywiście zgadzamy się na to i wybieramy pole ,,Yes''.

Do zbudowania nowej wersji jądra wydajemy jeszcze dwa polecenia:

Kod: Zaznacz cały

make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
Trochę to trwa w zależności od szybkości naszego komputera. Na moim sprzęcie tj. procesor 2.4gHz, 1GB pamięci ramu zajęło to około 30 minut. Gdy wszystko wykona się bez problemu powinniśmy w katalogu /usr/src zobaczyć dwie paczki .deb.

Kod: Zaznacz cały

ls
linux-headers-2.6.27.7-custom_2.6.27.7-custom-10.00.Custom_i386.deb
linux-image-2.6.27.7-custom_2.6.27.7-custom-10.00.Custom_i386.deb
Ostatnią rzeczą jaka musimy wykonać jest instalacja nowego jądra w naszym systemie.

Kod: Zaznacz cały

dpkg -i linux-image-2.6.27.7-custom_2.6.27.7-custom-10.00.Custom_i386.deb
dpkg - i linux-headers-2.6.27.7-custom_2.6.27.7-custom-10.00.Custom_i386.deb
Doszedłem do momentu:

Kod: Zaznacz cały

fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
Po jakimś czasie wysypuje mi się z takim o to komunikatem:

Kod: Zaznacz cały

make[1]: Entering directory `/usr/src/linux-2.6.32.10'
  CHK     include/linux/version.h
  CHK     include/linux/utsrelease.h
  SYMLINK include/asm -> include/asm-x86
  CALL    scripts/checksyscalls.sh
  Building modules, stage 2.
  MODPOST 1848 modules
WARNING: modpost: Found 22733 section mismatch(es).
To see full details build your kernel with:
'make CONFIG_DEBUG_SECTION_MISMATCH=y'
make[1]: Leaving directory `/usr/src/linux-2.6.32.10'
/usr/bin/make  EXTRAVERSION=.10-custom  ARCH=i386 \
                             -C Documentation/lguest
make[1]: Entering directory `/usr/src/linux-2.6.32.10/Documentation/lguest'
cc -m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -I../../include -I../../arch/x86/include -U_FORTIFY_SOURCE    lguest.c   -o lguest
lguest.c:21:25: error: sys/eventfd.h: No such file or directory
lguest.c:37:18: error: zlib.h: No such file or directory
lguest.c: In function âcreate_threadâ:
lguest.c:1027: warning: implicit declaration of function âeventfdâ
make[1]: *** [lguest] Error 1
make[1]: Leaving directory `/usr/src/linux-2.6.32.10/Documentation/lguest'
make: *** [debian/stamp/build/kernel] Error 2
Może mi ktoś powiedzieć co mu dolega i co mu się nie podoba. Ewentualnie jak rozwiązać ten problem.

Z góry dziękuję. Pozdrawiam.

: 21 marca 2010, 12:10
autor: fnmirk
Wykonałeś aktualizację systemu i zainstalowałeś odpowiednie pakiety wymagane do budowy pakietu deb?

Spróbuj zbudować pakiet jądra dystrybucyjnego na podobnej zasadzie.
http://debian.linux.pl/threads/16688-ip ... post107471

: 21 marca 2010, 14:56
autor: db
Na niektórych wersjach kernel-package problem z lguest jest znany.
Rozwiązanie: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=531583.
Brakuje Ci -- między innymi -- zlib1g-dev.
Polecam też edytować Documentation/lguest/lguest.c i usunąć:

Kod: Zaznacz cały

#include <sys/eventfd.h>

: 21 marca 2010, 16:52
autor: bryn1u
Dziękuję rzeczywiście tego nie było. Nie rozumiem jednej rzeczy skoro wczoraj kompilowałem i błąd wyskoczył dopiero pod koniec, a dzisiaj robię dokładnie to samo tylko, że od nowa. Konfig ten sam wszystko to samo i dostaje takie coś.

Może tutaj ktoś pomoże. Na dug.net kolega ma ten sam problem i nie wiemy co dalej robić. Jest to możliwe, żeby to była wina grsec?

Kod: Zaznacz cały

net/ipv4/tcp_minisocks.c: In function  âtcp_check_reqâ:
net/ipv4/tcp_minisocks.c:681: error:  âgrsec_enable_blackholeâ undeclared (first use in this function)
net/ipv4/tcp_minisocks.c:681:  error: (Each undeclared identifier is reported only once
net/ipv4/tcp_minisocks.c:681:  error: for each function it appears in.)
make[3]: ***  [net/ipv4/tcp_minisocks.o] Error 1
make[2]: *** [net/ipv4] Error 2
make[1]:  *** [net] Error 2
make[1]: Leaving directory  `/usr/src/linux-2.6.32.10'
make: *** [debian/stamp/build/kernel]  Error 2
Rozwiązanie.

Jedna osoba podała to na forum. Sprawdziłem u siebie i działa rzeczywiście.

Trzeba zaznaczyć opcje w Grsecurity->Network Protections-> TCP/UDP blackhole.