18 lipca 2011

Kompilacja jądra - Linux

Kompilacja jądra - Linux

Autorem artykułu jest RatujPC



Jądro (ang. kernel) jest główną częścią systemu Linux. Pierwsze jądro zostało stworzona przez Linusa Torwaldsa. Obecnie rozwijane jest przez ludzi z całego świata.

Teraz z każdą dystrybucją Linuksa dostajemy gotowe, skompilowane "fabrycznie" jajko. Nadchodzi moment kiedy musimy samemu skompilować jego najnowszą wersję. Kiedy samemu je kompilujemy możemy odrzucić niepotrzebne funkcje, czym przyśpieszymy jego działanie oraz zmniejszymy rozmiary. Nowsze wersje przeważnie posiadają nowe sterowniki, poprawione błędy i więcej funkcji. Własnoręczna kompilacja jest zalecana, gdyż jądra gotowe są raczej przygotowane pod kątem wieleplatformowości, a nie szybkości.

Najpierw musimy zdobyć najnowszą wersję jajka. Najlepszym miejscem w sieci jest serwer ftp ftp://ftp.pl.kernel.org"/. Jeżeli łączymy się za pomocą modemu nie jest dobrym
pomysłem ściągać je z sieci, gdyż jego wielkość to ok. 20 Mb (spakowane!). Wtedy jedynym wyjściem jest kupno pisma z kompaktem, na którym jest jądro, lub zgranie go
od kolegi, który ma łącze stałe. Spakowane jądro ma nazwę linux-X.Y.Z.tar.gz. X i Z oznaczją konkretne numery wersji jajka. Y oznacza czy jest to wersja stabilna, czy
rozwojowa. Jeżeli ta liczba jest parzysta, to wersja jest stabilna. Gdy jest liczbą nieparzystą, jądro jest rozwojowe.

Spakowany plik zgrywamy do katalogu /usr/src. Jeżeli w /usr/src posiadamy katalog linux, to musimy go skasować lub zmienić mu nazwę. Rozpakowywujemy jądro: tar
-zxf linux-X.Y.Z.tar.gz. Spakowany plik nie będzie nam już potrzebny, więc go kasujemy rm linux-X.Y.Z.tar.gz. Wchodzimy do katalogu linux. Teraz musimy dostosować
konfigurację do własnych potrzeb. Do tego celu możemy się posłużyć jednym z trzech programów:

make config - najprostszy ze wszystkich. O każdą opcję będziemy osobno pytani.
make menuconfig - będziemy konfigurować jajko przy pomocy ładnego i intuicyjnego interfejsu
make xconfig - jeżeli używamy X Window, to możemy użyć programu w trybie graficznym

Po wpisaniu jednego z powyższych poleceń dostosowywujemy konfigurację do swoich potrzeb/upodobań. Jeżeli obok opcji są nawiasy kwadratowe, to oznacz że daną
funkcję możemy wkompilować w jądro, lub nie. Jeżeli są nawiasy trójkątne możemy skompilować daną funkcję w postaci modułu (). Moduły nie zwiększają objętości
jądra, mogą być dynamicznie ładowane kiedy będą potrzebne. W ten sposób nie zajmują miejsca w pamięci. Jak już skończymy, to wychodzimy z programu i wydajemy
polecenia make dep i make clean. Jądro kompilujemy poleceniem make zImage. Podczas kompilacji, może się okazać, że jajko zajmuje za dużo miejsca i musimy wydać
polecenie make bzImage, aby stworzyć wersję skompresowaną. Skompresowane jądro same się rozpakuje do pamięci podczas uruchomienia systemu. Jeżeli od razu
chcemy wygenerować skompresowane jądro, wystarczy zamiast make zImage wpisać make bzImage.

Mamy już nowe jądro. Teraz musimy skompilować i zainstalować moduły. Robimy to dwoma poleceniami: make modules i make modules_install. Teraz powinniśmy
utworzyć plik /lib/modules/WERSJA_KERNELA/modules.dep dla właśnie skompilowanych modułów, robimy to poleo poleceniem depmod -a. Ten plik jest używany m.in. przez
program modprobe, określa zależności między modułami, czyli jakich modułów wymaga inny moduł, coś podobnego jak z pakietami.

Skompilowane jajko jest w katalogu /usr/src/linux/arch/i386/boot/zImage lub /usr/src/linux/arch/i386/boot/bzImage, jeżeli tworzyliśmy je poleceniem make bzImage.
Jądro kopiujemy np. do /boot/vmlinuz-nowe i ustawiamy tak naszego bootloader'a, aby można było uruchomić system z nowym jądrem. Warto na jakiś czas zostawić
możliwość uruchomienia systemu ze starym jajkiem, gdyby nowe się nie sprawdziło. Kiedy nowe jądro okaże się dobre, możemy skasować stare i jego moduły z katalogu
/lib/modules/X.Y.Z.

W niektórych sytuacjach będziemy zmuszeni do użycia łat (ang. patch) na jądro. Łaty umożliwiają wkompilowanie w jądro dodatkowego kodu, który udostępnia różne
funkcje. Może to być łata umożliwiająca obsługę JFS (system księgowania plików), lub zapewniająca większe bezpieczeństwo. "Łatania" dokonujemy przed
skonfigurowaniem jądra. Zgrywamy łatę do katalogu /usr/src. Jeżeli jest spakowana gzipem, to najpierw ją rozpakowywujemy gunzip plik_z_łatą.gz, a później wydajemy
polecenie: patch -p0 < plik_z_łatą. Po "załataniu" postępujemy jak przy normalnej kompilacji jądra.


---

Serwis Laptopów Katowice


Artykuł pochodzi z serwisu www.Artelis.pl

Brak komentarzy:

Prześlij komentarz