Termau Testun ar Linux

14.1 Getty (a ddefnyddir yn / etc / inittab)

Cyflwyniad i Getty

Er mwyn i broses fewngofnodi gael ei redeg ar borthladd serial (a'r derfynell wedi'i gysylltu ag ef) pan fydd y cyfrifiadur yn cychwyn (neu newid y lefelau rhedeg) rhaid rhoi gorchymyn getty i'r ffeil / etc / inittab. Gall rhedeg getty o'r llinell orchymyn arwain at broblemau (gweler Os bydd getty yn rhedeg o'r llinell orchymyn: Stopiwch y rhaglenni i weld pam). Mae Getty GETs yn TTY (terfynell) yn mynd. Mae angen i bob terfynell ei orchymyn getty ei hun. Mae yna o leiaf un gorchymyn getty ar gyfer y consol ym mhob ffeil / etc / inittab. Dewch o hyd i hyn a rhowch y gorchmynion getty ar gyfer y terfynellau go iawn nesaf iddo. Gall y ffeil hwn gynnwys llinellau getty sampl ar gyfer terfynellau testun y cyfeirir atynt fel bod popeth y mae angen i chi ei wneud yw eu datgymhwyso (tynnwch y prif rif) a newid ychydig o ddadleuon.

Mae'r dadleuon a ganiateir yn dibynnu ar ba getty rydych chi'n ei ddefnyddio:
Mae dau darn gorau ar gyfer terfynellau cysylltiedig uniongyrchol yw:

Mae dau ddarn gorau ar gyfer modemau deialu (osgoi terfynellau cysylltiedig uniongyrchol) yw:

Gludiau syml i'w defnyddio os na fyddwch chi'n defnyddio terfynell destun go iawn. Mae'r rhan fwyaf o ddefnyddwyr Linux yn defnyddio un o'r rhain yn eu monitor:

Efallai y bydd eich dosbarthiad Linux yn dod â naill ai ps_getty neu agetty ar gyfer terfynellau testun. Mae rhai dosbarthiadau'n cyflenwi na. Yn anffodus, maent yn aml yn ei alw'n "getty" felly mae'n bosib y bydd angen i chi benderfynu pa un sydd gennych ers i'r dadleuon a roesoch ar ôl hynny yn / etc / inittab fod yn wahanol. Defnyddia Debian agetty (yn y pecyn util-linux). Defnyddiodd RedHat a Fedora ps_getty sydd ar: ps_getty

Fel dewis olaf i geisio pennu pa fath o getty sydd gennych, gallech edrych ar ei god gweithredadwy (fel arfer mewn / sbin). Mae gan ps_getty / etc / gettydefs ymgorffori yn y cod hwn. I chwilio amdano, ewch i / sbin a theipiwch:
llongau getty | grep getty
Os yw getty mewn gwirionedd yn aflonyddwch, ni fydd yr uchod yn arwain at ddim. Fodd bynnag, os ydych chi'n teipio agetty:
getty -h
Dylech ddangos yr opsiynau [-hiLmw].

Os nad oes gennych y getty, rydych chi eisiau gwirio dosbarthiadau eraill a'r rhaglen estron i drosi rhwng pecynnau RPM a Debian. Gellir lawrlwytho'r cod ffynhonnell o Getty Software.

Os nad ydych chi'n defnyddio llinellau rheoli modem (er enghraifft, os mai dim ond y lleiafswm o 3 o ddargludyddion rydych chi'n ei ddefnyddio: trosglwyddo, derbyn a thir signal cyffredin) dylech adael i chi wybod hyn trwy ddefnyddio baner "lleol". Mae fformat hwn yn dibynnu ar ba getty rydych chi'n ei ddefnyddio.

Mae Getty yn dod allan ar ôl mewngofnodi (a gall ail-lenwi)

Ar ôl i chi fewngofnodi fe sylwch (trwy ddefnyddio "top", "ps -ax", neu "ptree") nad yw'r broses getty bellach yn rhedeg. Beth ddigwyddodd iddo? Pam mae getty yn ailgychwyn eto os caiff eich cragen ei ladd? Dyma pam.

