Linuxi tekstiterminalid

14.1 Getty (kasutatakse / etc / inittab)

Tutvumine Gettyga

Selleks, et sisselogimisprotsess käivitaks jadapordi (ja sellega ühendatud terminaliga), kui arvuti käivitab (või lülitab töötasemed), tuleb / etc / inittab-faili sisestada getty käsk. Käsirida saab käsurealt käivitamine võib põhjustada probleeme (vt Kui käivitatakse käsk käsurealt: programmid peatuvad, et näha, miks). Getty saab TTY (terminali) läheb. Igal terminalil on vaja oma käsu getty. Igal / etc / inittab-failis on konsoolil vähemalt üks getty käsk. Leidke see ja asetage Getty käsud selle kõrval olevatele tõelistele terminalidele. See fail võib sisaldada kommenteeritud tekstiklüptide näidiseid, nii et kõik, mida peate tegema, on nende eemaldamine (eemalda juhtiv number #) ja mõne argumendi muutmine.

Võimalikud argumendid sõltuvad sellest, millist teenust kasutate:
Kaks otseselt ühendatud terminalide jaoks parimad on:

Dial-in-modemidele kõige paremini sobivad kaks (otseselt ühendatud terminalide vältimiseks) on järgmised:

Lihtsad gettys kasutada, kui te ei kasuta tõelist teksti-terminali. Enamik Linuxi kasutajaid kasutab ühte neist monitoris:

Teie Linuxi levitamine võib sisaldada nii tekstiterminaale kui ps_getty või agetty. Mõned jaotused ei paku. Kahjuks kutsuvad nad tihti lihtsalt seda "getty", nii et peate võib-olla määrama, milline neist on, kuna argumendid, mille pärast / etc / inittab asetate, erinevad. Debian kasutab agetty (paketi util-linux). RedHat ja Fedora kasutasid ps_getty, mis asub aadressil: ps_getty

Viimase abinõuna saamiseks võite vaadata oma käivitatavat koodi (tavaliselt / sbin). ps_getty on selle koodiga varustatud / etc / gettydefs. Selle otsimiseks mine / sbin ja tippige:
stringid getty | grep getty
Kui Getty on tegelikult agetty, ei tähenda ülaltoodud midagi. Kuid kui teil on täiesti kirjutatav:
getty-h
peaks näitama valikuid [-hiLmw].

Kui sul ei ole Getty, mida soovite vaadata teisi distributsioone ja välismaalase programmi teisendada RPM-i ja Debiani pakette. Allikakoodi saab Getty Tarkvara allalaaditavast.

Kui te ei kasuta modemi juhtnööre (näiteks kui kasutate ainult minimaalset arvu 3 juhtjuhtumit: edastage, võtate vastu ja tavaline signaalipesa), peaksite laskma Gettyil teada saada, kasutades kohalikku lippu. Selle vorming sõltub sellest, millist kasutasite.

Getty väljub pärast sisselogimist (ja saab uuesti täita)

Pärast sisselogimist märkate (kasutades "top", "ps -ax" või "ptree"), et getty protsess enam ei tööta. Mis sellega juhtus? Miks saab Getty taaskäivitada, kui teie kestad tapetakse? Sellepärast

Kui olete oma kasutajanime sisestanud, võtab Getty selle ja kutsub sisselogimisprogrammi, milles öeldakse seda oma kasutajanimega. Getty protsess asendatakse ingliskeelse protsessiga. Sisselogimisprotsess küsib teie parooli, kontrollib seda ja käivitab kõik paroolifailis määratud protsessid. See protsess on tihti bashikoor. Kui nii, algab bash ja asendab sisselogimisprotsessi. Pange tähele, et üks protsess asendab teise ja bash-shell protsess algselt käivitati Getty protsessina. Selle tagajärjed selgitatakse allpool.

Nüüd / etc / inittab failis peaks getty olema tapmise korral taaskäivitatav (taaskäivitage). See ütleb nii joonel, mis kutsub Getty. Aga kui bash-shell (või sisselogimisprotsess) tapetakse, läheb ta uuesti (taaskäivitub). Miks? Noh, nii sisselogimisprotsess kui ka bash on getti ja pärandi asendused

* Teksti terminali vihjeindeks

signaalühendused teevad kindlaks nende eelkäijad. Tegelikult, kui jälgite üksikasju, märkate, et asendusprotsessil on originaalprotsessis sama protsessi ID. Seega bash on selline hüüdnimi, mis varjatakse sama protsessi ID-numbriga. Kui bash tapetakse, on see just nagu rünnak tapetud (kuigi Getty ei tööta enam). Selle tulemuseks on rämpspost.

Kui üks välja logib, surevad kõik selles serialpordis olevad protsessid, kaasaarvatud bashikoor. See võib juhtuda (kui see on sisse lülitatud), kui modemile saadetakse DSP-pinge languse signaal jadapordile. DCD väljumisel või langemisel on tulemuseks tagasivõtmine. Võimalik, et jõuate käsust pealetungi, käsitsi tappes bash (või sisselogimine), lüües nuppu k, jne, kui tegemist on "top" või käsuga "kill". Tõenäoliselt peate selle signaaliga 9 tapma (mida ei saa ignoreerida).

Kui getty töötab käsurealt: Programmid peatuvad

Tavaliselt peaksite käivitama getty sisest / etc / inittab, mitte käsurealt või mõni terminali töötav programm võib ootamatult peatada (peatada). Sellepärast (jätke järgmise sektsiooni juurde, kui miks pole teile oluline). Kui käivitate mõne teise terminali käsurealt öeldes ttyS1, öelge tty1, siis on see tty1 oma kontrollterminaliks, kuigi tegelikult kasutatav terminal on ttyS1. Seega on sellel vale juhtimisterminal. Aga kui see on inittab-faili sisse lülitatud, siis on see kontrollterminaliks ttyS1 (õige).

Isegi kui kontrolli terminal on vale, töötab ttyS1 sisselogimine korralikult (kuna te andsite ttyS1 argumendiks getty). Standardne sisend ja väljund on seatud ttyS1, kuigi juhtimisterminal jääb tty11ks. Muud ttyS1 käivitatavad programmid võivad pärida selle standardi sisend / väljund (mis on ühendatud ttyS1-ga) ja kõik on korras. Kuid mõned programmid võivad teha vale, kui nad püüavad lugeda oma kontrolli terminalist (tty1). Nüüd tty1 võib arvata, et neid programme käivitatakse taustal tty1, nii et katse lugeda tty1-lt (see oleks pidanud olema ttyS1) toob kaasa protsessi katkestamise, mis üritas lugeda. (Taustprotsess ei ole lubatud kontrollida oma terminalist.) Võite näha sõnumit: " [1] + peatatud " ekraanil. Sel hetkel on teil ummikus, sest te ei saa suhelda protsessiga, mis üritab suhelda teiega vale terminali kaudu. Loomulikult saab sellest põgeneda, võite minna teisele terminalile ja tappa protsess jne

agetty (võib nimetada getty)

Näide rida / etc / inittab:

S1: 23: respawn: / sbin / getty -L 19200 ttyS1 vt102

S1 on pärit ttyS1-st. 23 tähendab seda, et käivitatakse käivitamise taseme 2 või 3 sisenemisel. Respawn tähendab seda, et kui getty (või protsess, mis asendas selle nagu bash) tapetakse, käivitub automaatselt uuesti (respawn). / sbin / getty on getty käsklus. -L tähendab kohalikku (ignoreerige modemi juhtimissignaale). -h (näites ei ole näidatud) võimaldab riistvaravoolu juhtimist (sama kui stty crtscts). 19200 on kiirus. ttyS1 tähendab / dev / ttyS1 (COM2 MS-DOSis). vt102 on terminali tüüp ja see käsk määrab selle väärtuse jaoks keskkonnamuutuja TERM. Puuduvad konfiguratsioonifailid. Pärast Getty redigeerimist kirjuta käsurealt "init q" ja peaksite nägema sisselogimisnuppu.

Partei probleemide automaatne tuvastamine

Programm Agetty üritab automaatselt tuvastada võrdsuse seadet terminali sees (sh pariteedi pole). See ei toeta 8-bitine andmebaiti pluss 1-bitine paarsus. Vaadake 8-bitiseid andmebaide (pluss pariteet). Kui kasutate parameetri seadistamist, tühistab ta automaatselt selle, kuna ta soovib esialgu pariteedi bitit saada nii, nagu oleks see andmebiti. Seda seetõttu, et sisestades oma sisselogimisnime, et saaksite pariteedi automaatset tuvastamist, on vaja saada viimast bitti (võib-olla võrdusbitti). Seega, kui kasutate pariteedi, lubage see ainult tekstiklüpi sees ja lasta sellel automaatselt tuvastada ja seada see arvutisse. Kui teie terminal toetab vastuvõetud parameetrit, näeb sisselogimisaken välja ebameeldivalt, kuni sisestate midagi selliselt, et getty saab selle tuvastada

pariteet. Kaudne viivitus takistab külastajate jmt sisselogimise proovist. See võib olla just see, mida sa tahad.

Pariidi automaatne tuvastamine on mõnikord probleem. See juhtub seetõttu, et pärast sisselogimise nime sisestamist käivitab agetty sisselogimisprogramm teie sisselogimise lõpetamiseks. Kahjuks ei saa sisselogimisprogramm pariteet tuvastada, nii et kui Getty programm ei suutnud võrdsust määrata, ei saa sisselogimine määrata see kas. Kui esimene sisselogimise katse ebaõnnestub, võimaldab sisselogimine uuesti proovida jne (kõik parameetrid on valed). Lõpuks, pärast mitut ebaõnnestunud sisselogimise katset (või pärast aegumist) hakkab agetty taas käivituma ja käivitama sisselogimisjärjestused uuesti. Kui Getty töötab jälle, võib see avastada pariteedi teisel proovil, nii et kõik võib seejärel korralikult töötada.

Vigane pariteedi korral ei saa sisselogimisprogramm õigesti lugeda seda, mida sisestate, ja te ei saa sisse logida. Kui teie terminal toetab vastuvõetud pariteet, näete jätkuvalt ebaolulist ekraani. Kui Getty ei suuda pariteedi tuvastada, laaditakse tavaliselt / etc / issue faili ekraanile vahetult enne seda enne kiiret esitamist, nii et ekraanil võivad ilmneda rohkem närvilisi sõnu.

Miks ei saa esmakordselt tuvastada pariteet esimese sisestatud tähega? Näide: oletatavasti tuvastab ta 8-bitise baiti oma pariteedi bittiga 0 (kõrge järjekoha bitt) ja paaritu arv 1-bitti. Mis on pariteet? Noh, paaritu arv 1 bitti tähendab, et see on paaritu pariteet. Kuid see võib ka olla lihtsalt 8-bitine tähemärk, millel pole paarsust. Siiani ei ole võimalik kindlaks teha, mis. Kuid siiani oleme kaotanud isegi pariteedi võimaluse. Pariteetide tuvastamine toimub seega kõrvaldamise protsessi abil.

Kui järgmine bait on sarnane esimesele ja kaotab ainult pariteedi võimaluse, on pariteedi määramine endiselt võimatu. Selline olukord võib jätkuda lõputult ja harvadel juhtudel siseneb sisselogimine ebaõnnestumiseks, kuni te oma sisselogimishinda muudate. Kui agetty leiab paarsusbitti 1, siis eeldatakse, et see on paarsusbiti, mitte 8-bitise tähemärgi kõrge järjekoha bitt. Seega eeldatakse, et te ei kasuta oma kasutajanimi (st, et teie nimi on ASCII-s).

Üks võib siseneda "sisselogimisringiks" mitmel viisil. Oletame, et sisestate oma sisselogimisnime jaoks ainult ühe või kahe tähe ja seejärel vajutage tagastamist. Kui need tähed pole pariteedi tuvastamiseks piisavad, siseneb sisselogimine enne pariteedi avastamist. Mõnikord tekib see probleem, kui sul pole terminali ja / või ühendatud, kui esmakordselt käivitub.

Kui sa selle "sisselogimisringi" ummikusse jääksid, on sellel viis välja tulla tagasivõtmise klahvi mitu korda, kuni sa saad Getti sisselogimise viivituse. Teine võimalus on lihtsalt ooteaega ajada minutiga. Siis siseneb getty-i sisselogimisnupp käivitusprogrammi abil ekraanile ja võite proovida uuesti sisse logida.

8-bitised andmebaidid (pluss partei)

Kahjuks ei suuda Agetty seda paarsust tuvastada. Alates 1999. aasta lõpust ei ole neil võimalust pariteedi automaatset avastamist keelata ja seega tuvastada vale paarsus. Tulemuseks on see, et sisselogimisprotsess muutub ebakorrektselt ja paarsus vale. Seega ei tundu olevat otstarbekas proovida kasutada 8-bitine andmebaite pariteediga.

getty (part of getty_ps)

(Enamik sellest on pärit Greg Hankiini vanast serial-HOWTO-st)
Selle jaoks on vaja mõlemat konfiguratsioonifaili kirjeid sisestada ja lisada / etc / inittab kirje. Siin on mõned terminali jaoks kasutatavad näited, mille olete valinud konfiguratsioonifaili / etc / gettydefs .

# 38400 bps Dumb terminali sisestus DT38400 # B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL # @ S @ L sisselogimine: # DT38400 # 19200 bps Dumb terminali sisestus DT19200 # B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL # @ S @ L login: # DT19200 # 9600 bps Dumb terminali sisestus DT9600 # B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL # @ S @ L login: # DT9600

Pidage meeles, et DT38400, DT19200 jne on lihtsalt sildid ja need peavad olema samad, mida kasutate / etc / inittab .

Kui soovite, võite teha sisselogimise bänneris Getty trükkida huvitavaid asju. Minu näidete korral on mul süsteemi nimi ja seerianumber trükitud. Saate lisada muid asju: [blockquote

varju = jah @ B Praegune (hinnatud @B vaatamise ajal) bps määr. @D Praegune kuupäev, MM / DD / YY. @ L seerianumber, millele Getty on kinnitatud. @ S süsteemi nimi. @T Praegune aeg, HH: MM: SS (24 tundi). @U Hetkel on sisse logitud kasutajate arv. See on arvu / etc / utmp-faili sissekannete arv, millel on mitte-null ut_name väli. @ V VERSION väärtus, mis on antud vaikeväärtuste failis. Üksiku @ märgi kuvamiseks kasutage kas '\ @' või '@@'.

Kui olete lõpetanud / etc / gettydefs toimetamise, võite kontrollida, kas süntaks on õige:

linux # getty -c / etc / gettydefs

Veenduge, et jadaport ei ole muud gatti või uugetty'i konfiguratsioonifaili, et teie terminal on ühendatud näiteks ( /etc/default/{uu}getty.ttyS N või /etc/conf.{uu}getty.ttyS N ) , kuna see tõenäoliselt häirib käivitamist terminalis terminalis. Eemaldage sellised vastuolulised failid, kui need väljuvad.

Muutke oma / etc / inittab- faili, et käivitada serial port-seriaalid (sisestades oma keskkonna õige teabe - port, kiirus ja vaikimisi terminali tüüp):

S1: 23: respawn: / sbin / getty ttyS1 DT9600 vt100 selles linux # init q

Siinkohal peaksite oma terminalil nägema sisselogimisaken. Võimalik, et terminali tähelepanu pälvimiseks on vaja minna.

mgetty

"M" tähendab modemit. See programm on mõeldud peamiselt modemitele ja alates 2000. aasta keskpaigast nõuab see uuesti tekstiterminaali kasutamiseks (kui te ei kasuta riistvaralise voolu kontrolli - ja see nõuab tavaliselt käsitsi tehtud kaablit). Otseühendatud terminalide dokumentatsiooni leiate käsiraamatu "Otsene" osa: mgetty.texi.

Vaadake terminali jaoks selle konfigureerimise näite viimaseid /etc/mgetty/mgetty.config ridu. Kui te ei ütle "toggle-dtr no", siis arvab ta, et teil on DTR-i pin PC-is modem ja tühi (tühistada), kui teete tühjaks muutmata modemi. Erinevalt teistest rühmadest ei saa mgetty terminali ise juurde, kuni keegi tabab selle terminali mis tahes võtmeid, nii et näete? terminali ülemisel või psil, kuni see juhtub. Logides / var / log / mgetty / võivad kuvada mõned hoiatussõnumid, mis kehtivad ainult modemitele, mida võite ignoreerida.

Siin on näiteks / etc / inittab paigutatud lihtne liin :

S1: 23: ümberpaigutamine: / sbin / mgetty -r ttyS1