Kompilacja Kernela
Wpisany przez crash
sobota, 27 sierpnia 2005 19:08
Artykul ten ukazuje prostote kompilowania wlasnego jajka ( kernel'a ).
Nie jest to proces trudny, raczej jest to proces czasochlonny
w zaleznosci od tego na jakiej maszynie pracujemy, na marzynie
powiedzmy z dwoma procesorami i 1GB pamieci bedzie to okolo
15min, na 500MHz trwa to okolo 40 min.
Caly proces kompilacji bedzie opisany na podstawie maszyn z
procesorem 32-bitowym, gdyz jest ona najczesciej spotykana z
malymi wstawkami dla porownania jezeli chodzi o innej klasy
maszyny. Skladnia pliku konfiguracyjnego jest dosc prosta i
przejrzysta.
Opcje jakie zawiera w pliku domyslnym czyli GENERIC to:
machine - jest to okreslnie architekture naszego procesora, najczesciej jest to i386, natomiast dla amd-64 jest to amd64.
cpu - okresla klase procesora, I586_CPU jest to najzwyklejszy
pentium, I686_CPU jest to Pentium Pro, lub inne wyzsze procesory
( rowniez AMD ), dla amd-64 jest to HAMMER
ident - w jaki sposob bedzie rozpoznawany nasz kernel
oraz
options - sa to opcje jakie w kernel wkompilujemy
device - urzadzenia jakie wkompilujemy
Po zainstalowaniu kernela, w 4.x kernel bedzie w glownym katalogu
pod nazwa kernel, natomiast jego poprzednik zmieni nazwe na
kernel.old, w 5.x kernel znajduje sie w /boot/kernel i analogicznie po
zainstalowaniu zmieni nazwe na kernel.old.
Po krotkiej lekcji zapoznawczej z plikiem konfiguracyjnym przejdzmy do samego procesu kompilacji.
Wchodzimy do katalogu
[root@lame ~]#cd /usr/src/sys/i386/conf
dla 32-bitowej maszyny tak ja zaznaczylem wczesniej. W katalogui znajduja sie miedzy innymi pliki
GENERIC,
NOTES [ seria 5.x FreeBSD ] lub
LINT [ seria 4.x FreeBSD ], w momecie jak nie istnieje LINT mozna bardzo latwo go stworzyc:
[root@lame /usr/src/sys/i386/conf]#make LINT
[root@lame /usr/src/sys/i386/conf]#file LINT
LINT: ASCII text
Tak wiec jak potrzebujemy go, to mamy ;) W pliku tym sa opisane wszystkie dostepne opcje dla kernela.
Przejdzmy do dalszej czynnosci, chcemy dodac jakas opcje na przyklad obsluge VGA VESA [ karty graficzne ]
Mozemy dodac to do pliku GENERIC, ale lepiej bedzie jak zmienimy sobie nazwe np. BEGIN
[root@lame /usr/src/sys/i386/conf]#cp GENERIC BEGIN
Teraz dodajemy nasza opcje
[root@lame /usr/src/sys/i386/conf]#echo "options VESA" >>BEGIN
Mamy juz nowa konfiguracje naszego nowego jajka, tak wiec mozemy przystapic do kompilacji.
{mosgoogle center}
Sa dwie metody kompilowania jajka [ wiadomo stara i nowa ;) ]
1.
[root@lame /usr/src/sys/i386/conf]#config BEGIN
dla 4.x
[root@lame /usr/src/sys/i386/conf]#cd ../../compile/BEGIN
dla 5.x
[root@lame /usr/src/sys/i386/conf]#cd ../compile/BEGIN
Nastepnie,
[root@lame /usr/src/sys/[i386/]compile]#make depend install all
lub jak ktos nie lubi skrotow
[root@lame /usr/src/sys/i386/conf]#make depend && make install && make all
No i teraz czekamy.
2.
Drugi sposob jest troszeczke szybszy od poprzedniego, wchodzimy w katalog:
[root@lame /usr/src/sys/i386/conf]#cd /usr/src
i klikamy
[root@lame /usr/src]#make buildkernel KERNCONF=BEGIN
Czekamy az sie skompiluje, nastepnie
[root@lame /usr/src]#make installkernel KERNCONF=BEGIN
to juz pojdzie dosc szybko i na koniec w pierwszym i drugim sposobie
[root@lame /usr/src]#reboot
Po pomyslnym uruchomieniu systemu sprawdzamy czy jest nasze jajeczko poleceniem
uname -a
I cieszymy sie ze sie udalo ;)