8.5. Saját rendszermag készítése és telepítése
Vissza | 8. fejezet - A FreeBSD rendszermag testreszabása | Előre

## 8.5. Saját rendszermag készítése és telepítése

Először is tegyünk egy rövidke sétát a rendszermag könyvtárában. A továbbiakban említendő összes könyvtár a `/usr/src/sys` könyvtáron belül található, amely `/sys` néven is elérhető. Itt rengeteg alkönyvtár található, mindegyikük a rendszermag különböző részeit testesíti meg. Ezek közül most számunkra a legfontosabb az ``architektúra`/conf` lesz, ahol majd létrehozzuk a saját rendszermagunk konfigurációs állományát, valamint a `compile`, ahol majd a rendszermagunk fordítása történik. Itt az `architektúra` lehet `i386`, `alpha`, `amd64`, `ia64`, `powerpc`, `sparc64` vagy `pc98` (a PC-k egyik, leginkább Japánban elterjedt változata). Az adott architektúra könyvtárában található összes állomány csak arra az architektúrára vonatkozik, a kód többi része pedig gépfüggetlen és közös az összes többi létező és leendő FreeBSD platformon. Érdemes megfigyelni a könyvtárak logikai elrendezését: minden egyes ismert eszköz, állományrendszer és bővítmény saját alkönyvtárral rendelkezik.

A példák során ez a fejezet feltételezi, hogy az i386 architektúrát használjuk. Ha ez a mi esetünkben nem így lenne, ne felejtsük el átírni bennük az elérési útvonalakat a rendszerünk architektúrájának megfelelően.

### Megjegyzés:

Ha nem lenne `/usr/src/sys` könyvtár a rendszerünkben, valószínűleg még nem telepítettük a rendszermag forráskódját. Ezt a legkönnyebben úgy tudjuk megtenni, ha `root` felhasználóként elindítjuk a `sysinstall` programot és ott kiválasztjuk a Configure (Beállítások), azon belül Distributions (Terjesztések) menüpontot, amiben válasszuk ki a src, base és sys terjesztéseket. Ha nem szeretnénk erre a célra a sysinstall programot használni, de rendelkezésünkre áll a „hivatalos” FreeBSD CD, akkor a forrásokat akár parancssorból is telepíthetjük:

`#` `mount /cdrom` `#` `mkdir -p /usr/src/sys` `#` `ln -s /usr/src/sys /sys` `#` `cat /cdrom/src/ssys.[a-d]* | tar -xzvf -` `#` `cat /cdrom/src/sbase.[a-d]* | tar -xzvf -`

Ezután lépjünk be az ``i386`/conf` könyvtárba és másoljuk le a `GENERIC` konfigurációs állományt a kedvünk szerinti nevűre. Például:

`#` `cd /usr/src/sys/`i386`/conf` `#` `cp GENERIC `SAJÁT``

Általában a nevet végig nagybetűkkel írjuk, és ha több FreeBSD-s gépet is üzemeltetünk különböző hardverekkel, hasznosnak bizonyulhat megemlíteni benne az adott gép rendszerének nevét is. Ebben a példában ez most a ``SAJÁT`` lesz.

### Tipp:

A rendszermagunk konfigurációs állományát nem éppen a legjobb ötlet a `/usr/src` könyvtárban tárolni. Ugyanis könnyen előfordulhat, hogy egy rosszul sikerült fordítás után egyszerűen csak letöröljük az egész `/usr/src` könyvtárat és onnan kezdjük újra. Azonban csak ezután juthat eszünkbe, hogy vele együtt bizony letöröltük a saját rendszermagunk konfigurációs állományát is! Ehhez hasonlóan, közvetlenül a `GENERIC` konfigurációs állomány szerkesztése sem ajánlott, mivel a források egy esetleges frissítésénél könnyen felülíródhat és ezzel együtt elvesznek a módosításaink is.

Tehát érdemes inkább valahol máshol tárolnunk a rendszermagunk konfigurációs állományát, majd létrehozni rá egy szimbolikus linket a ``i386`` könyvtárban.

Valahogy így:

`#` `cd /usr/src/sys/`i386`/conf` `#` `mkdir /root/kernel` `#` `cp GENERIC /root/kernel/`SAJÁT`` `#` `ln -s /root/kernel/`SAJÁT``

