FreeBSD kernelfordítás mini-HOWTO

Címkék

FreeBSD kernelfordítás mini-HOWTO

Micskó Gábor trey@hup.hu - Hungarian Unix Portal

v.1.0, 2002. augusztus. 28 - Copyright © Hungarian Unix Portal

0. Ez nem az!

1. Miért?

2. Előkészületek

3. A kernel konfigurálása

4. A kernel fordítása

5. Reboot

6. Parancsok összefoglalása

7. Copyright, licenc, visszajelzés és ilyesmi0. Ez nem az!

Ez a HOWTO nem egy teljes referencia, hanem egy gyors összefoglaló arról, hogy hogyan tudsz egyedi FreeBSD kernelt fordítani. A HOWTO számos dologra nem tér ki, nem megy bele a részletekbe, egyszerűen csak megmutatja az utat, hogy hogyan is kellene hozzákezdeni a fordításhoz. A FreeBSD kernelt - mint ahogy a Linux kernelt is - ezerféleképpen le lehet fordítani. Mindenki fordítsa le úgy, ahogy neki a legmegfelelőbb. Arról, hogy hogyan tudsz FreeBSD kernelt fordítani, találsz egy teljes összefoglalást a FreeBSD Handbook-ban, a "Building and Installing a Custom Kernel" címszó alatt, amelyet megtalálsz a http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/

kernelconfig-building.html URL alatt.

1. Miért?

Hogy miért fordítsuk újra a FreeBSD kernelt? Több okunk is lehet arra, hogy egy operációs rendszer kernelét újra fordítsuk. Egyik ok lehet az, hogy új drivereket, funkciókat akarunk a kernelbe építeni, a másik fő ok éppen ennek az ellenkezője, azaz ki szeretnénk szedni minden felesleges funkciót, drivert a kernelből. A jelen esetben tételezzük fel, hogy azért fordítunk új kernelt, hogy aktiváljuk az SMP (Symmetric Multi Processing) támogatást a FreeBSD kernelben. Tesszük mindezt azért, mert olyan számítógéppel rendelkezünk, amelyben mondjuk 2 CPU van.

2. Előkészületek

Amikor úgy döntesz, hogy újrafordítod a FreeBSD kernelt legyél biztos benne, hogy rendelkezel BOOTDISK-kel. Amire még szükséged lesz, az egy kernelforrás. Ellenőrizd a fordítás megkezdése előtt, hogy rendelkezel-e a FreeBSD kernel forrásával. Ezt megteheted így:

# cd /sys

ha nincs meg a forrás, akkor futtasd root-ként a

# /stand/sysinstall

programot, és válaszd a "configure"-t, következőnek a "distribution"-t, majd az "src"-t és végül a "sys"-t. Ezzel telepítheted a szükséges forrásfile-okat a /usr/src/sys könyvtárba.

Configure Do post-install configuration of FreeBSD

Distributions Install additional distribution sets

[ ] src Sources for everything

[ ] sys /usr/src/sys (FreeBSD kernel)

[OK]

Ahhoz, hogy elkezd a kernel fordítással kapcsolatos kalandjaidat, válts munkakönyvtárat a /usr/src/sys/i386/conf könyvtárba. Két filet kell találnod ebben a könyvtárban. Ezekre szükségünk lesz, a fileok a GENERIC, és a LINT nevű fileok.

GENERIC alapkonfiguráció, erről készített kernet bootolsz ha a "gyári rendszered" van

LINT kibővített, "advanced" konfigurációs file, még több hardver és eszközmeghajtó támogatással

3. A kernel konfigurálása

Az első dolog legyen amit csinálsz, hogy készítesz egy másolatot a GENERIC fileról, mondjuk NEWKER néven:

# cp GENERIC NEWKER

NE TÖRÖLD LE A "GENERIC" VAGY A "LINT" fileokat, mert később megbánhatod, szükséged lehet még rájuk!

