Teks-terminale op Linux

14.1 Getty (gebruik in / etc / inittab)

Inleiding tot Getty

Om 'n aanmeldproses te laat loop op 'n seriële poort (en die terminaal daaraan gekoppel) wanneer die rekenaar begin (of omskakel loopvlakke), moet 'n getty-opdrag in die / etc / inittab-lêer geplaas word. Running getty van die opdrag lyn kan probleme veroorsaak (sien As getty loop van die opdrag lyn: Programme word gestop om te sien waarom). Getty kry 'n TTY ('n terminale) gaan. Elke terminale het sy eie Getty-bevel nodig. Daar is ook ten minste een getty-opdrag vir die konsole in elke / etc / inittab-lêer. Vind dit en plaas die getty-opdragte vir die regte terminale langsaan. Hierdie lêer kan steekproef getty lyne bevat vir teksterminale wat opgemerk word sodat al wat u moet doen, is om hulle te onttrek (verwyder die voorste #) en verander 'n paar argumente.

Die argumente wat toegelaat word, hang af van watter getty jy gebruik:
Twee gettys beste vir direkte verbind terminale is:

Twee gettys is die beste vir inbelmodems (vermy vir direk verbind terminale):

Eenvoudige gettys om te gebruik as jy nie 'n regte teksterminal gebruik nie. Die meeste Linux-gebruikers gebruik een van hierdie op hul monitor:

Jou Linux-verspreiding kan met ps_getty of agetty vir teksterminale kom. Sommige verdelings verskaf ook nie. Ongelukkig noem hulle dit dikwels "getty", sodat jy dalk moet bepaal watter een jy het sedert die argumente wat jy daarop sit, in / etc / inittab verskil. Debian gebruik agetty (in die util-Linux pakket). RedHat en Fedora gebruik ps_getty wat by: ps_getty is

As laaste uitweg om te probeer bepaal watter getty jy het, kan jy die uitvoerbare kode (gewoonlik in / sbin) nagaan. ps_getty het / etc / gettydefs ingebed in hierdie kode. Om dit te soek, gaan na / sbin en tik:
snare getty | grep getty
As getty eintlik agetty is, sal die bogenoemde niks tot gevolg hê nie. Maar as jy agetty tik:
getty -h
moet die opsies wys [-hiLmw].

As u nie die getty het nie, wil u ander verdelings en die uitheemse program omskakel tussen RPM en Debian-pakkette. Die bronkode kan van Getty Software afgelaai word.

As jy nie die modem beheerlyne gebruik nie (byvoorbeeld as jy slegs die minimum aantal 3 geleiers gebruik: stuur, ontvang en algemene seingrond), moet jy dit laat weet deur 'n "plaaslike" vlag te gebruik. Die formaat hiervan hang af van watter getty jy gebruik.

Getty uitgange na aanmelding (en kan respawn)

Nadat jy ingeteken het, sal jy oplet (met behulp van "top", "ps -ax" of "ptree") dat die getty-proses nie meer hardloop nie. Wat het daar gebeur? Hoekom begin Getty weer as jou dop doodgemaak word? Hier is hoekom.

Nadat jy jou gebruikersnaam ingevoer het, neem getty dit en roep die aanmeldingsprogram aan om jou gebruikersnaam te noem. Die getty proses word vervang deur die aanmelding proses. Die aanmeldproses vra vir u wagwoord, kontroleer dit en begin met watter proses ook al in u wagwoordlêer gespesifiseer is. Hierdie proses is dikwels die bash-dop. Indien wel, begin bash en vervang die aanmeldproses. Let daarop dat een proses 'n ander vervang en dat die bash-dopproses oorspronklik as die getty-proses begin het. Die implikasies hiervan sal hieronder verduidelik word.

Nou in die / etc / inittab lêer, is getty veronderstel om weer te begin (herlaai) indien dit doodgemaak word. Dit sê so op die lyn wat getty noem. Maar as die bash shell (of die aanmeldproses) vermoor word, respekteer Getty (herbegin). Hoekom? Wel, beide die aanmeldproses en bash is vervangings vir getty en erfenis

* Teks Terminale How-To Index

Die seinverbindings bepaal deur hul voorgangers. As jy die besonderhede waarneem, sal jy sien dat die vervangingsproses dieselfde proses-ID sal hê as die oorspronklike proses. So bash is soort van getty in vermomming met dieselfde proses ID nommer. As bash vermoor word, is dit net soos getty vermoor is (alhoewel getty nie meer hardloop nie). Dit lei tot getty respawning.

As 'n mens uitlog, word alle prosesse op die seriële poort doodgemaak, insluitend die bash-dop. Dit kan ook gebeur (indien geaktiveer) as 'n hang-sein na die seriële poort gestuur word deur 'n druppel DCD spanning deur die modem. Óf die uitlog of aflaai in DCD sal lei tot getty respawning. 'N Mens kan getty dwing om te respawn deur handmatig dood te maak (of inskrywing) óf deur die k-sleutel te slaan, ens. Terwyl dit in "bo" of met die "kill" -opdrag is. Jy sal waarskynlik dit met sein 9 moet doodmaak (wat nie geïgnoreer kan word nie).

As Getty van die opdrag lyn loop: Programme word gestop

Jy moet gewoonlik Getty van binne / etc / inittab bestuur en nie van die opdraglyn nie, anders kan sommige programme wat op die terminale loop, onverwags opgeskort word (gestop). Hier is hoekom (Slaan oor na die volgende afdeling as die hoekom nie vir jou belangrik is nie). As jy getty begin om ttyS1 van die bevellyn van 'n ander terminaal te sê, sê tty1, dan sal dit tty1 as sy "beheerminale" hê, selfs al is die werklike terminaal wat dit aanloop, ttyS1. Dit het dus die verkeerde beheerminale. Maar as dit binne die inittab-lêer begin het, sal dit ttyS1 as die beherende terminaal (korrek) hê.

Alhoewel die beherende terminale verkeerd is, werk die inskrywing by ttyS1 goed (aangesien u ttyS1 as 'n argument aan getty gegee het). Die standaardinvoer en -uitset word ingestel op ttyS1, alhoewel die beheerminale tty11 bly. Ander programme wat uitgevoer word by ttyS1 kan hierdie standaard insette / afvoer erf (wat aan ttyS1 gekoppel is) en alles is OK. Maar sommige programme kan die fout maak om te probeer om van hul beheerminale (tty1) te lees wat verkeerd is. Nou kan tty1 dink dat hierdie programme op die agtergrond deur tty1 uitgevoer word, sodat 'n poging om te lees van tty1 (dit moes ttyS1 gewees het) lei tot die stop van die proses wat probeer het om te lees. ('N Agtergrondproses mag nie vanaf sy beheerminale lees nie.). Jy sal dalk 'n boodskap sien soos: " [1] + Gestop " op die skerm. Op hierdie punt hou jy vas omdat jy nie met 'n proses kan kommunikeer wat met die verkeerde terminale met jou kommunikeer nie. Natuurlik om hieruit te ontsnap, kan jy na 'n ander terminaal gaan en die proses doodmaak, ens.

Agetty (kan getty genoem word)

'N Voorbeeldlyn in / etc / inittab:

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

S1 is van ttyS1. 23 beteken dat getty word uitgevoer wanneer die renvlak 2 of 3 ingevoer word. Respawn beteken dat indien getty (of 'n proses wat dit vervang soos bash) gedood word, getty outomaties weer begin (respawn). / sbin / getty is die getty commando. Die -L beteken Local (ignore modem control signals). -h (nie in die voorbeeld getoon nie) stel hardeware vloeibeheer in staat (dieselfde as stige krisktes). 19200 is die baadrate. ttyS1 beteken / dev / ttyS1 (COM2 in MS-DOS). vt102 is die tipe terminaal en hierdie getty stel die omgewingsveranderlike TERM tot hierdie waarde. Daar is geen konfigurasie lêers nie. Tik 'init q' op die opdrag lyn na die redigering van getty en jy moet 'n aanmeldprompt sien.

Agetty se outomatiese opsporing van pariteitsprobleme

Die agetty program sal poog om die pariteitstel binne die terminale (insluitend geen pariteit) outomaties op te spoor. Dit ondersteun nie 8-bits data grepe plus 1-bits pariteit. Sien 8-bis data grepe (plus pariteit). As jy stty gebruik om pariteit in te stel, sal agetty dit outomaties ontkoppel omdat dit aanvanklik die pariteitsbietjie wil deurkom asof dit 'n databit is. Dit is omdat dit die laaste stukkie moet kry (moontlik 'n pariteitsbietjie) as jy jou inskrywingsnaam tik sodat dit pariteit outomaties kan opspoor. As jy dus pariteit gebruik, aktiveer dit slegs binne die teksterminal en laat Agetty dit outomaties opspoor en stel dit op die rekenaar. As u terminale ondersteunde pariteit ontvang, sal die aanmeldprompt gekyk word totdat u iets skryf sodat getty die. Kan opspoor

gelykheid. Die gekwakte spoed sal besoekers afskrik, ens. Om te probeer om aan te meld. Dit kan net wees wat jy wil hê.

Daar is soms 'n probleem met die outomatiese opsporing van pariteit. Dit gebeur omdat nadat jy eers jou aanmeldnaam ingevoer het, begin agetty die aanmeldingsprogram om jou aan te meld. Ongelukkig kan die aanmeldprogram nie pariteit opspoor nie. As die getty- program nie die pariteit bepaal nie, sal die inskrywing nie bepaal kan word nie. dit ook nie. As die eerste aanmelding poging misluk, sal die inskrywing jou weer laat probeer, ens. (Almal met die pariteitsverstelling verkeerd). Uiteindelik, nadat 'n aantal mislukte pogings om aan te meld (of na 'n time-out), sal Agetty weer begin en begin die inlogvolgronde weer. Sodra getty weer aan die gang is, kan dit die pariteit op die tweede toets opspoor sodat alles goed kan werk.

Met verkeerde pariteit kan die aanmeldingsprogram nie korrek lees wat u tik nie en u kan nie inteken. As u terminale ondersteunde pariteit ondersteun, sal u steeds 'n geknipte skerm sien. As getty versuim om pariteit op te spoor, word 'n / etc / issue-lêer gewoonlik na die voorkant van die skerm na die skerm gedompel, dus kan meer gekwakte woorde op die skerm verskyn.

Hoekom kan die pariteit nie met die eerste letter getik word nie? Hier is 'n voorbeeld: Gestel dit bepaal 'n 8-bit byte met sy pariteitsbits 0 (hoë-orde-bis) en met 'n vreemde aantal 1-bis. Watter pariteit is dit? Wel, die onewe getal van 1 bisse impliseer dat dit vreemd is. Maar dit kan ook net 'n 8-bis karakter wees sonder pariteit. Daar is geen manier om vas te stel watter. Maar tot dusver het ons die moontlikheid van gelyke pariteit uitgeskakel. Die opsporing van pariteit beweeg dus deur 'n proses van eliminasie.

As die volgende byte soortgelyk aan die eerste een is en ook net die moontlikheid van ewe pariteit elimineer, is dit steeds onmoontlik om pariteit te bepaal. Hierdie situasie kan onbepaald voortduur en in seldsame gevalle sal die inskrywing misluk totdat u u aanmeldnaam verander. As agetty 'n pariteitsbbit van 1 vind, sal dit aanneem dat dit 'n pariteitsbit is en nie 'n hoë-orde bietjie van 'n 8-bis karakter nie. Dit neem dus aan dat jy nie meta-karakters (hoëbitset) in jou gebruikersnaam gebruik nie (dws jou naam is in ASCII).

'N Mens kan op verskeie maniere in 'n "aanmeldlus" ingaan. Gestel jy skryf slegs 'n enkele letter of twee vir jou aanmeldnaam en druk dan terug. As hierdie letters nie voldoende is vir pariteitsopsporing nie, is die aanmeldingskoppe voor pariteit opgespoor. Soms gebeur hierdie probleem as u nie die terminaal op en / of verbind het wanneer agetty eers begin nie.

As jy vasgevang word in hierdie "aanmeldlus", is daar 'n paar keer die terugkeer sleutel om te slaan totdat jy die Getty login prompt kry. Nog 'n manier is om net 'n rukkie te wag vir 'n time-out. Dan sal die getty login prompt op die skerm geplaas word deur die getty program en jy kan weer probeer om aan te meld.

8-bits data grepe (plus pariteit)

Ongelukkig kan Agetty hierdie pariteit nie opspoor nie. Sedert laat 1999 het dit geen opsie om die outomatiese opsporing van pariteit uit te skakel nie en sal dus verkeerde pariteit opspoor. Die gevolg hiervan is dat die aanmeldproses geknou sal word en dat die pariteit verkeerd gestel sal word. Dit lyk dus nie haalbaar om 8-bit data-grepe met pariteit te gebruik nie.

getty (deel van getty_ps)

(Die meeste hiervan is van die ou Serial-HOWTO deur Greg Hankins)
Vir hierdie getty moet jy beide inskrywings in 'n konfigurasielêer plaas en 'n inskrywing in / etc / inittab byvoeg . Hier is 'n paar voorbeeldinskrywings om vir u terminaal te gebruik wat u in die konfigurasielêer / etc / gettydefs plaas .

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

Let daarop dat die DT38400, DT19200, ens. Net etikette is en moet dieselfde wees as wat u gebruik in / etc / inittab .

As jy wil, kan jy getty druk interessante dinge maak in die login banner. In my voorbeelde het ek die stelsel naam en die reekse gedruk. U kan ander dinge byvoeg: [blockquote

skaduwee = Ja] @B Die huidige (geëvalueer op die oomblik dat die @B gesien word) bps koers. @D Die huidige datum, in MM / DD / YY. @L Die reekse waarna getty aangeheg is. @S Die stelsel naam. @T Die huidige tyd, in HH: MM: SS (24 uur). @U Die aantal gebruikers wat tans aangemeld is. Dit is 'n telling van die aantal inskrywings in die / etc / utmp lêer met 'n nie-null out_name veld. @V Die waarde van VERSION, soos gegee in die standaard lêer. Om 'n enkele '@' karakter te vertoon, gebruik óf '\ @' of '@@'.

As jy klaar is met redigering / etc / gettydefs , kan jy verifieer dat die sintaksis korrek is deur te doen:

linux # getty-c / etc / gettydefs

Maak seker dat daar geen ander getty of uugetty konfigurasie lêer is vir die seriële poort waaraan u terminale geheg is nie, soos ( /etc/default/{uu}getty.ttyS N of /etc/conf.{uu}getty.ttyS N ) , aangesien dit waarskynlik sal inmeng met die bestuur van getty op 'n terminaal. Verwyder sulke teenstrydige lêers as hulle verlaat.

Wysig jou / etc / inittab- lêer om getty op die seriële poort uit te voer (vervang die korrekte inligting vir jou omgewing - poort, spoed en standaardterminal tipe):

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

Op hierdie punt moet jy 'n aanmeldprompt op jou terminale sien. U moet dalk terugkom om die terminale se aandag te kry.

mgetty

Die "m" staan ​​vir modem. Hierdie program is hoofsaaklik vir modems en vanaf middel 2000 sal dit nodig wees om dit te herbereken om dit vir teksterminale te gebruik (tensy jy hardeware vloeibeheer gebruik - en dit vereis gewoonlik 'n handgemaakte kabel). Vir die dokumentasie vir direk verbind terminale, sien die "Direct" gedeelte van die handleiding: mgetty.texi.

Kyk na die laaste lyne van /etc/mgetty/mgetty.config vir 'n voorbeeld om dit vir 'n terminaal te konfigureer. Tensy jy sê "toggle-dtr no", sal dit dink dat jy 'n modem het en die DTR-pen op die rekenaar laat val (ontken) in 'n tevergeefse poging om die nie-bestaande modem te herstel. In teenstelling met ander gettys sal mgetty hom nie aan 'n terminaal verbind nie totdat iemand enige sleutel van die terminaal slaan sodat jy 'n? vir die terminale in die top of ps totdat dit gebeur. Die logs in / var / log / mgetty / mag 'n paar waarskuwingsboodskappe vertoon wat slegs van toepassing is op modems wat u mag ignoreer.

Hier is 'n voorbeeld van die eenvoudige lyn wat u in / etc / inittab installeer:

s1: 23: respawn: / sbin / mgetty -r ttyS1