Most pedig a kedvenc szövegszerkesztőnkkel lássunk neki a ``SAJÁT`` átírásának! Ha nemrég telepítettük csak a rendszerünket, az egyetlen elérhető szövegszerkesztőnk minden bizonnyal a vi lesz. Róla most túlságosan is bonyolult lenne leírást adnunk, de az Irodalomjegyzékben található könyvek közül sokban elég jól bemutatják. Ezen kívül a FreeBSD ajánl egy könnyebben megtanulható szövegszerkesztőt is az ee személyében, amely a kezdők számára az ideális választás. Nyugodtan átírhatjuk az elöl található megjegyzéseket a saját konfigurációnknak megfelelően, vagy akár azt is rögzíthetjük, hogy miben tértünk el a `GENERIC` beállításaitól.

Ha fordítottunk már rendszermagot SunOS™ vagy más BSD operációs rendszer alatt, ez az állomány ismerősnek tűnhet. Ha viszont más operációs rendszerek, mint például a DOS felől érkezünk, a `GENERIC` konfigurációs állomány egy kissé terebélyesnek tűnhet számunkra, ezért A konfigurációs állomány című részt figyelmesen és lassan olvassuk át.

### Megjegyzés:

Amennyiben a forrásfánkat a FreeBSD projekt legfrissebb forrásaival szinkronizáljuk, mindig olvassuk el a `/usr/src/UPDATING` állományt, mielőtt bármilyen frissítéshez is kezdenénk. Itt megtalálhatóak azok a fontos érintett kérdések és területek, amely külön figyelmet igényelnek a frissített forráskód esetén. A `/usr/src/UPDATING` mindig a FreeBSD forrásának legfrissebb változatához igazodik, és ezért sokkal naprakészebb információkat tartalmaz, mint ez a kézikönyv.

Most pedig le kell lefordítanunk a rendszermag forráskódját.

Eljárás 8.1. A rendszermag lefordítása

1. Lépjünk be a `/usr/src` könyvtárba:

   `#` `cd /usr/src`

2. Fordítsuk le a rendszermagot:

   `#` `make buildkernel KERNCONF=`SAJÁT``

3. Telepítsük az új rendszermagot:

   `#` `make installkernel KERNCONF=`SAJÁT``

### Megjegyzés:

A FreeBSD teljes forrásfájára szükség van a rendszermag lefordításához.

### Tipp:

Amikor egy saját rendszermagot alapértelmezés szerint fordítunk, vele együtt az összes modul is lefordításra kerül. Ha viszont időt szeretnénk megtakarítani a rendszermag frissítése során, vagy csak a saját moduljainkat akarjuk lefordítani, érdemes átírnunk az `/etc/make.conf` állományt a rendszermag fordításának megkezdése előtt:

MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs

Ez a változó megadja a ténylegesen lefordítandó modulok listáját.

WITHOUT_MODULES = linux acpi sound ntfs

Ez a változó a fordításból kihagyandó felső szintű modulokat sorolja fel. A rendszermag fordításának folyamatában egyéb hasznosnak tekinthető változókról a make.conf(5) man oldalán olvashatunk.

Ezután az új rendszermag a `/boot/kernel` könyvtárba kerül `/boot/kernel/kernel` néven, a korábbi rendszermag pedig `/boot/kernel.old/kernel` néven őrződik meg. Most állítsuk le a rendszert és indítsuk újra az új rendszermag aktiválásához. Ha közben valamilyen hiba történt volna, nézzük meg a fejezet végén található, hibakeresésre vonatkozó utasításokat. Mindenképpen olvassuk el azt a részt, amely leírja, hogyan állítsuk helyre a rendszerünket abban az esetben, ha az új rendszermaggal nem indul.

### Megjegyzés:

A rendszerindítási folyamathoz tartozó további állományok, mint például a rendszerbetöltő (loader(8)) és annak konfigurációs állománya, a `/boot` könyvtárban találhatóak. A külső és saját modulok a `/boot/kernel` a könyvtárba kerülhetnek, azonban a felhasználóknak nagyon ügyelniük kell rá, hogy az itt található modulok szinkronban legyenek a lefordított rendszermaggal. Ellenkező esetben a rendszerben megbízhatatlanságot, hibákat észlelhetünk.

Vissza | Fel | Előre
8.4. Meghajtók, alrendszerek és modulok | Főoldal | 8.6. A konfigurációs állomány

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.