Szerkeszd az új kernel filet (jelen esetben a NEWKER nevűt) a kedvenc editoroddal (vi a barátod). Végezd el a szükséges változtatásokat (kommentezd ki a # karakterrel a szükségtelen dolgokat, vagy épp ellenkezőleg, távolítsd el a # karakert az elől a sor elől, amit be szeretnél építeni a kernelbe). Jelen esetben az SMP támogatás megvalósításához a következőket végezd el:

# To make an SMP kernel, the next two are needed

#options SMP # Symmetric MultiProcessor Kernel

#options APIC_IO # Symmetric (APIC) I/O

a változtatás előtt, és utána így nézzek ki:

# To make an SMP kernel, the next two are needed

options SMP # Symmetric MultiProcessor Kernel

options APIC_IO # Symmetric (APIC) I/O

végezd el a szükséges beállításokat, majd mentsd el a NEWKER file változásait.

Most joggal kérdezheted, hogy nem kell a LINT file?

A FreeBSD nem detektálja a hangkártyát magától például, azt neked kell beletenni a konfigba! Hogy hozzáadd a hangkártya támogatást, nézd meg a LINT filet. Talán abban megtalálod a számodra megfelelő sort.

Következő, amit el kell végezni, hogy futtatni kell a ``config filenev" parancsot.

#config NEWKER

Ha közben bármilyen hibát kapsz, valamit elrontottál a konfig fileban, menj vissza és javítsd ki!

4. A kernel fordítása

A kernel fordításához be kell lépned az új kerneled konfigjának nevét viselő könyvtárba, azaz a /usr/src/sys/compile/FILENEV, ahol a FILENEV a kernelkonfig neve, jelen esetben NEWKER.

#cd /usr/src/sys/compile/NEWKER

A befejezéshez már csak három lépést kell megtenned. Az alábbi parancsokat kell kiadnod:

#make depend

#make

#make install

Ez a dolog egy kicsit hosszabb időt vesz igénybe, itt az ideje, hogy rendelj egy pizzát, vagy igyál egy kávét ;) Pár szóban, hogy mi is történik ilyenkor: a make depend scriptek sorozatát futtatja, amelyek összegyűjtik a fordításhoz szükséges forráskódokat. A make segítségével fordul le maga a kernel. A make install telepíti tulajdonképpen a root könyvtárba "/" a kernelt, és nevezi át a jelenlegi kernelt, a kernel.GENERIC-et kernel.old-ra, és teszi a helyére az új kernelt.

5. Reboot

Ha kövtetted a felsorolt lépéseket, és mindent jól csináltál, akkor most rebootolhatsz. Hacsak nem rontottad el nagyon a konfigurálást, nagy valószínűséggel be is fog bootolni az új kernel.

6. Parancsok összefoglalása

# cd /usr/src/sys/i386/conf

# cp GENERIC NEWKER

# vi NEWKER

# config NEWKER

# cd /usr/src/sys/compile/NEWKER

# make depend

# make

# make install

# reboot

7. Copyright, licenc, visszajelzés és ilyesmi:

Micskó Gábor trey@hup.hu - Hungarian Unix Portal - http://www.hup.hu/

Ez a dokumentum szabadon másolható és terjeszthetõ, ha a copyright és az engedély szövegét minden másolaton megõrzik. E dokumentum módosított változatai a változatlan másolatokkal megegyezõ feltételek alapján másolhatók és terjeszthetõk, ha a módosított változatot is az ezzel az engedéllyel megegyezõ feltételekkel terjesztik. A fordítások is a ``módosított változat'' kategóriájába tartoznak.

Garancia: Nincs.

Ajánlások: Az üzleti célú terjesztés megengedett és támogatott, de nyomatékosan ajánlott, hogy a terjesztõ lépjen kapcsolatba a szerzõvel a terjesztés elõtt, a dolgok naprakészségének biztosítása végett. (Küldhetsz egy példányt abból, amit csinálsz, ha már úgyis csinálod.) A fordítóknak is ajánlott kapcsolatba lépni a szerzõvel, mielõtt lefordítják. A nyomtatott változat jobban néz ki. A papírt használd fel újra!

