Skip to main content

Text-terminali na Linuxu - 14.1 Getty (uporablja se v / etc / inittab)

Anonim

14.1 Getty (uporablja se v / etc / inittab)

Uvod v Getty

Da bi se ob zagonu računalnika (ali preklapljajočih ravni) zagnala postopek prijave na serijska vrata (in povezani z njim), je treba v datoteko / etc / inittab vstaviti ukaz getty. Running getty iz ukazne vrstice lahko povzroči težave (glej Če se geslo zažene iz ukazne vrstice: programi se ustavijo, da bi videli, zakaj). Getty GET TTY (terminal). Vsak terminal potrebuje svoj ukaz getty. Obstaja tudi vsaj en ukaz getty za konzolo v vsaki datoteki / etc / inittab. Poiščite to in postavite ukaze getty za prave terminale poleg njega. Ta datoteka lahko vsebuje vzorec getty vrstic za besedilne terminale, ki so komentirani, tako da je vse, kar morate storiti,, da jih uncomment (odstranite vodilni #) in spremenite nekaj argumentov.

Argumenti, ki so dovoljeni, so odvisni od tega, katera geta uporabljate:Najboljša dva terminala za neposredno priključene terminale sta:

  • agetty (včasih se pravkar imenuje Getty): zelo enostavno nastaviti. Ni konfiguracijskih datotek. Glej agetty
  • getty (del getty_ps)

Najboljša dva načina za dial-in modem (izogibanje za neposredno priključene sponke) so:

  • mgetty: najboljši za modeme; deluje tudi za terminale, vendar slabše
  • uugetty: samo za modeme; del paketa getty_ps

Enostavne gettys, če ne uporabljate pravega besedilnega terminala. Večina uporabnikov Linuxa uporablja enega od teh na svojem monitorju:

  • mingetty
  • fbgetty
  • fgetty
  • rungetty

Vaša distribucija Linuxa lahko prihaja z bodisi ps_getty ali agetty za besedilne terminale. Nekatere distribucije ne dobavljajo niti. Na žalost jih pogosto imenujejo »getty«, zato boste morda morali določiti, katera od vas je od argumentov, ki ste jih dali v / etc / inittab, razlikovali. Debian uporablja agetty (v paketu util-linux). RedHat in Fedora sta uporabila ps_getty, ki je na: ps_getty

Kot zadnjo možnost, da bi ugotovili, kateri geti imate, lahko preverite svojo izvršilno kodo (običajno v / sbin). ps_getty ima / etc / gettydefs vdelano v to kodo. Če jo želite poiskati, pojdite na / sbin in vnesite:strings getty | grep getty Če je Getty dejansko agetty, bo zgornji rezultat nič. Vendar, če imate agetno tipkanje:Getty-hbi morali prikazati možnosti -hiLmw.

Če nimate geta, ki jo želite preveriti, druge distribucije in tujec program za pretvorbo med paketi RPM in Debian. Izvorno kodo je mogoče prenesti iz programske opreme Getty.

Če ne uporabljate nadzornih linij za modem (na primer, če uporabljate le najmanjše število 3 vodnikov: oddajanje, sprejemanje in skupni signalni tlak), morate geti vedeti o tem s pomočjo "lokalne" zastave. Oblika tega je odvisna od tega, katero geslo uporabljate.

Getty izstopi po prijavi (in lahko sprosti)

Ko se prijavite, boste opazili (z uporabo "top", "ps -ax" ali "ptree"), da se proces getty ne izvaja več. Kaj se je zgodilo z njim? Zakaj geta ponovno zažene, če je vaša lupina ubita? Evo zakaj.

Ko vtipkate vaše uporabniško ime, jo dobi Getty in pokliče prijavni program, ki mu pove, vaše uporabniško ime. Postopek getty se nadomesti s prijavnim postopkom. Postopek prijave zahteva vaš geslo, ga preveri in začne postopek, ki je naveden v datoteki gesla. Ta proces je pogosto bash lupina. Če je tako, bash začne in nadomešča prijavni postopek. Upoštevajte, da en proces nadomešča drugo in da je proces bash shell prvotno začel kot postopek getty. Posledice tega bodo pojasnjene v nadaljevanju.

Zdaj v datoteki / etc / inittab, bi moral Getty ponoviti (ponovno), če je ubil. Piše tako na liniji, ki kliče Getty. Ampak, če je bash lupina (ali prijavni postopek) ubit, Getty respawns (znova zažene). Zakaj? No, prijavni postopek in bash sta zamenjava za Getty in dedovanje

* Indeks besedila Terminal How-To

signalne povezave vzpostavijo njihovi predhodniki. Dejansko, če opazite podrobnosti, ki jih boste opazili, da bo proces zamenjave enak ID procesa kot prvotni postopek. Tako je bash nekakšen getty v preobleki z isto identifikacijsko številko procesa. Če je ubil bash, je bil podoben, da je bil gotty ubran (čeprav Getty ne deluje več). Posledica tega je, da se gretje sprosti.

Ko se en odjavi, se uničijo vsi procesi na tem zaporednem vmesniku, vključno z bash lupino. To se lahko zgodi tudi (če je omogočeno), če se na serijski vmesnik pošlje sporočilo o prekinitvi s padcem DCD napetosti modema. Če se odjavi ali spusti v DCD, se bo sprostilo gotovost. Eden lahko sproži Getty na respawn z ročno ubijanje bash (ali login) bodisi tako, da pritisnete tipko k, itd, medtem ko je v "top" ali z ukazom "kill". Boste verjetno morali ubiti s signalom 9 (ki ga ni mogoče prezreti).

Če se getty zažene iz ukazne vrstice: programi se ustavijo

Morate normalno teči Getty od znotraj / etc / inittab in ne iz ukazne vrstice, sicer pa se lahko nekateri programi, ki se izvajajo na terminalu, nepričakovano prekinejo (ustavijo). Evo, zakaj (preskočite na naslednji odsek, če vam za to ni pomembno). Če zaženete Getty za reči ttyS1 iz ukazne vrstice drugega terminala, recimo tty1, potem bo imela tty1 kot svoj "kontrolni terminal", čeprav je dejanska terminal, na katerem teče, ttyS1. Tako ima napačno kontrolni terminal. Ampak, če se začne znotraj datoteke inittab, bo imel ttyS1 kot krmilni terminal (pravilen).

Čeprav je kontrolni terminal napačen, se prijava na ttyS1 dobro dela (ker ste ttyS1 navedli kot argument za Getty). Standardni vhod in izhod sta nastavljena na ttyS1, čeprav kontrolni terminal ostane tty11. Drugi programi, ki se izvajajo na ttyS1, lahko podedujejo ta standardni vhod / izhod (ki je povezan s ttyS1) in vse je v redu. Nekateri programi pa lahko napako poskušajo prebrati iz kontrolnega terminala (tty1), ki je napačen. Zdaj lahko tty1 misli, da te programe izvajajo v ozadju s tty1, zato je poskus, da se od tty1 odčita od tty1 (to je bil ttyS1), končal postopek, ki je poskušal prebrati. (Postopek ozadja ni dovoljeno brati s svojega kontrolnega terminala.). Sporočilo lahko vidite nekaj takega: "1 + Ustavljeno"na zaslonu.V tej točki ste zaljubljeni, ker ne morete sodelovati s procesom, ki poskuša komunicirati z vami prek napačnega terminala. Seveda, da bi pobegnili od tega, lahko greste na drug terminal in ubijete proces itd. .

agetty (lahko se imenuje Getty)

Primer vrstice v / etc / inittab:

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

S1 je iz ttyS1. 23 pomeni, da se getty izvaja ob vstopu v nivoja 2 ali 3. Rešitev respawn pomeni, da če se uniči Getty (ali postopek, ki ga je zamenjal, npr. Bash), se bo samodejno zagnati (respawn). / sbin / getty je ukaz getty. -L pomeni lokalno (ignoriraj modemske nadzorne signale). -h (ni prikazan v primeru) omogoča nadzor nad pretokom strojne opreme (enako kot stty crtscts). 19200 je hitrost prenosa. ttyS1 pomeni / dev / ttyS1 (COM2 v MS-DOS). vt102 je tip terminala in ta getty bo spremenil spremenljivko okolja TERM na to vrednost. Konfiguracijskih datotek ni. Vnesite "init q" v ukazno vrstico po urejanju getty in videti morate prijavni poziv.

Agettyovo samodejno odkrivanje težav s pariteto

The agetty program bo poskušal samodejno zaznati pariteto znotraj terminala (vključno s pariteto). Ne podpira 8-bitnih podatkovnih bajtov in 1-bitne paritete. Glej 8-bitne podatkovne bajte (plus parnost). Če uporabljate stty določiti enakost, agetty se bo samodejno izklopil, ker na začetku želi, da paritetni bit prihaja skozi kot podatkovni bit. To je zato, ker potrebuje zadnjo bit (verjetno bit paritete), ko vnesete ime za prijavo, tako da lahko samodejno zazna pariteto. Tako, če uporabljate pariteto, omogočite le znotraj besedilnega terminala in pustite agetty samodejno zazna in nastavi na računalniku. Če vaš terminal podpira prejete paritete, se bo prijavni poziv prikazal popačen, dokler ne vnesete nekaj, tako da lahko Getty zazna

paritete. Povratni poziv bo odvračal obiskovalce itd., Da bi se poskušal prijaviti. To je lahko tisto, kar hočeš.

Včasih obstaja problem s samodejnim odkrivanjem parnosti. To se zgodi, ker po prvem vnosu vašega uporabniškega imena, agetty se začne Vpiši se program, da bi se končal s prijavo. Na žalost je Vpiši se program ne more zaznati parnosti, tako da če Getty program ni uspel določiti paritete takrat Vpiši se tudi tega ne bo mogel določiti. Če prvi poskus prijave ne uspe, Vpiši se vam bo dovolil, da poskusite znova, itd. (vse s paritetno nastavljeno narobe). Končno, po več neuspelih poskusih prijave (ali po preteku časa) agetty se bo znova zagnal in znova zagnali uporabniške zapise. Ko se Getty ponovno zažene, bo morda lahko odkrila pariteto ob drugem poskusu, da bi lahko vse v redu.

Z napačno pariteto, Vpiši se program ne more pravilno prebrati, kaj vnašate in se ne morete prijaviti. Če vaš terminal podpira prejete paritete, boste še naprej videli popačen zaslon. Če Getty ne zazna paritete, se datoteka / etc / issue običajno odloži na zaslon neposredno tik pred pozivom, tako da se na zaslonu lahko pojavi več besed, ki so zmotne.

Zakaj ne morete odkriti paritete s prvim vnesenim črkom? Tukaj je primer: Recimo, da zazna 8-bitni bajt s paritetnim bitom 0 (bit velikega reda) in z neparnim številom 1-bitov. Kakšna je pariteta? No, čudno število 1 bitov pomeni, da je čudna pariteta. Lahko pa je tudi 8-bitni znak brez paritete. Do zdaj ni mogoče ugotoviti, kateri. Toda doslej smo izločili možnost enakopravnosti. Odkrivanje parnosti tako poteka s postopkom izločanja.

Če je naslednji vnesen bajt podoben prvemu in prav tako izključuje možnost enakopravnosti, je še vedno mogoče določiti pariteto. Ta položaj se lahko nadaljuje za nedoločen čas in v redkih primerih se prijava ne bo uspela, dokler ne spremenite imena za prijavo. Če agetty najde paritetni bit 1, bo domnevalo, da je to bit paritete in ne bit velikega 8-bitnega znaka. Zato predpostavlja, da v vašem uporabniškem imenu ne uporabljate meta-znakov (veliko bitov) (to je, da je vaše ime v ASCII).

Eno se lahko na različne načine vpiše v "prijavno zanko". Recimo, da vnesete samo eno črko ali dve za vaše uporabniško ime in nato pritisnite vrnitev. Če te črke ne zadostujejo za odkrivanje parnosti, se prijavo nadaljuje, preden se odkrije parnost. Včasih se ta težava zgodi, če nimate priključka in / ali ste priključeni, ko se najprej začne agetty.

Če se obtičite v tej "prijavni zanki", je večkrat, da večkrat pritisnete tipko za vračanje, dokler ne dobite gesla za prijavo v storitev getty. Drug način je, da počakate minuto ali tako za časovno omejitev. Nato bo program getty na zaslonu postavil poziv za prijavo getty in poskusite znova prijaviti.

8-bitni podatkovni bajti (plus pariteta)

Na žalost agetty ne more zaznati te paritete.Konec leta 1999 nima možnosti za onemogočanje samodejnega odkrivanja paritete in tako zazna napačno pariteto. Rezultat je, da bo postopek prijave popačen in bo enakomerno določen paritet. Tako se zdi neizvedljivo poskusiti uporabljati 8-bitne podatkovne bajte s pariteto.

getty (del getty_ps)

(Večina tega je od starega Serial-HOWTO Grega Hankinsa)Za ta getty je treba vnesti vnose v konfiguracijsko datoteko in dodati vnos v / etc / inittab. Tukaj je nekaj primerov vnosov, ki jih želite uporabiti za vaš terminal, ki ste jih dali v konfiguracijsko datoteko / etc / gettydefs.

Upoštevajte, da sta DT38400, DT19200 itd. Samo nalepke in morajo biti enaki, kot jih uporabljate / etc / inittab.

Če hočeš, lahko narediš Getty natisnite zanimive stvari v pasici za prijavo. V svojih primerih imam ime sistema in serijsko linijo natisnjeno. Dodate lahko še druge stvari: blockquote

sence = da

Ko končate urejanje / etc / gettydefs, lahko preverite, ali je sintaksa pravilna, tako da:

Prepričajte se, da ni drugega Getty ali uugetty konfiguracijske datoteke za serijska vrata, na katerih je priključen vaš terminal, kot so (/etc/default/{uu}getty.ttySN ali /etc/conf.{uu}getty.ttySN), saj bo to verjetno vplivalo na delovanje Getty na terminalu. Če izstopi, odstranite take nasprotujoče si datoteke.

Uredite svoj / etc / inittab datoteko za zagon Getty na serijskem vmesniku (z nadomestitvijo pravilnih informacij za svoje okolje - vrata, hitrost in privzeto vrsto priključka):

V tem trenutku bi morali na vašem terminalu videti prijavni poziv. Morda boste morali zadeti vračilo, da boste pozornost terminala dobili.

mgetty

"M" pomeni modem. Ta program je namenjen predvsem modemom, od sredine leta 2000 pa bo zahteval ponovno prevajanje, da ga uporabite za besedilne terminale (razen če uporabljate strojni nadzor toka - in to običajno zahteva ročno izdelan kabel). Za dokumentacijo za neposredno priključene sponke glejte razdelek »Neposredna« v priročniku: mgetty.texi.

Poglej zadnje vrstice /etc/mgetty/mgetty.config za primer konfiguriranja za terminal. Če ne rečete "preklopi-dtr ne", bo pomislil, da imate v računalniku modem in spustite (negirate) pin DTR v zamannem poskusu ponastavitve neobstoječega modema. V nasprotju z drugimi gettys, mgetty ne bo priključen na terminal, dokler ne bo nekdo udaril nobene ključne točke tega terminala, da boste videli? za terminal v na vrh ali ps dokler se to ne zgodi. Dnevniki / var / log / mgetty / lahko prikaže nekaj opozorilnih sporočil, ki veljajo samo za modeme, ki jih lahko prezrete.

Tukaj je primer preproste vrstice, ki ste jo dali / etc / inittab: