Kompilacja Kernela

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 ;)

Hosting @mc2 || Copyright © 2018 FreeBSD - Inside. Wszelkie prawa zastrzeżone.