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

# 26.3. Terminálok

Készítette: Sean Kelly.

A terminálok olyankor kínálnak kényelmes és költséghatékony hozzáférést a FreeBSD rendszerünkhöz, amikor sem a gép konzolját, sem pedig a hozzá tartozó hálózatot nem érjük el. Ebben a szakaszban olvashatjuk, miként kell terminálokat használni FreeBSD alatt.

## 26.3.1. A terminálok alkalmazásai és típusai

Az eredeti UNIX® rendszereknek nem voltak konzoljaik. Ehelyett az emberek a soros portokra csatlakoztatott terminálokon keresztül jelentkeztek be és így futtattak rajtuk programokat. Ez nagyon hasonlít ahhoz, mint amikor egy modem és egy terminálprogram felhasználásával betárcsázunk egy távoli gépre és vele szöveges módban dolgozunk.

Napjaink személyi számítógépein azonban találhatunk már akár nagy felbontású megjelenítéssel megáldott konzolokat is, habár a soros porton keresztüli bejelentkezés lehetősége még mind a mai napig elérhető a legtöbb UNIX-alapú rendszerben. Ez alól a FreeBSD sem kivétel. Ha rákötünk egy terminált a gépünk egyik üres soros portjára, akkor a megszokott módon képesek vagyunk bejelentkezni a rendszerbe és futtatni bármilyen szöveges programot, hasonlóan ahhoz, ahogy azt a konzolban vagy az X Window Systemben egy `xterm` ablakban megtehetjük.

Ha egy irodában vagyunk, akkor egy FreeBSD rendszerre több terminált is kapcsolhatunk, melyek az alkalmazottak asztalain foglalnak helyet. Otthoni használat esetén egy kiöregedett számítógép, például egy régi IBM PC vagy egy Macintosh® is ráköthető egy gyorsabb FreeBSD rendszerre. Ennek segítségével az egyébként egyfelhasználós számítógépünket egy valódi többfelhasználós rendszerré alakíthatjuk.

A FreeBSD esetén háromféle terminálról beszélhetünk:

- A buta (dumb) terminálok

- A terminálként funkcionáló személyi számítógépek

- Az X terminálok

A most következő alszakaszokban ezeket fejtjük ki részletesebben.

### 26.3.1.1. A buta terminálok

A buta terminál alatt olyan speciálizált eszközt értünk, amellyel soros vonalon keresztül csatlakozunk számítógépekhez. Azért nevezik ezeket “butának”, mert csupán annyi számítási teljesítményt zsúfoltak beléjük, hogy szöveget legyenek képesek küldeni, fogadni és megjeleníteni. Semmilyen program nem képes rajtuk futni. Helyette az a számítógép fogja a szövegszerkesztőt, fordítóprogramot, levelező klienst, játékot és a többit futtatni, amelyre vele kapcsolódtunk.

A buta termináloknak többszáz, különböző gyártmányú fajtája létezik. Ilyenek például a Digital Equipment VT-100 vagy a Wyse WY-75 típusú termináljai. A FreeBSD szinte mindegyiküket ismeri. Egyes drágább terminálok még grafikus megjelenítésre is képesek, de ezeket a lehetőségeket csak bizonyos szoftverek tudják ténylegesen kihasználni.

A buta terminálok leginkább olyan munkahelyeken terjedtek el, ahol az alkalmazottaknak nincs szükségük grafikus alkalmazások, tehát például az X Window System használatára.

### 26.3.1.2. Személyi számítógépek mint terminálok

Ha egy buta terminál csupán szöveg küldésére, fogadására és megjelenítésére képes, akkor bármelyik személyi számítógép utána tudja mindezt csinálni. Ehhez mindössze egy megfelelő kábelre és az adott gépen futó terminál emulációs szoftverre van szükségünk.

Az ilyen fajta megoldás nagyon elterjedt az otthoni használat esetén. Például, ha valamelyik családtagunk éppen szorgalmasan dolgozik a FreeBSD rendszerkonzolján, akkor a rákapcsolt terminálon keresztül még mi magunk is el tudunk végezni valamennyi szöveges felületet igénylő munkát.

Az alap FreeBSD rendszerben legalább két segédprogram használható a soros vonali kapcsolaton keresztüli munkára: a cu(1) és a tip(1).

Egy FreeBSD rendszerű kliensről így tudunk csatlakozni egy másik rendszerre:

    # cu -l soros-vonali-eszköz