Visszajelzéseket, építõ jellegû kritikát a trey@debian.szintezis.hu email címre várok.

A dokumentum otthona a Hungarian Unix Portal. A legfrissebb verziót a

http://www.hup.hu/old/freebsd-kernel/ URL-en keresd.

Sok szerencsét!

Hozzászólások

Hat igen, ezert irtam, hogy nem egy komplett reference, es hogy ezerfelekeppen is le lehet forditani. Nem volt celom komplett "fullos" HOWTO-t irni, arra ott a HANDBOOK.

Ezert is az neve mini-HOWTO. Es ezert kerult bele a

0. Ez nem az! menupont is.

de igazad van, ezeket celszeru betartani, sot lehetne boviteni a vegtelensegig a dolgot.

Egyebkent ezzel a mini-HOWTO-val egy regi adossagomat torlesztettem. Akinek szol, az tudja miert :-)

Hmmm... amikor ilyeneket olvasok, néha úgy érzem, kezdem megkedvelni trey -t... :) Jók ezek a kis doksik, csak így tovább... :)

Hat igen lehetett volna bovebb is meg nagyobb is, lehetett volna akar konyvet is irni ;-)

belevehettem volna nem csak a tradicionalis kernel forditast, hanem az ujabb utat is:

# cd /usr/src

# make buildkernel KERNCONF=MYKERNEL

# make installkernel KERNCONF=MYKERNEL

stb, stb, ...

Ja meg valami jutott eszembe Arpi utan szabadon:

RTFM baz+

;-)

3-4. pont egy ideje mar nem kell, hogy ilyen macerasan tortenjen. A 21. szazadi megoldas:

1. masolsz egy GENERIC-et

2. atirogatod

3. /etc/make.conf-ba beirod a kov sort: KERNECONF=

4. cd /usr/src/

5. make kernel

6. reboot.

A hatas ugyanaz, csak a folyamat igy egyszerubb, szebb, modernebb :). Erdemes neha atolvasni az /usr/src/UPDATING filet. Egyreszt minden fontosabb valtozas benne van, ami a forrassal tortent, masreszt itt irjak le a lenyegesebb dolgokrol a hivatalos allaspontot. Mint pl a kernel/rendszer forditas :).

Kernel forditashoz nem kell erteni, le van irva, hogy hogy kell csinalni, es ha ugy csinalod, akkor sikerul. Viszont nem veletlen lett uj modszer, es ha mar van, akkor erdemes hasznalni. Ha mar van 10 fbsd-s geped, akkor picit tobb ido a howto-ban leirtakat mindenhol vegigcsinalni egy frissiteskor. Ha viszont a szep, uj modszerrel csinalod, akkor lenyegeben 1 parancs az update. Fbsd-n nem nagyon szokott egeszseges lenni mas forrasbol forgatni a rendszert, es a kernelt, tehat 99.9% egyszerre fordul a 2. Ebben az esetben meg lenyegesen egyszerubb egy make buildkernel && make buildworld, make installkernel, reboot, make installworld, etc..., mint mindig vegigjatszani a config, depend, ... mokat. Ha mar csak ujraconfigolod a kernelt, akkor is. De ez csak az en velemenyem :). Persze abban igazad van, hogy a regebbi mindenhol mukodik (valoszinuleg), de egyreszt regebbi rendszereken ugyis eszreveszed, ha meg nem kepes erre, masreszt, ha mar valakik dolgoztak, hogy ilyen legyen, akkor hasznaljuk a munkajuk gyumolcset. Lenyegeben talan a legbiztosabb tanacs az, ha mindig az UPDATING-ben leirtak szerint csinalod.