8.6. Új rendszermag (kernel) fordítása

Miért akarna valaki új kernelt fordítani? Valóban, ez általában nem szükséges, mivel a Debian által alapértelmezetten adott kernel a legtöbb gépet jól kezeli. Ráadásul a Debian más kerneleket is tartalmaz. Sokszor ezek között is találhatsz a gépedhez jobban illő kernelt. Ezzel együtt néha hasznos lehet új kernelt fordítani az alábbi célokra:

8.6.1. Kernel-képek kezelése

Próbáld ki bátran a kernel-fordítást. Ez kellemes és ráadásul hasznos.

Ha a Debian módszerével fordítanál, szükséged lesz pár csomagra, úgymint: fakeroot, kernel-package, linux-source-2.6 és egy pár egyébre, mely már valószínűleg telepítve van (a teljes listát elolvashatod a /usr/share/doc/kernel-package/README.gz fájlban).

E módszer elkészíti a .deb csomagot a kernel-forrásból, és, ha nem-szabvány moduljaid vannak, azokra is elkészíti a megfelelően függőt. Ez sokkal jobb mód a kernel-képek kezelésére; a /boot könyvtár tartalmazza majd a kernelt, a System.map fájlt és az aktív konfigurációs fájl naplóját az elkészítéshez.

Tudd, hogy nem kell a kernelt a „Debian módszer” útján fordítanod; de a kernel csomagoló rendszerrel való kezelése biztosabb és könnyebb. Fontos tudni, hogy a kernel forrásokat Linustól is letöltheted a Debian linux-source-2.6 csomagok használata helyett, és még így is rendelkezésedre áll a kernel-package kernel-fordítási módszer használata.

Jó tudni, hogy a kernel-package módról teljes leírás található a /usr/share/doc/kernel-package könyvtárban.

Mostantól azt feltételezzük, hogy szabadon mozogsz a gépen, és a kernel forrását kicsomagolod a saját könyvtáradba[16]. A példában azt vesszük, hogy kerneled verziója 2.6.18. Győződj meg, hogy abban a könyvtárban vagy, ahova ki akarod bontani a kernelforrásokat, csomagold ki őket így: tar xjf /usr/src/linux-source-2.6.18.tar.bz2 és lépj a létrejött linux-source-2.6.18 könyvtárba.

Most jöhet a kernel beállítása. Indíts egy make xconfig parancsot, ha X alatt akarsz dolgozni és erre módod van; vagy futtasd a make menuconfig parancsot (a libncurses5-dev csomag kell). Szánj időt a súgó elolvasására és válassz ésszerűen. Kétség esetén általában jobb kiválasztani egy olyan eszköz-meghajtót (azok a szoftverek, melyek a hardver perifériákat kezelik, például hálózati (ethernet) kártyák, SCSI vezérlők, és így tovább), melyben nem vagy biztos. Légy óvatos: más lehetőségeket, melyek nem adott hardverre vonatkoznak, hagyj a megadott értéken, ha nem érted. Ne feledd kijelölni a „Kernel module loader” lehetőséget a „Loadable module support” menüben (ez nincs alapban kijelölve). Ha nem adod meg, akkor a Debian telepítésed valószínűleg hibákat fog észlelni.

Tisztítsd a forrást és a kernel-package paramétereket. Add ki a make-kpkg clean parancsot.

Most fordítsd le a kernelt: fakeroot make-kpkg --initrd --revision=egyedi.1.0 kernel_image. Az „1.0” verziószám bármi lehet; ez csak arra jó, hogy többszöri fordítás esetén kövesd ezek sorát. Az „egyedi” szó helyére is bármit tehetsz (például a gép nevét). A kernel fordítás eltarthat egy ideig, attól függ, milyen géped van.

A fordítás végeztével más csomaghoz hasonlóan telepítheted az egyedi kernelt. Rendszergazdaként add ki ezt a parancsot: dpkg -i ../linux-image-2.6.18-alarchitektúra_egyedi.1.0_powerpc.deb. Az alarchitektúra rész egy lehetséges al-architektúra, a beállított kernelopcióktól is függ. A dpkg -i telepíti a kernelt kiegészítő támogató fájlokkal. Például a System.map megfelelően telepítésre kerül (kernelhibák keresését segíti), és a /boot/config-2.6.18 is telepítésre kerül, mely a beállításokat tartalmazza. Az új kernel csomag automatikusan frissíti is a boot betöltőt. Ha modul csomagot is készítettél, azt a csomagot is telepítened kell.

Ideje újraindítani a rendszert: olvass el gondosan minden figyelmeztetést, amit a fentiek írtak, és ezután jöhet a shutdown -r now.

További adatokért a Debian kernelekről és kernel-fordításról, lásd a Debian Linux Kernel Kézikönyvet.



[16] Vannak más helyek is, ahova kicsomagolhatod és ahol elkészítheted saját kerneledet, de ez a legegyszerűbb és nem igényel különleges jogokat..