This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.
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®, 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 a
X-et átírjuk a
linuxos meghajtó betűjelére és az
Y-t átírjuk a Linux®
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 ismeri eléggé 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.
A veszélyesen dedikált mód (Dangerously Dedicated Mode)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, ami 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, amin 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.
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.
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 indexet adunk meg, akkor az elérhető témakörök listáját kapjuk meg.
Feldolgozza a megnevezett állományt: beolvassa, majd sorról-sorra értelmezi. Hiba esetén azonnal megállítja a feldolgozást.
-t
típus]
állománynévA 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.
-l
]
[elérési
útvonal]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.
-v
]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.
-v
]Kilistázza a betöltött modulokat. Ha
többet szeretnénk megtudni róluk, adjuk
meg a -v
kapcsolót.
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.
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).
Megjegyzés: 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, amiket mi magunk tennénk akkor, amikor a rendszermagot indítjuk) betöltése:
load -t userconfig_script /boot/kernel.conf
Előző | Tartalom | Következő |
A rendszerindítás problémája | Fel | Kapcsolat a rendszermaggal a rendszerindítás folyamán |
Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.