A FreeBSD képes úgy is elindulni, ha konzolként mindössze egy buta terminált kapcsolunk rá soros porton keresztül. Az ilyen típusú konfigurációs alapvetően két típus számára bizonyul hasznosnak: azon rendszergazdák számára, akik billentyűzettel és monitorral nem rendelkező gépekre akarnak FreeBSD-t telepíteni, és olyan fejlesztők számára, akik a rendszermag vagy különböző eszközmeghajtók működését akarják nyomon követni.
Ahogy arról már a 12. fejezet - A FreeBSD rendszerindítási folyamataben is
szó esett, a FreeBSD három indítási
fokozattal rendelkezik. Az első két fokozat a
rendszerindító blokk kódjában foglal
helyet, amely pedig a lemezen található FreeBSD slice
elején. A rendszer indulásakor ez a blokk
betöltődik és lefuttatja a harmadik fokozatot
képviselő rendszertöltőt (a
/boot/loader
állományt).
Ha soros vonali konzol beállításához tehát be kell állítanunk a rendszerindító blokkot, a rendszertöltőt és a rendszermagot.
Ebben a szakaszban azt feltételezzük, hogy az alap beállításokkal dolgozunk és csupán egy gyors áttekintésre van szükségünk a soros vonali konzolról.
Csatlakoztassunk egy soros kábelt a
COM1
portra és a
terminálra.
Rendszeradminisztrátorként a következő parancs kell kiadnunk ahhoz, hogy a soros konzolon láthassuk az összes rendszerindításhoz tartozó üzenetet:
#
echo 'console="comconsole"' >> /boot/loader.conf
Nyissuk meg az /etc/ttys
állományt, és a
ttyd0
eszközhöz
tartozó sorban írjuk át az
off
paramétert az
on
értékre és a
dialup
paramétert a
vt100
értékre. Ha nem
ezeket állítjuk be, akkor a soros konzol
keresztül jelszó megadása
nélkül is be tudunk jelentkezni, ami viszont egy
biztonsági rés veszélyével
fenyeget.
A változtatások érvényesítéséhez indítsuk újra a rendszerünket.
Ha ettől eltérő beállításokra lenne szükségünk, akkor a folyamat egyes lépéseibe a 26.6.3. szakasz - A soros vonali konzol beállításaban kaphatunk mélyebb betekintést.
Készítsük elő a soros kábelt.
Vagy a null-modem kábelre vagy pedig egy szabványos soros kábelre és egy null-modem átalakítóra lesz szükségünk. A soros kábelekkel kapcsolatosan a 26.2.2. szakasz - Kábelek és portokt érdemes elolvasni.
Húzzuk ki a billentyűzetet.
A legtöbb személyi számítógép az indítása (vagyis a Power-On Self-Test, POST) során hibát jelez, ha nem érzékel billentyűzetet. Egyes gépek hangosan panaszolják a billentyűzet hiányát, és nem is hajlandóak egészen addig elindulni, amíg nem csatlakoztatunk egyet.
Ha a számítógépünk hibát küld, de ennek ellenére mégis elindul, akkor semmit nem kell csinálnunk. (Némelyik Phonix BIOS-os gépen ilyenkor megjelenik a Keyboard failed hibaüzenet, de ettől még rendesen elindul a gép.)
Amennyiben a számítógépünk nem hajlandó billentyűzet nélkül elindulni, állítsuk be a BIOS-ban a „hiba” figyelmen kívül hagyását (már ha ez lehetséges). Az alaplap leírásában találhatjuk meg ennek pontos részleit.
A BIOS paraméterei között a billentyűzetet állítsuk „Not installed” állapotúra. Ilyenkor még továbbra is használható a billentyűzet, ezzel mindössze csak a BIOS számára tiltjuk le az indításkori ellenőrzést, ezért nem fog panaszkodni a hiánya miatt. Tehát a billentyűzetet még a „Not installed” beállítása esetén is nyugodtan csatlakoztatjuk, mert működni fog.
Ha a rendszerünkön PS/2®-es egér is található, akkor jó eséllyel a billentyűzettel együtt az egeret is ki tudjuk húzni. Mivel a PS/2®-es egér osztozik a billentyűzettel bizonyos hardvereken, ezért ha nem húzzuk ki az egeret is, akkor az alaplap még továbbra is képes azt gondolni, hogy a billentyűzet ott van. Például az AMI BIOS-os Gateway 2000-as 90 MHz-es Pentium rendszer pontosan így működik. Általában véve azonban ez nem szokott gondot okozni, mivel az egér billentyűzet nélkül úgy sem ér túlságosan sokat.
Csatlakoztassunk egy buta terminált a
COM1
(sio0
) portra.
Ha nem rendelkezünk buta terminállal, akkor
erre célra ugyanúgy alkalmas egy régi
XT-s PC valamilyen modemprogrammal vagy egy soros porton
csatlakozó másik UNIX®-os gép. Ha
nincs COM1
(sio0
) portunk, akkor
szerezzünk egyet. Jelen pillanatban a
rendszerindító blokk
újrafordítása nélkül a
COM1
porton kívül nem
tudunk másikat választani. Ha a
COM1
portra már raktunk
valamilyen másik eszközt, akkor azt ideiglenesen
húzzuk le, majd a FreeBSD telepítése
és elindítása után tegyünk
fel egy másik rendszerindító blokkot.
(Egyébként feltételezzük, hogy a
COM1
elérhető egy
állomány/számító/terminálszerveren
— ha valóban valamilyen másik
célra szükségünk lenne a
COM1
portra (és
semmiképpen sem tudjuk átrakni a
COM2
(sio1
) portra), akkor
valószínűleg nem is ezzel kellene
elsőként foglalkoznunk.)
Gondoskodjunk róla, hogy a rendszermag
beállításait tartalmazó
állományban a COM1
(sio0
) eszközhöz megadtuk
a megfelelő paramétereket.
Ezek az alábbiak:
0x10
A konzolos működési mód
engedélyezése az adott egységhez.
Ha megadjuk ezt a paramétert, akkor a
többit a rendszer figyelmen kívül
hagyja. Pillanatnyilag legfeljebb egy egység
birtokolhatja ezt a beállítást.
Ha több ilyet adtunk volna meg, akkor (a
felírás sorrendje szerint) az első
kap ilyen szerepet. Ez a
beállítás önmagában
még nem teszi a soros portot konzollá.
Ehhez még szükségünk van a
következő beállításra,
vagy a -h
megadására
is.
0x20
Az egység konzollá
nyilvánítása (hacsak nincs egy
tőle nagyobb prioritású konzol),
függetlenül a lentebb ismertetendő
-h
opciótól. A
0x20
értéket a
0x10
értékkel
együtt kell megadni.
0x40
(A 0x10
értékkel
együtt) az egységet kivonja a
normális elérés alól. Ezt
a beállítást ne
használjuk, ha soros vonali konzolt akarunk
üzemeltetni az adott porton. Ezzel az
egységet csak a rendszermag távoli
nyomkövetéséhez tudjuk
használni. A távoli
nyomkövetésről a
fejlesztők
kézikönyvében olvastunk
bővebben.
Példa:
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
A további részletekről a sio(4) man oldal tud felvilágosítást nyújtani.
Ha nem állítottuk be a megfelelő paramétereket, akkor (egy másik konzolon) futtassuk a UserConfig programot vagy fordítsuk újra a rendszermagot.
Hozzunk létre egy
boot.config
állományt a
rendszer indításához használt
meghajtó a
partíciójának
gyökerében.
Ez az állomány mondja meg a rendszerindító blokkban található kódnak, hogy miként akarjuk indítani a rendszerünket. A soros vonali konzol életrekeltéséhez a most következő opciók közül kell megadnunk egyet vagy többet — amennyiben többet akarunk megadni, akkor mindegyiket egyetlen sorban szerepeltessük:
-h
A belső és a soros vonali konzolok
közti átkapcsolás. Ezzel tudunk a
konzolos eszközök között
váltani. Például, ha egy
belső (video) konzolról indítjuk a
rendszert, akkor a rendszertöltőnek
és a rendszermagnak átadott
-h
paraméterrel arra tudjuk
ezeket utasítani, hogy konzolként a
soros portot használják. Vagy ha soros
porton keresztül indítjuk a rendszert,
akkor -h
megadásával
megkérhetjük a rendszertöltőt
és a rendszermagot, hogy ezután
már a videokártyát
használja konzolként.
-D
Az egy- és kétkonzolos
beállítások közti
váltás. Az egykonzolos
konfigurációban a konzol lehet
belső (video) vagy soros vonali, attól
függően, hogy miként
használtuk a fenti -h
opciót. A kétkonzolos
konfigurációban azonban a
videokártyán és a soros vonalon
keresztül is egyszerre megjelenik a konzol,
függetlenül a -h
hatásától. Ilyenkor viszont
vegyük figyelembe, hogy ez a kétkonzolos
konfiguráció csak a
rendszerindító blokk futása alatt
él. Amint a rendszerindító
megkapja a vezérlést, a
-h
által megadott konzol
válik az egyedülivé.
-P
A rendszerindító blokk
megpróbálja megkeresni a
billentyűzetet. Ha nem találja, akkor
magától beállítja a
-D
és -h
opciókat.
Tárbeli korlátozások miatt
a rendszerindító blokk jelenlegi
változata a -P
paraméterrel csak a kiterjesztett
billentyűzeteket képes kezelni. A 101
gombnál kevesebbel (tehát F11
és F12 gombokkal nem) rendelkező
billentyűzeteket ezért nem
feltétlenül fogja észlelni.
Ugyanezen korlátozás miatt egyes
laptopokon sem minden esetben sikerül
érzékelni a billentyűzetet. Ha
ez a rendszerünkön
problémához vezetne, akkor
egyszerűbb lesz elhagyni a -P
használatát. Sajnos, jelenleg
semmilyen megoldás nincs erre.
Vagy a -P
opcióval
állítassuk be automatikusan a konzolt, vagy
pedig a -h
opcióval
engedélyezzük a soros vonali konzolt.
Természetesen itt a boot(8) man oldalon szereplő összes többi paramétert is megadhatjuk.
A -P
kivételével az
összes opció a rendszertöltőnek
(/boot/loader
) kerül
átadásra. A rendszertöltő
egyedül a -h
állapotából dönti el, hogy mely
belső videoeszközön vagy soros porton legyen
a konzol. Ez azt jelenti, hogy a
/boot.config
állományban
ha megadjuk a -D
opciót, de mellette
nem szerepel a -h
, akkor a soros vonali
konzolt csak a rendszerindító blokk
futása alatt tudjuk elérni — a
rendszertöltő ugyanis alapból a
videokártyát használja
konzolként.
Kapcsoljuk be a számítógépünket.
Amikor elindítjuk a FreeBSD-s gépünket,
a rendszerindító blokk kiírja a
/boot.config
tartalmát a
konzolra. Például így:
/boot.config: -P Keyboard: no
A második sor csak olyankor jelenik meg, ha a
/boot.config
állományban
a -P
beállítás is
szerepel, és a billentyűzet
jelenlétét (yes) vagy hiányát
(no) jelzi. A /boot.config
tartalmától függően ezek az
üzenetek vagy a soros vonali vagy a belső konzolon
jelennek meg, esetleg mind a kettőn.
Beállítás | Ahol megjelenik |
---|---|
nincs | belső konzol |
-h | soros vonali konzol |
-D | soros vonali és belső konzol |
-Dh | soros vonali és belső konzol |
-P , van
billentyűzet | belső konzol |
-P , nincs
billentyűzet | soros vonali konzol |
Az iménti üzenetek felbukkanása után a további konzolos üzenetek küldésében egy rövid szünet következik, amíg a rendszerindító blokk a rendszertöltő betöltésével folytatja a rendszer indítását. Normális körülmények között ezt a folyamatot nem kell megszakítanunk, de esetleg olyankor mégis érdemes lehet, ha le akarjuk ellenőrizni a beállításainkat.
A rendszerindítási folyamat félbeszakításához az Enter billentyűn kívül nyomjuk le valamelyik másikat. Ekkor a rendszerindító blokk megáll és várja a további parancsokat. Ekkor valami ilyesmit láthatunk:
>> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot:
Nézzük meg, hogy
/boot.config
beállításainak megfelelően a fenti
üzenet a soros vonali konzolon vagy a belső
konzolon, illetve mind a kettőn megjelenik-e. Ha az
üzenet a megfelelő konzolon megjelenik, akkor az
Enter lenyomásával
folytathatjuk a rendszer
indítását.
Ha nekünk a soros vonali konzolra lenne
szükségünk, de semmi nem jelenik meg a
soros terminálon, akkor valamit
valószínűleg nem jól
állítottunk be. A
rendszerindító blokktól kapott
parancssorban a -h
begépelésével és az
Enter vagy Return
lenyomásával (ha lehetséges)
jelezzük neki (és így a
rendszertöltőnek és a rendszermagnak is) a
soros vonali konzol kiválasztását.
Miután befejeződött a rendszer
indítása, menjünk vissza és
ellenőrizzük a megfelelő
paramétereket.
Ahogy sikerült elindítani a rendszertöltőt és a rendszerindítás harmadik fokozatába léptünk, a rendszertöltő megfelelő környezeti változóin keresztül még mindig van lehetőségünk váltani a soros vonali és a belső konzol között, lásd 26.6.6. szakasz - A konzol megváltoztatása a rendszertöltőből.
Itt most röviden összefoglaljuk az eddig tárgyalt különböző beállításokat és ténylegesen kiválasztott konzolt.
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
A /boot.config beállításai | Konzol a rendszerindító blokk alatt | Konzol a rendszertöltő alatt | Konzol a rendszermagban |
---|---|---|---|
nincsenek | belső | belső | belső |
-h | soros vonali | soros vonali | soros vonali |
-D | soros vonali és belső | belső | belső |
-Dh | soros vonali és belső | soros vonali | soros vonali |
-P , van
billentyűzet | belső | belső | belső |
-P , nincs
billentyűzet | soros vonali és belső | soros vonali | soros vonali |
device sio0 at isa? port IO_COM1 flags 0x30 irq 4
A /boot.config beállításai | Konzol a rendszerindító blokk alatt | Konzol a rendszertöltő alatt | Konzol a rendszermagban |
---|---|---|---|
nincsenek | belső | belső | soros vonali |
-h | soros vonali | soros vonali | soros vonali |
-D | soros vonali és belső | belső | soros vonali |
-Dh | soros vonali és belső | soros vonali | soros vonali |
-P , van
billentyűzet | belső | belső | soros vonali |
-P , nincs
billentyűzet | soros vonali és belső | soros vonali | soros vonali |
A soros port alapértelmezései a következők: 9600 baud, 8 bites átvitel, paritás nincs és 1 stopbit. Ha a konzol alapsebességét meg akarjuk változtatni, akkor ahhoz a következőket kell tennünk:
Fordítsuk újra a
rendszerindító blokkokat úgy, hogy a
BOOT_COMCONSOLE_SPEED
változóban a konzolnak egy másik
sebességet adunk meg. Az új
rendszerindító blokkok
fordításáról és
telepítéséről a 26.6.5.2. szakasz - Soros vonali konzol a sio0
porton kívül másholban kapunk részletes
leírást.
Ha a soros vonali konzolt nem a -h
opcióval állítottuk be, vagy ha a
rendszermag a rendszerindító
blokkoktól eltérő módon
éri el a soros vonali konzolt, akkor a rendszermag
beállításai közé
még az alábbit is fel kell vennünk,
majd újra kell fordítanunk:
options CONSPEED=19200
A rendszermagnak adjuk át a -S
rendszerindítási paramétert. A
-S
parancssori opció a
/boot.config
állományban is megadható. A
boot(8) man oldalon tudhatjuk meg, hogy a
/boot.config
beállításai közé hogyan
tudjuk felvenni és ott milyen további
lehetőségeink vannak még.
A /boot/loader.conf
állományban engedélyezzük a
comconsole_speed
beállítást.
Ez a beállítás a szintén a
/boot/loader.conf
állományban megadható
console
, boot_serial
és boot_multicons
változóktól függ. A soros
vonali konzol sebességét tehát
például így tudjuk
megváltoztatni a
comconsole_speed
megadásával:
boot_multicons="YES" boot_serial="YES" comconsole_speed="115200" console="comconsole,vidconsole"
Ha valamilyen okból kifolyólag nem a
sio0
porton keresztül akarjuk
használni a konzolt, akkor ahhoz a
rendszerindító blokkok, a
rendszertöltő és a rendszermag
forrásait újra kell fordítanunk az
alábbiak szerint:
Szerezzük be a rendszermag forrását. (Lásd 24. fejezet - A FreeBSD frissítése és frissen tartása)
Írjuk át a
/etc/make.conf
állományban a
BOOT_COMCONSOLE_PORT
címét az általunk használt
porthoz tartozóéra (0x3F8, 0x2F8, 0x3E8 vagy
0x2E8). Itt csak a sio0
és sio3
(COM1
és
COM4
) közti portok
használhatóak — a töbportos soros
kártyák címei nem adhatóak
meg. A megszakításokat nem kell
beállítanunk.
Készítsünk egy saját
rendszermag beállításait
tartalmazó állományt, és
vegyük fel bele a használni
kívánt soros port megfelelő
paramétereit. Például, ha a
sio1
(COM2
) eszközt akarjuk
konzolként használni:
device sio1 at isa? port IO_COM2 flags 0x10 irq 3
vagy
device sio1 at isa? port IO_COM2 flags 0x30 irq 3
A konzolra vonatkozó beállításokat a többi soros portnál ne adjuk meg.
Fordítsuk újra és telepítsük a rendszerindító blokkot és a rendszertöltőt:
#
cd /sys/boot
#
make clean
#
make
#
make install
Fordítsuk és telepítsük újra a rendszermagot.
A bsdlabel(8) segítségével másoljuk az új rendszerindító blokkot a rendszer indítását végző lemezre és töltsük be az új rendszermagot.
Ha a soros vonali konzolról akarjuk használni a rendszermagba épített nyomkövetőt (ami hasznos lehet távoli vizsgálódáskor, de egyben veszélyes is, ha a soros porton tévesen kiküldünk egy BREAK jelzést!), akkor a rendszermagot a következő beállításokkal kell fordítanunk:
options BREAK_TO_DEBUGGER options DDB
Habár erre nincs feltétlenül szükségünk, a rendszer üzeneteinek és a rendszermag nyomkövetőjének elérése után akár be is tudunk jelentkezni a soros vonalon keresztül. Íme!
Nyissuk meg az /etc/ttys
állományt a kedvenc
szövegszerkesztőnkkel és keressük meg a
következő sorokat:
ttyd0 "/usr/libexec/getty std.9600" unknown off secure ttyd1 "/usr/libexec/getty std.9600" unknown off secure ttyd2 "/usr/libexec/getty std.9600" unknown off secure ttyd3 "/usr/libexec/getty std.9600" unknown off secure
A ttyd0
és
ttyd3
közti sorok pontosan a
COM1
és
COM4
közti portoknak felelnek
meg. A használni kívánt port
sorában szereplő off
paramétert írjuk át az
on
értékre. Ha a soros port
sebességét is megváltoztattuk, minden
bizonnyal a std.9600
helyett is az adott
sebességhez illeszkedő paramétert kell
megadnunk, például az
std.19200
értékkel.
Érdemes továbbá még az
unknown
helyett megadni az adott
terminál típusát.
Az állomány
módosítását követően a
változatások
érvényesítéséhez ki kell
adnunk a kill -HUP 1
parancsot is.
A korábbi szakaszokban arról beszéltünk, hogy miként állítsuk be a soros vonali konzolt a rendszerindító blokk megpiszkálásával. Ebben a szakaszban viszont azt mutatjuk meg, hogy különböző parancsokon és környezeti változókon keresztül miként tudjuk megadni a konzolt a rendszertöltőben. Mivel a rendszertöltőre a rendszerindítás harmadik fokozatában kerül sor, az ott megadott értékekkel felül tudjuk bírálni a rendszerindító blokk beállításait.
A rendszertöltő és a rendszermag az
/boot/loader.conf
állományon keresztül elég
könnyen rávehető a soros vonali konzol
használatára:
set console="comconsole"
Ez a rendszerindító blokk előző szakaszban tárgyalt beállításaitól függetlenül érvényesül.
A fenti sort a /boot/loader.conf
állomány elejére érdemes
tennünk, így a soros vonali konzolon már a
lehető leghamarabb megjelennek a rendszer
üzenetei.
Ehhez hasonló módon a belső konzolt is megadhatjuk:
set console="vidconsole"
Ha a rendszertöltőben nem adjuk meg a
console
környezeti változó
értékét, akkor a rendszertöltő,
és így a rendszermag is, a
rendszerindító blokkban a -h
opció által meghatározott konzolt fogja
használni.
A konzol a /boot/loader.conf.local
vagy a /boot/loader.conf
állományokban adható meg.
A részletekkel kapcsolatban lásd a loader.conf(5) man oldalt.
Jelen pillanatban a rendszertöltőnek nincs a
-P
paraméterrel ekvivalens
értékű beállítása,
ezért a billentyűzet jelenléte
alapján nem képes magától
választani a belső és a soros vonali
konzol között.
A rendszertöltőt ne a
sio0
eszközzel fordítsuk
újra a soros vonali konzolhoz. Ehhez
kövessük a 26.6.5.2. szakasz - Soros vonali konzol a sio0
porton kívül másholban
leírt eljárás
lépéseit.
A szakaszban szereplő ötletek alapján sokan így most már könnyen be tudnak állítani egy billentyűzet és grafikus hardver nélküli dedikált szervert. Sajnos azonban a legtöbb rendszer nem engedi a billentyűzet nélküli indítást, és akad néhány olyan is, amely pedig a grafikus kártya hiányában nem is indul el. Az AMI BIOS-os gépeknél a grafikus kártya nélküli indításhoz elegendő csupán a beállítások között a grafikus kártyát („graphics adapter”) „Not installed” (nem telepített) állapotúra állítani. Ha ilyen opció nem található a BIOS-ban, akkor helyette keressük a „Halt on Error” (leállás hiba esetén) változatot. Ha ezt a „All but Keyboard” (a billentyűzet kivételével minden) vagy akár a „No Error” (soha) értékre állítjuk, az előbbi eredményt kapjuk.
Ennek ellenére előfordulhat azonban, hogy egyes gépeken egyáltalán nem találunk ilyen lehetőséget és videokártya nélkül nem indulnak el. Ezekben az esetekben tegyünk a gépbe valamilyen kártyát (ehhez elég egy egyszerű típus is), de monitort már ne kössünk rá. Esetleg megpróbálkozhatunk még AMI BIOS telepítésével is.
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>.