Kompilacja j

Archiwalne, stare wpisy FAQ i HowTo Użytkowników
t1234k
Posty: 7
Rejestracja: 19 lutego 2010, 22:47

Kompilacja jądra 2.6.32.11

Post autor: t1234k »

W tym opisie zajmę się problematyką omówienia, skonfigurowania oraz skompilowania własnego jądra systemu Linux, opartego w głównej mierze o konfigurację jądra Debiana.

Zanim zabierzemy się do kompilacji jądra wykonajmy polecenie:

Kod: Zaznacz cały

uname -a
by sprawdzić jaką wersją jądra obecnie dysponujemy. Mój czysty Debian Lenny 504 daje taki wynik:

Kod: Zaznacz cały

Linux debian 2.6.26-2-686 #1 SMP Tue Mar 9 17:35:51 UTC 2010 i686 GNU/Linux
Zacznijmy od zainstalowania potrzebnych pakietów:

Kod: Zaznacz cały

apt-get --yes install kernel-package ncurses-dev zlib1g-dev fakeroot wget bzip2
 
Przejdźmy teraz do katalogu, w którym elegancja wymaga kompilować jądra:

Kod: Zaznacz cały

cd /usr/src
Teraz ze strony kernel.org, pobierzmy najnowsze stabilne jądro:

Kod: Zaznacz cały

 wget [URL]http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.11.tar.bz2[/URL]
Rozpakujmy je:

Kod: Zaznacz cały

tar xvjf linux-2.6.32.11.tar.bz2
Przejdźmy do rozpakowanego katalogu:

Kod: Zaznacz cały

cd linux-2.6.32.11
Jeżeli nie mamy doświadczenia w kompilowaniu własnych jąder, warto skorzystać z przygotowanych konfigów deweloperów Debiana, spis wszystkich konfigów można dostać na stronie http://merkel.debian.org/~jurij. Nam natomiast, posłuży konfig dedykowany dla naszej dystrybucji:

Kod: Zaznacz cały

 wget [url=http://merkel.debian.org/%7Ejurij/2.6.32-9/i386/config-2.6.32-3-686.gz]http://merkel.debian.org/~jurij/2.6.32-9/i386/config-2.6.32-3-686.gz[/URL]
Teraz go rozpakujmy:

Kod: Zaznacz cały

gunzip config-2.6.32-3-686.gz
Wpisujemy teraz w konsoli

Kod: Zaznacz cały

make menuconfig
Teraz, gdy pojawi nam się niebieski ekran zjeżdżamy na sam dół i wchodzimy przyciskając Enter w opcję

Kod: Zaznacz cały

Load an Alternate Configuration File
Pojawi nam się małe okienko, w które wpisujemy nazwę naszego pliku konfiguracyjnego, czyli

Kod: Zaznacz cały

config-2.6.32-3-686
i zatwierdzamy kolejny raz wciskając Enter. Od tej pory możemy zacząć wprowadzać własne zmiany w konfigu. Gdy ustawimy je zgodnie z naszymi potrzebami, pozostaje już tylko wyjść i zapisać zmiany: przechodzimy do opcji

Kod: Zaznacz cały

<_Exit_> 
i potwierdzamy wciskając Enter.

Jeżeli naszym oczom okazał się taki komunikat:

Kod: Zaznacz cały

#
# configuration written to config-2.6.32-3-686
#


*** End of Linux kernel configuration.
*** Execute 'make' to build the kernel or try 'make help'.
oznacza to, że zapisanie konfigu przebiegło pomyślnie i możemy teraz zabrać się za kolejny etap. Skoro mamy nasze jądro już skonfigurowane, to powinniśmy je skompilować. Robimy to wpisując kolejno:

Kod: Zaznacz cały

make-kpkg clean
fakeroot make-kpkg --revision=custom.1.0 kernel_image
Zostaniemy teraz zapytani o serię pytań, jeżeli nie mamy pewności co do wyboru opcji po prostu naciskajcie Enter, wówczas zostaną wybrane wartości domyślne.

Jeżeli podczas procesu kompilacji jądra pojawią się błędy, należy wpisać:

Kod: Zaznacz cały

make clean
a następnie poprawić nasz niedziałający config, wykonując jeszcze raz:

Kod: Zaznacz cały

make menuconfig
Jeżeli naszym oczom okaże się taki komunikat, oznacza to, że kompilacja przebiegła pomyślnie.

Kod: Zaznacz cały

chmod -R og=rX             /usr/src/linux-2.6.32.11/debian/linux-image-2.6.32.11
chown -R root:root         /usr/src/linux-2.6.32.11/debian/linux-image-2.6.32.11
dpkg --build               /usr/src/linux-2.6.32.11/debian/linux-image-2.6.32.11 ..
dpkg-deb: building package `linux-image-2.6.32.11' in `../linux-image-2.6.32.11_custom.1.0_i386.deb'.
make[2]: Leaving directory `/usr/src/linux-2.6.32.11'
make[1]: Leaving directory `/usr/src/linux-2.6.32.11'
Przechodzimy teraz do katalogu wyżej:

Kod: Zaznacz cały

cd ..
I instalujemy nasze nowo utworzone jądro:

Kod: Zaznacz cały

dpkg -i linux-image-2.6.32.11_custom.1.0_i386.deb
Teraz pozostaje nam jeszcze utworzenie ,,rozrusznika'' dla naszego jądra, bez niego nasze jądro nie wystartuje. W tym celu musimy wykonać polecenie:

Kod: Zaznacz cały

mkinitramfs -o /boot/inited.img-2.6.32.11 2.6.32.11
gdzie 2.6.32.11, odpowiada wersji jądra jaką używamy do tej pory i jaką zwraca komenda uname -a. Teraz musimy edytować plik:

Kod: Zaznacz cały

vi /boot/grub/menu.lst
a dla nowszych wersji

Kod: Zaznacz cały

vi /boot/grub/grub.cnf
Teraz trzeba dodać linijkę

Kod: Zaznacz cały

initrd /boot/inited.img-2.6.32.11
dla naszego jądra. Wszystko powinno wyglądać mniej więcej podobnie do poniższego:

Kod: Zaznacz cały

title   Debian GNU/Linux, kernel 2.6.32.11
root    (hd0,0)
kernel    /boot/vmlinuz-2.6.32.11 root=/dev/sda1 ro quiet
initrd          /boot/inited.img-2.6.32.11

title   Debian GNU/Linux, kernel 2.6.32.11 (single-user mode)
root    (hd0,0)
kernel    /boot/vmlinuz-2.6.32.11 root=/dev/sda1 ro single
initrd          /boot/inited.img-2.6.32.11
Teraz musimy zresetować maszynę wpisując:

Kod: Zaznacz cały

shutdown -r now
Jeżeli nasz komputer się uruchomi, a po zalogowaniu i wpisaniu uname -a, pojawi się mniej więcej taki wpis:

Kod: Zaznacz cały

Linux debian 2.6.32.11 #3 SMP Sun Apr 11 12:30:53 EDT 2010 i686 GNU/Linux
Oznacza, że wszystko wykonaliśmy poprawnie, a system działa na nowym jądrze.

Uwaga:
Niektóre polecenia wymagają uprawnień administratora systemu - root.

Oryginalny artykuł: http://www.4unix.pl/debian/kompilacja-w ... jadra.html
Zablokowany