FreeBSD kézikönyv
Előző | Fejezet 26. Soros vonali kommunikáció | Következő

# 26.6. A soros vonali konzol beállítása

Készítette: Kazutaka YOKOTA. Az alapján szolgáló írást készítette: Bill Paul.

## 26.6.1. Bevezetés

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 fejezetben 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.

## 26.6.2. A soros konzol beállítása, rövidített változat

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.

1. Csatlakoztassunk egy soros kábelt a `COM1` portra és a terminálra.

2. 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

3. 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.

4. 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 Szakaszban kaphatunk mélyebb betekintést.

## 26.6.3. A soros vonali konzol beállítása

1. 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 Szakaszt érdemes elolvasni.

2. 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.

   > Tipp: 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.

   > Megjegyzés: 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.

3. 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.)

4. 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.

5. 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.

     > Megjegyzés: 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.

6. 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.

## 26.6.4. Összefoglalás

Itt most röviden összefoglaljuk az eddig tárgyalt különböző beállításokat és ténylegesen kiválasztott konzolt.

### 26.6.4.1. 1. eset: a `sio0` eszköznél a 0x10 beállítást adjuk meg

    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

### 26.6.4.2. 2. eset: a `sio0` eszköznél 0x30 beállítása

    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

## 26.6.5. Tanácsok a soros vonali konzol használatához

### 26.6.5.1. Nagyobb soros vonali sebesség beállítása

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 Szakaszban 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"

### 26.6.5.2. Soros vonali konzol a `sio0` porton kívül máshol

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:

1. Szerezzük be a rendszermag forrását. (Lásd 24 fejezet)

2. Í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.

3. 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.

4. Fordítsuk újra és telepítsük a rendszerindító blokkot és a rendszertöltőt:

       # cd /sys/boot
       # make clean
       # make
       # make install

5. Fordítsuk és telepítsük újra a rendszermagot.

6. 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.

### 26.6.5.3. A DDB elérése a soros vonalról

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

### 26.6.5.4. A bejelentkező képernyő elérése a soros vonali konzolról

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.

## 26.6.6. A konzol megváltoztatása a rendszertöltőből

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.

### 26.6.6.1. A soros vonali konzol beállítása

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.

> Megjegyzés: 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.

### 26.6.6.2. Soros vonali konzol a `sio0` porton kívül máshol

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 Szakaszban leírt eljárás lépéseit.

## 26.6.7. Figyelmeztetések

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.

Előző | Tartalom | Következő
A betárcsázós szolgáltatások használata | Fel | A PPP és a SLIP

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>.