Ar ôl i chi deipio eich enw defnyddiwr, mae getty yn ei gymryd ac yn galw'r rhaglen mewngofnodi yn dweud wrthych eich enw defnyddiwr. Caiff y broses getty ei ddisodli gan y broses mewngofnodi. Mae'r broses fewngofnodi yn gofyn am eich cyfrinair, yn ei wirio ac yn dechrau pa broses bynnag a bennir yn eich ffeil cyfrinair. Mae'r broses hon yn aml yn gregyn bash. Os felly, bash yn dechrau ac yn disodli'r broses fewngofnodi. Nodwch fod un broses yn disodli'r llall a bod y broses gragen bash wedi cychwyn yn wreiddiol fel y broses getty. Bydd goblygiadau hyn yn cael eu hesbonio isod.

Nawr yn y ffeil / etc / inittab, mae'n rhaid i getty ail-baratoi (ailgychwyn) os caiff ei ladd. Mae'n dweud felly ar y llinell sy'n galw getty. Ond os bydd y bragen bash (neu'r broses mewngofnodi) yn cael ei ladd, mae getty yn cywasgu (ailgychwyn). Pam? Wel, mae'r broses mewngofnodi a'r bash yn cael eu disodli ar gyfer getty ac etifeddu

* Mynegai Sut i I'r Terminal Testun

sefydlu'r cysylltiadau signal gan eu rhagflaenwyr. Mewn gwirionedd, os ydych chi'n arsylwi ar y manylion, byddwch yn sylwi y bydd yr un broses yn adnabod yr un broses â'r broses wreiddiol. Felly, mae bash yn fath o gotty yn cuddio gyda'r un rhif adnabod proses. Os caiff bash ei ladd, mae'n union fel y cafodd getty ei ladd (er nad yw getty yn rhedeg anymore). Mae hyn yn arwain at ailfeddiannu getty.