Ahol a “soros-vonali-eszköz” a rendszerünkben a soros portot jelölő speciális eszköz neve. Az ilyen eszközök neve `/dev/cuad`N``.

Az eszköz nevében az “N”-es rész a soros port sorszámát adja meg.

> Megjegyzés: A FreeBSD-ben az eszközök sorszámozása nullától kezdődik, nem pedig egytől (ellentétben tehát azzal, ahogy azt az MS-DOS® rendszerekben és leszármazottaikban már megszokhattuk). Ez azt jelenti, hogy amit az MS-DOS alapú rendszerekben `COM1`-nek hívnak, az a FreeBSD-ben általában a `/dev/cuad0`.

> Megjegyzés: Egyes emberek más, többnyire a Portgyűjteményből is elérhető programokat szeretnek inkább használni. A portok között találhatunk elég sok olyan szoftvert, amely a cu(1) és a tip(1) programokhoz hasonlóan működik. Ilyen például a `comms/minicom`.

### 26.3.1.3. Az X terminálok

Az X terminálok a terminálok közül a legfejlettebbek. Általában nem is soros porton, hanem hálózaton, például Etherneten keresztül csatlakoznak. Természetesen nem csak szöveges alkalmazásokat, hanem lényegében bármilyen X alkalmazást képesek megjeleníteni.

Az X terminálokról itt most csak a teljesség kedvéért szólunk, de ebben a fejezetben nem szándékozunk tárgyalni az X terminálok csatlakoztatását, beállítását és használatát.

## 26.3.2. Beállítás

Ebben a fejezetben ismertetjük mindazt, ami ahhoz kell, hogy a FreeBSD rendszerünkön engedélyezni tudjuk a terminálon keresztüli bejelentkezéseket. Feltételezzük, hogy a rendszermagunk támogatja a terminálok által használt soros portokat, illetve, hogy ezeket már csatlakoztattuk is.

Ha visszagondolunk a 12 fejezetre, akkor eszünkbe juthat, hogy a rendszer indításakor az `init` nevű program felelős az összes futó program irányításáért és inicializálódásáért. Az `init` egyik feladata, hogy beolvassa az `/etc/ttys` állományt és neki megfelelően az elérhető terminálokon elindítsa a `getty` programot. A `getty` felelős a bejelentkezéshez szükséges azonosító beolvasásáért és a `login` program elindításáért.

Ennek megfelelően tehát, ha a FreeBSD rendszerünkön terminálokat akarunk beállítani, akkor ehhez a következő lépéseket kell megtennünk `root` felhasználóként:

1. Az `/etc/ttys` állományba vegyünk fel egy bejegyzést a soros porthoz tartozó `/dev` könyvtárbeli eszközhöz, ha még nem szerepelne benne.

2. A porthoz adjuk meg a `/usr/libexec/getty` programot, majd hozzá az `/etc/gettytab` állományból válasszuk ki a megfelelő `getty` típust.

3. Adjuk meg a terminál alapértelmezett típusát.

4. Állítsuk a portot “on” (bekapcsolt) állapotúra.

5. Adjuk meg, hogy a port “secure” (biztonságos) legyen-e.

6. Mondjuk meg az `init` programnak, hogy olvassa újra az `/etc/ttys` állományt.

A másik lépés kiegészítő lépéseként az `/etc/gettytab` állományban mi magunk is létrehozhatunk egy saját `getty` típust. A fejezetben ehhez ugyan nem adunk segítséget, de ha érdekel minket a téma, akkor ezzel kapcsolatban a gettytab(5) és getty(8) man oldalakat érdemes elolvasni.

### 26.3.2.1. Egy bejegyzés felvétele az `/etc/ttys` állományba

Az `/etc/ttys` állományban találhatjuk meg az összes portot, ahonnan a FreeBSD rendszerünk engedélyezi a bejelentkezést. Például a `ttyv0`, az első virtuális konzol is szerepel benne. Ezen a bejegyzésen keresztül tudunk bejelentkezni a konzolra. Ebben az állományban találjuk meg még a többi virtuális konzol, soros port és pszeudoterminál bejegyzéseit is. A rögzített terminálok esetén egyszerűen csak adjuk meg a soros porthoz tartozó `/dev` könyvtárbeli eszközt a `/dev` előtag nélkül (így például a `/dev/ttyv0` `ttyv0` néven fog megjelenni).

