Az MBR-ben található programkódot, avagy boot managert, sokszor csak a rendszerindítás nulladik fokozataként emlegetik. Ez az alfejezet a korábban említett két boot managert tárgyalja: a boot0-t és a LILO-t.
A boot0 boot manager: A FreeBSD telepítője vagy a boot0cfg(8)
által kialakított MBR alapértelmezett
állapotban a /boot/boot0
állományon alapszik. (A
boot0 program nagyon egyszerű,
hiszen az MBR-ben elhelyezhető
kód csak 446 byte hosszúságú
lehet, mert a végében még el kell
férnie a slice-táblának és az
0x55AA
azonosítónak.) Ha
telepítettük a boot0-t
és a lemezeinken több operációs
rendszer is megtalálható, akkor a
rendszerindítás során egy hasonló
képet kell látnunk:
Más operációs rendszerek, különösen a Windows(R), telepítésük során felülírják a már meglevő MBR-t a sajátjukkal. Ha ez történne, vagy egyszerűen csak szeretnénk a meglevő MBR-t lecserélni a FreeBSD MBR-jével, adjuk ki a következő parancsot:
#
fdisk -B -b /boot/boot0 eszköznév
ahol az eszköznév
annak az eszköznek a neve, ahonnan a rendszert
indítani szeretnénk, tehát
például ad0
az első
IDE-lemez esetén, vagy ad2
a
második IDE-vezérlőn található
első IDE-lemez esetén, illetve
da0
az első SCSI-lemez
esetén, és így tovább. Ha testre
akarjuk szabni az MBR-t, használjuk a
boot0cfg(8)-t.
A LILO boot manager: Ezen boot manager telepítéséhez
és beállításához
elsőként indítsuk el a Linuxot és
vegyük hozzá az alábbi sort a
rendszerünkben található
/etc/lilo.conf
konfigurációs állományhoz:
other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD
A fenti sablont kiegészítve, a linuxos
konvenciók szerint adjuk meg a FreeBSD elsődleges
partícióját és
meghajtóját úgy, hogy az
X
-et átírjuk a
linuxos meghajtó betűjelére és az
Y
-t átírjuk a Linux(R)
elsődleges partíciójának
számára. Ha
SCSI-meghajtót használunk, a
/dev/hd
részt is át
kell írnunk az előbbiek mellett
/dev/sd
-re. A
loader=/boot/chain.b
sor elhagyható
abban az esetben, ha mind a két operációs
rendszer ugyanazon a meghajtón található.
Ha befejeztük a módosítást, futtassuk
le a /sbin/lilo -v
parancsot a
változtatásaink életbe
léptetéséhez. Ezt
ellenőrizhetjük is a képernyőn
megjelenő üzenetek alapján.
Az első és a második fokozat fogalmilag
ugyanannak a programnak a része, a lemezen ugyanott
helyezkedik el. A tárbeli megszorítások
miatt ugyan el kellett választani őket
egymástól, de a telepítésük
mindig egy helyre történik. A telepítő
vagy a bsdlabel (lásd lentebb)
használata során a /boot/boot
nevű kombinált állományból
másolódnak ki.
Az állományrendszereken kívül
találhatóak, az aktív slice első
sávjában, annak első
szektorától kezdődően. Ez az a hely,
ahol a boot0, illetve a
többi boot manager is keresi a
rendszerindítás folytatására
alkalmas programot. A felhasznált szektorok száma
könnyedén kideríthető a
/boot/boot
méretéből.
Legfeljebb 512 byte-os méreténél
fogva a boot1
állomány nagyon
egyszerű felépítésű, és
éppen csak annyit tud a slice-ra vonatkozó
információkat tároló FreeBSD
bsdlabel-ről, hogy megtalálja
a boot2
-t és
elindítsa.
A boot2
már egy kicsivel
ügyesebb, és eléggé ismeri a FreeBSD
állományrendszerét ahhoz, hogy
megtaláljon rajta állományokat, valamint
képes egy egyszerű felületet nyújtani a
rendszermag vagy a betöltő
megválasztásához.
Mivel a betöltő
pedig már ennél is okosabb, és egy
könnyen használható
rendszerindítási konfigurációt tud a
felhasználó számára nyújtani,
ezért a boot2
általában ezt indítja el, de előtte
közvetlenül a rendszermag futtatását
végzi el.
Ha le kellene váltani a korábban
telepített boot1
és
boot2
fokozatokat, használjuk a
bsdlabel(8)-t:
#
bsdlabel -B lemezslice
ahol a lemezslice
annak a
lemeznek és slice-nak a kombinációja,
ahonnan indítjuk a rendszerünket,
például az első IDE-lemez első slice-a
esetén ez az ad0s1
.
Amikor a bsdlabel(8) meghívásakor csak
a lemez nevét használjuk, például
ad0
-t, a parancs egy
veszélyesen dedikált lemezt hoz létre,
slice-ok nélkül! Szinte biztos, hogy nem ez az,
amire szükségünk lenne, ezért mindig
ellenőrizzük kiadása előtt a
bsdlabel(8) parancsot!
A betöltő a három fokozatú
rendszertöltés utolsó állomása.
Az állományrendszerben
/boot/loader
néven találhatjuk
meg.
A rendszertöltőt az egyszerű konfigurálhatóságot támogató, felhasználóbarát eszköznek tervezték, és könnyen megtanulható, beépített parancsokat használ, melyek mögött egy összetettebb parancsokat ismerő, erősebb értelmező áll.
Az inicializálás során a rendszertöltő megpróbálja megkeresni a konzolt, és a lemezek közül igyekszik megtalálni azt, amelyikről elindult a rendszer. A keresések eredményének megfelelően beállítja a változókat, majd elindul egy értelmező, ahol vagy szkriptből olvasva, vagy pedig interaktívan feldolgozásra kerülnek a parancsok.
A rendszertöltő ezt követően beolvassa a
/boot/loader.rc
állományt,
az pedig alapértelmezés szerint feldolgozza a
/boot/defaults/loader.conf
állományt, ahol a változók
értelmes kezdőértéket kapnak, valamint
feldolgozza még a /boot/loader.conf
állományt is, ahol a változók
értékeit változtathatjuk meg.
Miután ez lezajlott, a loader.rc
a
változók értékeinek megfelelően
cselekszik, betöltve az ily módon
kiválasztott rendszermagot és a hozzá
választott modulokat.
Végezetül, a rendszertöltő beiktat egy, alapértelmezés szerint 10 másodperces várakozási szünetet, majd elindítja a rendszermagot, ha azt meg nem szakítjuk egy billentyű lenyomásával. Ha megszakítjuk ezt a várakozást, a rendszertöltő egy parancssort ad, amelyen keresztül egyszerű parancsokat adhatunk ki neki: állíthatjuk a változók értékeit, modulokat távolíthatunk el a memóriából, modulokat töltethetünk be, elindíthatjuk a rendszert vagy újraindíthatjuk a számítógépet.
Következzenek a leggyakrabban használt parancsok a rendszertöltőben. Az összes itt elérhető parancsot a loader(8) man oldalon találjuk meg.
másodperc
Megkezdi a rendszermag betöltését, ha nem szakítjuk meg a várakozást másodpercekben megadott időtartam alatt. Ekkor egy visszaszámlálást láthatunk, ami az alapértelmezés szerint 10 másodperctől indul.
Amennyiben léteznek, a megadott
opciókkal azonnal megkezdi a megadott rendszermag
betöltését. A
rendszermag
paraméter
csak abban az esetben adható meg, ha előtte
kiadtunk egy unload parancsot,
máskülönben a korábban
betöltött rendszermaggal indul a
rendszer.
Végigmegy a modulok ugyanazon automatikus
konfigurációján, ahogy az a
normális rendszerindítás során
is történik. Ezen parancs
használatának csak akkor van értelme,
ha előtte az unload
parancsot
használjuk, megváltoztatunk egy-két
változót, általában a
kernel
-t.
A /boot/loader.help
állományban fellelhető
súgóüzeneteket mutatja meg. Ha
témakörnek index
et adunk
meg, akkor az elérhető
témakörök listáját kapjuk
meg.
állománynév
...Feldolgozza a megnevezett állományt: beolvassa, majd sorról sorra értelmezi. Hiba esetén azonnal megállítja a feldolgozást.
állománynév
A név alapján betölti a rendszermagot, modult vagy az adott típusú állományt. Az állománynév után megadott további paraméterek az állománynak adódnak át.
Kilistázza a megadott elérési
útvonalon található
állományokat, vagy ennek
hiányában a gyökér
tartalmát. Ha hozzátesszük a
-l
kapcsolót, az
állományok mérete is
látható válik.
Kilistázza az összes olyan eszközt,
ahonnan modulokat tölthetünk be. Amennyiben a
-v
kapcsolót is megadjuk,
további részleteket tudhatunk meg
róluk.
Kilistázza a betöltött modulokat. Ha
többet szeretnénk megtudni róluk, adjuk
meg a -v
kapcsolót.
állománynév
Megmutatja a megadott állomány
tartalmát, minden LINES
számú sor után szünetet
tartva.
Azonnal újraindítja a számítógépet.
változó
, set
változó
=érték
Beállítja a rendszertöltő környezeti változójának értékét.
Eltávolítja a memóriából az összes betöltött modult.
Íme néhány konkrét példa a rendszertöltő használatára:
Így indíthatjuk egyfelhasználós módban az általunk használt rendszermagot:
boot -s
Távolítsuk el a betöltött rendszermagot és a moduljait, és töltsük be helyettük a korábbi (vagy egy másik) rendszermagot:
unload
load kernel.old
Itt használhatjuk a
kernel.GENERIC
nevet is, amely a
telepítőlemezen található
általános rendszermagra utal, vagy a
kernel.old
nevet, amely a
korábban használt rendszermagot rejti
(például amikor rendszermagot
frissítettünk vagy
készítettünk magunknak).
A következőképpen lehet betölteni a szokásos moduljainkat egy másik rendszermaggal:
unload
set kernel="kernel.old"
boot-conf
Egy rendszermag-konfigurációs szkript (automatizált szkript, amely ugyanazokat a beállításokat végzi el, amelyeket mi magunk tennénk akkor, amikor a rendszermagot indítjuk) betöltése:
load -t userconfig_script /boot/kernel.conf
A rendszertöltés során megjelenő rendszerüzenetek megjelenítése helyett egy sokkal megnyerőbb, látványosabb rendszerindítást tudunk elérni betöltő képernyők használatával. Egy ilyen képet egészen a konzolos bejelentkezésig, vagy az X felett futó valamelyik bejelentkező képernyő megjelenéséig láthatunk.
FreeBSD alatt alapvetően két típusú
környezet létezik. Ezek közül az egyik a
hagyományos virtuális konzolos parancssoros
felület. Ekkor a rendszertöltés
befejeződésekor egy szöveges parancssori
bejelentkező promptot kapunk. A másik
környezet az X11 által felkínált
grafikus felület. Miután telepítettük
az X11 szervert és
valamelyik munkakörnyezetet, tehát
például a GNOME, a
KDE vagy az
XFce környezetek
valamelyikét, a startx
paranccsal
indíthatjuk el a grafikus felületet.
Némely felhasználók a megszokott szöveges bejelentkezés helyett is inkább valamelyik X11 alapú grafikus bejelentkezést szeretnék használni. A különböző bejelentkező képernyők, mint amilyen az Xorg esetén az XDM, a GNOME esetén a gdm, vagy a KDE esetén a kdm (illetve a Portgyűjteményből származó egyéb megoldások) alapvetően a konzolos bejelentkezés helyett nyújtanak egy grafikus bejelentkező felületet. Ilyenkor a sikeres bejelentkezést követően a felhasználó közvetlenül egy grafikus környezetbe kerül.
A parancssoros felület esetén a rendszertöltő képernyő elrejti az összes rendszerüzenetet és a rendszer indításakor futtatott programok üzeneteit. Az X11 használata esetén azonban a felhasználók ezzel együtt már a többi, alapértelmezés szerint grafikus felülettel rendelkező rendszerhez (Microsoft(R) Windows(R) vagy más nem-UNIX operációs rendszer) hasonló élményt nyernek.
A FreeBSD csak BMP
(.bmp
) vagy ZSoft PCX
formátumú, 256 színű
rendszerbetöltő képek
megjelenítését támogatja.
Emellett szabványos VGA kártyákon csak
akkor fog működni, ha a kép 320x200 vagy
annál kisebb felbontású.
Nagyobb méretű képek esetén,
egészen az 1024x768-as felbontásig, a FreeBSD
VESA támogatására
lesz szükségünk. Ezt vagy a rendszer
indításakor a VESA modul
betöltésével
engedélyezhetjük, vagy ha a rendszermag
konfigurációs
állományában megadjuk a
VESA
sort és
készítünk egy saját rendszermagot
(lásd 8. fejezet - A FreeBSD rendszermag testreszabása). A
VESA támogatáson
keresztül a felhasználók a teljes
képernyőt betöltő
rendszerbetöltő képeket is meg tudnak
így jeleníteni.
A rendszerbetöltő képernyő a rendszer indítása közben bármikor tetszőlegesen kikapcsolható egy tetszőleges billentyű lenyomásával.
A megadott betöltőképernyő
alapértelmezés szerint a
képernyővédő szerepét is
betölti az X11 felületén kívül.
Ha tehát egy ideig nem használjuk a
számítógépünket, akkor a
képernyő átvált a
betöltőképre és folyamatosan
változtatni kezdi az intenzitását, a
nagyon világosból a nagyon
sötétbe, majd újrakezdi. Az
alapértelmezett képernyővédő
az /etc/rc.conf
állományban a saver=
sor
megadásával állítható
át. Ehhez a beállításhoz
több különböző
beépített képernyővédő
tartozik, ezek teljes listáját a
splash(4) man oldalon olvashatjuk. Ezek
közül az alapértelmezett a
"warp". Az /etc/rc.conf
állományban megadható
saver=
csak a virtuális konzolokra
vonatkozik, az X11 bejelentkező képernyőire
semmilyen hatással sincs.
A rendszerbetöltő néhány üzenete, valamint a rendszerindítási opciókat tartalmazó menü és a hozzá tartozó visszaszámlálás még a rendszerbetöltő képernyő használata során is meg fog jelenni.
A http://artwork.freebsdgr.org címen találhatunk néhány ilyen betöltőképernyőt. A sysutils/bsd-splash-changer port telepítésével pedig a rendszer egyes indításakor egy előre megadott gyűjteményből tudunk véletlenszerűen választani egyet.
A betöltőképet tartalmazó
(.bmp
vagy .pcx
kiterjesztésű) állományt a
rendszerindító partícióra,
például a /boot
könyvtárba
kell tennünk.
A normál (256 szín, legfeljebb 320x200-as
felbontású) képek esetén a
következő sorokat adjuk hozzá a
/boot/loader.conf
állományhoz:
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/betöltőkép.bmp
"
Nagyobb felbontás esetén (legfeljebb
1024x768-as méretig) pedig a
/boot/loader.conf
állománynak a következőket kell
tartalmaznia:
vesa_load="YES"
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/betöltőkép.bmp
"
Az iménti példában
feltételeztük, hogy a
/boot/betöltőkép.bmp
állományt használjuk
betöltőképként. Amikor azonban
PCX állományokat akarunk
használni, a következő sorokat kell
megadnunk, a felbontástól függően a
vesa_load="YES"
sorral
kiegészítve:
splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="/boot/betöltőkép.pcx
"
Természetesen a kép neve sem csak
"betöltőkép" lehet.
Tetszőlegesen elnevezhetjük, egyedül csak
arra kell ügyelünk, hogy BMP
vagy PCX formátumú legyen:
splash_640x400.bmp
vagy például
blue_wave.pcx
.
További érdekes
beállítások a
loader.conf
állományból:
beastie_disable="YES"
Ennek megadásakor nem jelenik meg a rendszerindítási lehetőségeket felkínáló menü, de a visszaszámlálás megmarad. Hiába tiltjuk le a menüt, ilyenkor továbbra is választanunk kell a lehetőségek közül.
loader_logo="beastie"
Ezzel a beállítással a menüben látható "FreeBSD" feliratot cserélhetjük le a korábbi kiadásokban szereplő színes démonos emblémára.
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>.