Pan fydd un yn cofnodi, caiff yr holl brosesau ar y porthladd cyfresol eu lladd gan gynnwys y bragen bash. Efallai y bydd hyn hefyd yn digwydd (os yw wedi'i alluogi) os bydd signal hongian yn cael ei anfon i'r porthladd cyfresol trwy ollyngiad o foltedd DCD gan y modem. Naill ai bydd y logout neu gollyngiad yn DCD yn arwain at ail-lenwi getty. Efallai y bydd un yn gorfod rhoi cyfle i chi ail-lenwi trwy ladd llaw bash (neu fewngofnodi) naill ai trwy daro'r allwedd k, ac ati tra'n "top" neu gyda'r gorchymyn "lladd". Mae'n debyg y bydd angen i chi ei ladd gyda signal 9 (na ellir ei anwybyddu).

Os bydd getty yn rhedeg o'r llinell orchymyn: Stopiwch y rhaglenni

Fel rheol, dylech redeg getty o'r tu mewn / etc / inittab ac nid o'r llinell orchymyn neu efallai y bydd rhai rhaglenni sy'n rhedeg ar y terfynell yn cael eu hatal yn annisgwyl (stopio). Dyma pam (sgipiwch i'r adran nesaf os nad yw'r rheswm pam i chi). Os byddwch yn dechrau getty i ddweud ttyS1 o linell orchymyn terfynell arall, dywedwch tty1, yna bydd ganddo tty1 fel ei "derfynell reoli" er bod y derfynell wirioneddol y mae'n ei rhedeg arno yn ttyS1. Felly mae ganddo'r derfynell rheoli anghywir. Ond os yw'n dechrau y tu mewn i'r ffeil inittab yna bydd ganddo ttyS1 fel y derfynell reoli (cywir).

Er bod y derfynell reoli yn anghywir, mae'r mewngofnodi yn ttyS1 yn gweithio'n iawn (ers i chi roi ttyS1 fel dadl i getty). Mae'r mewnbwn a'r allbwn safonol yn cael eu gosod i ttyS1 er bod y derfynell reoli yn parhau i fod yn tty11. Gall rhaglenni eraill sy'n rhedeg yn ttyS1 etifeddu'r mewnbwn / allbwn safonol hwn (sy'n gysylltiedig â ttyS1) ac mae popeth yn iawn. Ond gall rhai rhaglenni wneud y camgymeriad o geisio darllen o'u terfynell reoli (tty1) sydd yn anghywir. Nawr efallai y bydd tty1 yn meddwl bod y rhaglenni hyn yn cael eu cynnal yn y cefndir gan tty1 felly ymgais i ddarllen o tty1 (dylai fod wedi bod yn ttyS1) yn atal y broses a geisiodd ei ddarllen. (Ni chaniateir i broses gefndir ddarllen o'i derfynell reoli.). Efallai y gwelwch neges fel rhywbeth: " [1] + Stopio " ar y sgrin. Ar hyn o bryd, rydych chi'n sownd gan na allwch chi ryngweithio â phroses sy'n ceisio cyfathrebu â chi drwy'r terfynell anghywir. Wrth gwrs i ddianc rhag hyn, gallwch fynd i derfynell arall a lladd y broses, ac ati.

agetty (gellir ei enwi yn getty)

Rhestr enghreifftiol yn / etc / inittab:

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

Mae S1 yn dod o ttyS1. 23 yn golygu bod getty yn cael ei redeg wrth fynd i mewn i lefelau rhedeg 2 neu 3. Mae respawn yn golygu os bydd getty (neu broses sy'n ei ddisodli fel bash) yn cael ei ladd, bydd getty yn cychwyn yn awtomatig eto. / sbin / getty yw'r gorchymyn getty. Mae'r -L yn golygu Lleol (anwybyddwch signalau rheoli modem). -h (na ddangosir yn yr enghraifft) yn galluogi rheoli llif caledwedd (yr un peth â crtscts stty). 19200 yw'r gyfradd baud. Mae ttyS1 yn golygu / dev / ttyS1 (COM2 yn MS-DOS). vt102 yw'r math o derfynell a bydd y getty hwn yn gosod TERM y newidyn amgylcheddol i'r gwerth hwn. Nid oes unrhyw ffeiliau ffurfweddu. Teipiwch "init q" ar y llinell orchymyn ar ôl golygu getty a dylech weld pryd mewngofnodi.

Agetty & # 39; s datrys problemau cydraddoldeb yn awtomatig

Bydd y rhaglen agetty yn ceisio auto-ganfod y set cydraddoldeb y tu mewn i'r derfynell (gan gynnwys unrhyw gydraddoldeb). Nid yw'n cefnogi bytes data 8-bit ynghyd â chydraddoldeb 1-bit. Gweler bytes data 8-bit (ynghyd â chydraddoldeb). Os ydych chi'n defnyddio stty i osod cydraddoldeb, bydd asetty yn ei wrthod yn awtomatig gan ei bod yn dymuno i'r darn cydraddoldeb ddod i law fel petai'n rhan o ddata. Y rheswm am hyn yw bod angen iddo gael y rhan olaf (o bosib ychydig o gydraddoldeb) wrth i chi deipio eich enw mewngofnodi fel ei bod yn gallu canfod cydraddoldeb yn awtomatig. Felly, os ydych chi'n defnyddio cydraddoldeb, ei alluogi o fewn y terfynell testun yn unig a gadael i'r agetty ei ganfod a'i osod ar y cyfrifiadur. Os yw'ch terfynell yn cefnogi cydraddoldeb a dderbynnir, bydd yr amser mewngofnodi yn edrych yn ddiffygiol nes i chi deipio rhywbeth fel y gall getty ganfod

cydraddoldeb. Bydd yr ysgogiad ysgafn yn atal ymwelwyr, ac ati rhag ceisio mewngofnodi. Gallai hynny fod yn union yr hyn yr ydych ei eisiau.

Mae yna weithiau'n broblem wrth ganfod cydraddoldeb yn awtomatig. Mae hyn yn digwydd oherwydd ar ôl i chi deipio eich enw mewngofnodi yn gyntaf, mae agetty yn dechrau'r rhaglen fewngofnodi i orffen eich logio i mewn. Yn anffodus, ni all y rhaglen fewngofnodi ddod o hyd i gydraddoldeb felly pe na bai'r rhaglen getty yn penderfynu ar y cydraddoldeb yna ni fydd mewngofnodi yn gallu pennu naill ai. Os bydd yr ymgais mewngofnodi gyntaf yn methu, bydd mewngofnodi yn caniatáu i chi roi cynnig arni eto, ac ati (pob un gyda'r set cydraddoldeb yn anghywir). Yn y pen draw, ar ôl nifer o ymdrechion a fethwyd i fewngofnodi (neu ar ôl amserlen) bydd yr afon yn dechrau eto ac yn cychwyn y dilyniannau mewngofnodi drosodd eto. Unwaith y bydd getty yn rhedeg eto, efallai y bydd yn gallu canfod y gydraddoldeb ar yr ail geisi felly gall popeth weithio'n iawn.

Gyda chydraddoldeb anghywir, ni all y rhaglen mewngofnodi ddarllen yr hyn y byddwch chi'n ei deipio'n gywir ac ni allwch chi logio i mewn. Os yw'ch terfynell yn cefnogi cydraddoldeb a dderbyniwyd, byddwch yn parhau i weld sgrîn anhygoel. Os bydd getty yn methu â chanfod ffeil, bydd ffeil / etc / mater fel arfer yn cael ei ollwng i'r sgrin ychydig cyn y cyn y prydlon, felly mae'n bosibl y bydd mwy o eiriau ar y sgrin yn ymddangos.

Pam na all aflonyddu canfod cydraddoldeb trwy'r llythyr cyntaf wedi'i deipio? Dyma enghraifft: Mae'n debyg ei fod yn canfod bitte 8-bit gyda'i bit cydraddoldeb 0 (bit gorchymyn uchel) a chyda nifer odrif o 1-bit. Pa gydraddoldeb ydyw? Wel, mae'r nifer oddeutu 1 bit yn awgrymu ei bod yn anghydraddoldeb. Ond gallai hefyd fod yn gymeriad 8-bit heb unrhyw gydraddoldeb. Nid oes unrhyw ffordd hyd yma i benderfynu pa un. Ond hyd yn hyn rydym wedi dileu'r posibilrwydd o gydraddoldeb hyd yn oed. Mae canfod cydraddoldeb yn deillio o ganlyniad i broses o ddileu.

Os yw'r byte typed nesaf yn debyg i'r un cyntaf a hefyd yn dileu'r posibilrwydd o gydraddoldeb hyd yn oed, mae'n dal i fod yn amhosibl penderfynu ar gydraddoldeb. Gall y sefyllfa hon barhau am gyfnod amhenodol ac mewn achosion prin bydd mewngofnodi yn methu nes i chi newid eich enw mewngofnodi. Os yw agetty yn canfod rhywfaint o gydraddoldeb o 1, bydd yn cymryd yn ganiataol mai darn cydraddoldeb yw hwn ac nid darn gorchymyn uchel o gymeriad 8-bit. Felly, mae'n tybio nad ydych yn defnyddio meta-gymeriadau (setiau uchel) yn eich enw defnyddiwr (hy bod eich enw mewn ASCII).

Fe all un fynd i mewn i "dolen fewngofnodi" mewn sawl ffordd. Peidiwch â theipio dim ond un llythyr neu ddau ar gyfer eich enw mewngofnodi ac yna taro'r ffurflen. Os nad yw'r llythyrau hyn yn ddigonol ar gyfer canfod cydraddoldeb, yna fewngofnodwch yn ôl cyn bod cydraddoldeb wedi'i ganfod. Weithiau bydd y broblem hon yn digwydd os nad oes gennych y derfynell ar a / neu ei gysylltu pan fydd yr afon yn dechrau'n gyntaf.

Os byddwch chi'n mynd yn sownd yn y "dolen fewngofnodi" hon, mae modd i chi gyrraedd yr allwedd dychwelyd sawl gwaith nes i chi gael yr amser mewngofnodi getty. Ffordd arall yw dim ond aros munud neu fwy am amserlen. Yna, bydd y rhaglen getty yn cael ei roi ar y sgrin gan y rhaglen getty a gallwch geisio eto i fewngofnodi.

Data bytes 8-bit (ynghyd â chydraddoldeb)

Yn anffodus, ni all aflonyddwch ganfod y cydraddoldeb hwn. O ddiwedd 1999 nid oes ganddo opsiwn i analluogi canfod cydraddoldeb yn awtomatig ac felly bydd yn canfod cydraddoldeb anghywir. Y canlyniad yw y bydd y broses fewngofnodi yn cael ei ddileu a bydd cydraddoldeb yn cael ei osod yn anghywir. Felly nid yw'n ymddangos yn ymarferol i geisio defnyddio bytes data 8-bit â chydraddoldeb.

getty (rhan o getty_ps)

(Mae'r rhan fwyaf o hyn yn dod o'r hen Serial-HOWTO gan Greg Hankins)
Ar gyfer y getty hwn mae angen i ddau roi cofnod mewn ffeil ffurfweddu ac ychwanegu cofnod yn / etc / inittab . Dyma rai enghreifftiau o gofnodion i'w defnyddio ar gyfer eich terfynell yr ydych yn ei roi yn y ffeil ffurfweddu / etc / gettydefs .

# 38400 bps Mynediad Terfynol Dumb DT38400 # B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL # @ S @L mewngofnodi: # DT38400 # 19200 bps Mynediad terfynol Dumb DT19200 # B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL # @ S @L login: # DT19200 # 9600 bps Mynediad Terfynol Dumb DT9600 # B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL # @ S @L login: # DT9600

Sylwch mai dim ond labeli yw'r DT38400, DT19200, ac ati a rhaid i'r un peth yr ydych yn ei ddefnyddio yn / etc / inittab .

Os ydych chi eisiau, gallwch wneud pethau diddorol argraffu getty yn y faner mewngofnodi. Yn fy enghreifftiau, mae gen i enw'r system a'r llinell gyfresol wedi'i argraffu. Gallwch ychwanegu pethau eraill: [blockquote

cysgod = ie] @B Y gyfredol (wedi'i werthuso ar y pryd y mae'r @B yn cael ei weld) gyfradd bps. @D Y dyddiad cyfredol, yn MM / DD / YY. @L Y llinell gyfresol y mae getty ynghlwm wrthi. @S Enw'r system. @T Yr amser presennol, yn HH: MM: SS (24 awr). @U Nifer y defnyddwyr sydd wedi'u harwyddo ar hyn o bryd. Dyma gyfrif o nifer y cofnodion yn y ffeil / etc / utmp sydd â maes ut_name di-null. @ V Gwerth VERSION, fel y'i rhoddir yn y ffeil rhagosodiadau. I arddangos un cymeriad '@', defnyddiwch naill ai '\ @' neu '@@'.

Pan wnewch chi olygu / etc / gettydefs , gallwch wirio bod y cystrawen yn gywir trwy wneud:

linux # getty -c / etc / gettydefs

Gwnewch yn siŵr nad oes ffeil cyfluniad getty neu uugetty arall ar gyfer y porthladd cyfresol y mae'ch terfynell wedi'i atodi fel ( /etc/default/{uu}getty.ttyS N neu /etc/conf.{uu}getty.ttyS N ) , gan y bydd hyn yn debygol o ymyrryd â rhedeg getty ar derfynell. Dileu ffeiliau o'r fath sy'n gwrthdaro os ydynt yn ymadael.

Golygu eich ffeil / etc / inittab i redeg getty ar y porthladd cyfresol (gan roi yn y wybodaeth gywir ar gyfer eich amgylchedd - porthladd, cyflymder a math terfynol diofyn):

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

Ar y pwynt hwn, fe ddylech chi weld mewngofnodi ar eich terfynell. Efallai y bydd yn rhaid i chi gyrraedd dychwelyd i gael sylw'r derfynell.

yn rhyfedd

Mae'r "m" yn sefyll ar gyfer modem. Mae'r rhaglen hon yn bennaf ar gyfer modemau ac, o ganol 2000, bydd angen ailgyfuno i'w ddefnyddio ar gyfer terfynellau testun (oni bai eich bod yn defnyddio rheolaeth llif caledwedd - ac sydd fel arfer yn gofyn am gebl wedi'i wneud â llaw). Am y dogfennau ar gyfer terfynellau cysylltiedig uniongyrchol, gweler adran "Uniongyrchol" y llawlyfr: mgetty.texi.

Edrychwch ar y llinellau olaf o /etc/mgetty/mgetty.config am enghraifft o'i ffurfweddu ar gyfer terfynell. Oni bai eich bod yn dweud "toggle-dtr no" bydd yn meddwl bod gennych chi modem a gollwng (diystyru) y pin DTR yn y PC mewn ymgais oer i ailosod y modem nad yw'n bodoli. Mewn gwrthgyferbyniad â chludoedd eraill, ni fydd mgetty yn ymestyn ei hun i derfynell nes bydd rhywun yn cyrraedd unrhyw allwedd o'r derfynell honno, felly fe welwch chi? ar gyfer y derfynell yn y top neu'r ps nes bod hyn yn digwydd. Efallai y bydd y logs in / var / log / mgetty / yn dangos ychydig o negeseuon rhybudd sy'n berthnasol i modemau y gallwch chi eu hanwybyddu yn unig.

Dyma enghraifft o'r llinell syml a roesoch yn / etc / inittab:

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