Az alap FreeBSD telepítésben egy olyan `/etc/ttys` állomány található, amely tartalmazza az első négy soros portot, a `ttyd0` eszköztől kezdve a `ttyd3` eszközig. Ha tehát ezekre a portokra csatlakoztatnunk egy terminált, akkor már nem kell egy újabb bejegyzést felvennünk hozzájuk.

Példa 26-1. Terminálok felvétele az `/etc/ttys` állományba

Tegyük fel, hogy két eszközt szeretnénk a rendszerünkhöz csatlakoztatni: egy Wyse-50-es terminált és egy régi 286-os IBM PC-t, amelyen a Procomm terminálszoftverrel emulálunk egy VT-100-as terminált. A Wyse terminált a második soros portunkra kötjük, míg a 286-ost a hatodik soros portra (például egy többportos soros vonali kártyán). A nekik megfelelő `/etc/ttys` állománybeli bejegyzések így fognak kinézni:

    ttyd1  "/usr/libexec/getty std.38400"  wy50  on  insecure
    ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure

  Az első mezőben általában a terminálhoz tartozó eszközt nevezzük meg, amely a `/dev` könyvtárban található.
  A második mező a vonalhoz tartozó végrehajtandó parancs, ami általában a getty(8). A `getty` működésbe helyezi és megnyitja a vonalat, beállítja a sebességét, bekéri a felhasználó nevét, majd elindítja a login(1) programot.

  A `getty` program egy (opcionális) paramétert fogad el a parancssorában, ami a `getty` típusa. Egy ilyen `getty` típus szabja meg a terminálhoz tartozó vonal jellemzőit, például az adatátviteli sebességet és a paritást. A `getty` ezeket a jellemzőket az `/etc/gettytab` állományból olvassa be.

  A `/etc/gettytab` egyaránt tartalmaz bejegyzéseket a régi és új típusú terminálokhoz. Az `std` szöveggel kezdődő bejegyzések szinte majdnem minden esetben működnek a hardveres terminálokkal. Az ilyen bejegyzések figyelmen kívül hagyják a paritást. 110 és 115 200 bps között minden adatátviteli sebességhez tartozik egy-egy `std` bejegyzés. Természetesen ebbe az állományba akár a saját bejegyzéseinket is elkészíthetjük. A gettytab(5) man oldal nyújt ehhez átfogó segítséget.

  Amikor az`/etc/ttys` állományban megadjuk a `getty` típusát, akkor ellenőrizzük, hogy a beállításai megfelelnek a terminálénak.

  A példánknál maradva: a Wyse-50 nem használ paritást és 38 400 bps-en üzemel. A 286-os gép szintén nem dolgozik paritással és 19200 bps-sel kapcsolódik.

  A harmadik mezőben adjuk meg általában a vonalra csatlakozó terminál típusát. Ez a betárcsázós portok esetében többnyire az `unknown` vagy a `dialup`, mivel ezeken keresztül a felhasználók gyakorlatilag szinte bármilyen típusú terminállal vagy szoftverrel be tudnak jelentkezni. A hardveres termináloknál a terminál típusa azonban nem változik, ezért a termcap(5) adatbázisban keressük ki a nekik megfelelőt és adjuk meg ebben a mezőben.

  A példánkban a Wyse-50 egy valós termináltípust használ, miközben a 286-oson futó Procomm egy VT-100-as típusú terminált emulál.

  A negyedik mező azt mondja meg, hogy a port engedélyezett-e vagy sem. Ha itt a `on` értéket adjuk meg, akkor az `init` elindítja a második mezőben szereplő `getty` programot. Ha viszont itt az `off` szerepel, akkor a `getty` nem fog elindulni, így ezen a porton be sem fogunk tudni jelentkezni.
  Az utolsó mezőben a port megbízhatóságát kell megjelölnünk. Ha biztonságosnak (`secure`) állítjuk be a portot, akkor rajta keresztül a `root` (vagy bármelyik nullás felhasználói azonosítóval rendelkező) felhasználó be tud jelentkezni. Amikor viszont nem biztonságos (`insecure`), akkor először egy normál felhasználóval kell bejelentkeznünk, majd a su(1) programmal vagy egy hozzá hasonló megoldással kell rendszeradminisztrátorrá válnunk.

  Leginkább az `insecure` beállítást javasoljuk, még hét lakat alatt őrzött terminálok esetében is. Valójában sokkal egyszerűbb bejelentkezni, majd kiadni egy `su` parancsot, ha netalán rendszeradminisztrátori jogosultságokra lenne szükségünk.

