A bekapcsolástól a bash promptig: A Linux kernel

Következő Előző Tartalom

## 4. A Linux kernel

A kernel valójában nagyon sok mindent csinál. Úgy gondolom jó összefoglalása a dolgoknak az, hogy ráveszi a hardvert, azt tegye amit a programok akarnak, méghozzá hatékonyan és jól.

A processzor egyszerre csak egy utasítást tud végrehajtani, de a Linux rendszerek látszólag több dolgot is végeznek egyszerre. A kernel ezt úgy éri el, hogy nagyon gyorsan váltogatja a feladatokat. Ezzel a lehető legjobban ki lehet használni a processzort, úgy, hogy követjük melyik folyamat kész a futásra, és melyik várakozik valamire - mint például egy rekordra egy merevlemez fájlból, vagy egy billentyű leütésére. Ezt nevezik ütemezésnek (scheduling).

Ha egy program nem csinál semmit, nem kell a memóriában lennie. Még egy olyan programnak is ami csinál valamit, lehet, hogy vannak olyan részei amik nem csinálnak semmit. Mindegyik folyamat (process) címzési tartománya fel van osztva lapokra. A kernel nyilvántartja, melyik folyamat melyik lapja van a legtöbbet használva. Azokat a lapokat, amik kevésbé használtak, ki lehet helyezni a csere (swap) partícióra. Amikor megint szükség van rájuk, egy másik nem használt lapot lehet kihelyezni. Ez a virtuális memóriakezelés.

Ha már fordítottál saját kernelt, észrevehetted milyen sok az eszközfüggő beállítás. A kernel sok egyedi kódot tartalmaz, a különböző hardverekkel történő kommunikáláshoz, valamint hogy szép egységes felületet mutasson az alkalmazások felé.

Szintén a kernel irányítja a fájlrendszert, a folyamatok közötti kommunikációt, és egy csomó hálozati dolgot.

Amikor a kernel betöltődött, az első dolog amit csinál, hogy egy "`init`" programot keres és lefuttaja.

## 4.1 Beállítás

A kernel beállításának legnagyobb része akkor történik, amikor futtatod a "`make menuconfig`"-ot vagy a "`make xconfig`"-ot az `/usr/src/linux/` könyvtárban, (vagy bárhol máshol, ahol a Linux kernel forráskód van). Újra tudod állítani az alapértelmezett video módot, gyökér (root) fájlrendszert, csere (swap) eszközt és a RAM disk méretét, ha az "`rdev`"-et használod. Ezeket - vagy még több paramétert - a lilo is át tud adni a kernelnek. Adhatsz a lilo-nak paramétereket a lilo.conf fájlban, vagy a lilo promptjánál, hogy átadja ezeket az információkat. Például ha a hda3-at akarod használni mint root fájlrendszert a hda2 helyett, begépelheted hogy:

            LILO: linux root=/dev/hda3

Ha forrásból építesz rendszert, sokkal egyszerűbbé teheted az életet, ha "monolitikus" kernelt csinálsz. Ez azt jelenti, hogy nincsenek moduljai. Ekkor nem kell kernel modulokat másolni a cél rendszerbe.

FIGYELEM: A `System.map` fájlt a kernel logger (naplózó) használja, hogy meghatározza a modulneveket generáló üzeneteket. A `top` nevű program szintén használja ezt az információt. Amikor a kernelt a célrendszerbe másolod, másold át a "`System.map`"-ot is.

## 4.2 Gyakorlatok

Egy kis gondolkodnivaló: a `/dev/hda3` egy különleges fájl, ami leír egy merevlemez particiót. De egy olyan fájlrendszeren van, mint bármelyik másik fájl. A kernel meg akarja tudni, hogy melyik particiót csatolja fel (mount), mint gyökér fájlrendszert - de még nincs is fájlrendszere. Mégis hogyan tudja olvasni a `/dev/hda3` partíciót, hogy megtudja melyik lemezrészt csatolja?

Ha még nem tetted meg, készíts saját kernelt. Olvass el minden súgóinformációt az opciókhoz.

Próbáld ki, mekkora a legkisebb kernel ami még működik. Sokat tanulhatsz abból, ha kihagyod a felesleges dolgokat!

Olvasd el a "The Linux Kernel"-t (URL alább), és közben keresd meg a forráskód azon részeit, amire hivatkozik. A könyv (amint ezt írom) a 2.0.33-as kernel verzióval foglalkozik, ami elég öreg már. Könnyebb követni, ha letöltöd ezt az öreg verziót, és ott olvasod a forrást. Fantasztikus érzés "process" és "page" nevű C kóddarabokat találni.

Hackelj! Próbálj meg extra üzeneteket vagy valami mást kiíratni.

## 4.3 További információ

- `/usr/src/linux/README` és a `/usr/src/linux/Documentation/` tartalma (Lehet, hogy ezek máshol vannak a Te rendszereden)
- Kernel HOWTO (Kernel HOGYAN)
- A kernel beállításakor olvasható segítség a `make menuconfig` vagy `make xconfig` használatakor
- The Linux Kernel (és más LDP útmutatók) (A Linux Kernel)
- forráskód, lásd a Building a Minimal Linux System from Source Code (Minimális Linux rendszer építése forrásból) doksit URL-ekért

Következő Előző Tartalom