### 26.3.2.2. A `init` utasítása az `/etc/ttys` újraolvasására

Miután az `/etc/ttys` állományban elvégeztük a megfelelő módosításokat, a konfigurációs állomány újraolvasásához küldjünk egy SIGHUP (bontás) jelzést az `init` programnak. Mint például:

    # kill -HUP 1

> Megjegyzés: Mivel mindig az `init` indul el elsőként a rendszerben, ezért a hozzá tartozó azonosító az 1 lesz.

Ha mindent jól állítottunk be, a kábelek is a helyükön vannak és a terminálokat is bekapcsoltuk, akkor minden terminálhoz elindul egy `getty` program, és mindegyikőjükön megjelenik a bejelentkező képernyő.

## 26.3.3. A terminálokkal kapcsolatos hibajelenségek

Olykor hiába igyekszünk a lehető legaprólékosabban ügyelni minden apró részletre, könnyen előfordulhat, hogy valamiért a terminál mégsem működik rendesen. Következzen most egy lista néhány ismert tünetről és azok javasolt gyógymódjairól.

### 26.3.3.1. Nem jelenik meg a bejelentkező képernyő

Ellenőrizzük, hogy a terminált rendesen csatlakoztattuk és áram alá helyeztük. Amikor egy személyi számítógépet használunk terminálnak, akkor nézzük meg, hogy a terminál emulációs program a megfelelő soros porton fut.

Vizsgáljuk meg, hogy a kábel mind a két vége pontosan illeszkedik a portokba. Győződjünk meg róla, hogy valóban a megfelelő típusú kábelt használjuk.

Nézzük meg, hogy a terminál és a FreeBSD is ugyanazon az adatátviteli sebességen és paritási beállítással megy. Ha képernyővel rendelkező terminálunk van, akkor a kontrasztot és fényerősséget is ellenőrizzük. Ha nyomtatós terminálunk van, akkor vizsgáljuk meg a papír és a tinta állapotát.

Győződjünk meg róla, hogy a `getty` valóban fut és rendesen kiszolgálja a terminált. Például a `ps` paranccsal listázzuk ki az összes jelenleg futó programot és keressük meg köztük a `getty` programot:

    # ps -axww|grep getty

Ekkor látnunk kell a terminálhoz tartozó bejegyzést. Például, ha a `getty` második soros portot jelképező `ttyd1` eszközön fut, és az `/etc/gettytab` állományból az `std.38400` nevű bejegyzést használja, akkor ez jelenik meg:

    22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyd1

Amennyiben semmilyen `getty` nem fut, akkor ellenőrizzük, hogy valóban engedélyeztük-e a portot az `/etc/ttys` állományban. A `ttys` állomány átírása után ne felejtsük el kiadni a `kill -HUP 1` parancsot sem.

Ha a `getty` fut, de a terminálon továbbra sem látjuk a bejelentkező képernyőt, vagy megjelenik, de nem tudunk gépelni, akkor előfordulhat, hogy a terminál vagy kábel nem támogatja a hardveres kézfogást (handshaking). Próbáljuk meg az `/etc/ttys` állományban levő `std.38400` bejegyzést az `3wire.38400` bejegyzésre kicserélni (de utána ne felejtsük el kiadni a `kill -HUP 1` parancsot). A `3wire` nagyon hasonlít az `std` bejegyzéshez, de elhagyja a hardveres kézfogást. A `3wire` alkalmazásakor viszont a puffer telítődésének megelőzése érdekében próbálkozzunk az adatátviteli sebesség csökkentésével vagy engedélyezzük a szoftveres forgalomirányítást.

### 26.3.3.2. Amikor mindenféle szemét jelenik meg a képernyőn

Ellenőrizzük, hogy a FreeBSD és a terminál ugyanazt az adatátviteli sebességet és paritási beállítást használja. Nézzük meg a futó `getty` programokat, és hogy a megfelelő `getty` típussal mennek-e. Ha nem, módosítsuk az `/etc/ttys` állományt és adjuk ki a `kill -HUP 1` parancsot.

### 26.3.3.3. A karakterek duplán jelennek meg, a jelszó begépelésekor látható

Állítsuk át a terminált (vagy a terminál emulációs szofvert) “half duplex” vagy “local echo” módról “full duplex” módra.

Előző | Tartalom | Következő
Bevezetés | Fel | Betárcsázós szolgáltatások

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