Text-Terminals in Linux

14.1 Getty (usatu in / etc / inittab)

Inghilterra à Getty

Per avè un prucessu di login cunduciùtu in un portu serale (è a cunnessione cunghjieta cù questu) quandu l'ordinatore cumenzava (o cambia per esercitu i niveli) un comu getty devu esse posta in u / etc / inittab file. U running getty da a linea di cummandu pò causà problemi (vede Si getty run da a linea di cummandu: Programmi stati firmati per vede zerga). Getty GETs un TTY (un terminal) chì andava. Ogni terminal ne ha bisognu di u so cumpagnu propiu getty. Ci hè ancu almenu una cumula getty per a cunsola in ogni / etc / inittab file. Truvate questu è mette l'ordine di getty per i termali reale in cunghjinenza. Stu schedariu possu cuntenente di e letti di getty di u testu di i terminali chì sò cummentati da manera chì tuttu chiddu deve bisogna à fà fà cumparisce micca (sguassate u principiu) è cambia pocu argumenti.

L'argumintazzioni chì sò permessi depende di chì u getty uses:
Dui pusitori megliu per i terminali diretti direttamenti sò:

Dui pusitori megliu per i modem dial-up (evite micca per i terminali diretti direttamenti) sò:

Simple gettys di utilizà s'ellu ùn utilizate micca un terminal di testu veru. A più parte di l'usu di Linux utilizanu unu di queste à u so monitoru:

A vostra distribuzione Linux pò vene cun o ps_getty o agetty for text-terminals. Certi distribbui ùn furnisce micca nimu. Sfurtunatamente, sò spessu chjamanu "getty", perchè avete bisognu di sapè quellu chì tenite quandu l'argumenti chì avete postu in / etc / inittab difendenu. Debian usa agetty (in u pianu d'util-linux). RedHat è Fedora utilizatu ps_getty chì hè in: ps_getty

Per via di l'ultimu risorse per pruvà à decisà quale hè u getty, vi pudete avè verificatu u so còdici executable (in solitu / sbin). ps_getty ha / etc / gettydefs incubati in stu codice. Per circà, vai à / sbin è tipu:
strings getty | grep getty
Se getty hè veramente agutty the above will result in nothing. In casu chì avete aghjuntu:
getty -h
mustrari l'opzioni [-hiLmw].

Se ùn avete micca u getty, vede cuntrole d'autri distribuzioni è u prugramma stranicu à cunverta di entre paese RPM è Debian. U codice fonte pò esse telecaricatu da Getty Software.

Se ùn avete micca utilizatu ligami di cuntrollu modem (per esempiu, sè vo pudete sguassà u minimu nummiru di 3 duttorii: trasmettini, riceve è signale di signale), deve esse cunnisciutu quì cun l'usu di una bandiera "local". U formatu di questu depende di quale getty usi.

Getty sia dopu u login (è pudete respawn)

Dopu chì finiscinu quandu avete bisognu (usando "top", "ps -ax", o "ptree") chì u prucessu getty ùn hè micca esecutatu. Chì accadarà? Perchè l'arricchisce l'arricchimentu novu si u vostru cunchulu hè struitu? Eccu per quessa.

Dopu chì avete scrittu in u vostru nome d'utilizatore, Getty si mette è chjamanu u prugramma di cunnessione chì dicenu u vostru nome d'utilizatore. U processu getty hè sustituitu da u prucessu di login. U prucessu di login prupone a vostra password, verifica è comita qualsiasi prucessu hè specificatu in u vostru schedariu di password. U prucessu hè spessu u bash shell. Sì cusì, bash principia è sustituisce u prucessu di login. Nota chì un prucessu sustituì l'altru è chì u prucessu di bash shell hà iniziatu cum'è u processu getty. L'implicazione di questu anu da esse spiegatu sotto.

Avà in u / etc / inittab file, getty hè presumatu respawn (restituisce) sì ubligatoriu. Dice cusì à a linea chì chjamanu getty. Ma se u bash shell (o u prucessu di login) hè tumbatu, getty respawns (novate). Perchè? Bé, sia u prucessu di login è u bash sò sustituti per getty e inherit

* Terminale di Text Terminale Indice

i cunnessione di signale stabiliscenu da i so predecessori. In fatti, si vi vede e dettagli dette avà chì u prucessu di sustitutu avè u stessu prucessu identificatu chì u prucessu uriginale. Hè u bash hè una sorte di getty in disfraz cù u stessu numaru d'identità di processu. Si bash hè uccisu hè solu cum'è getty hè statu uccisu (ancu s'è l'getty ùn hè micca esercitu). Questu risultatu in resu di ricuncora.

Quandu una timperna, tutte e prucessi annantu à u portu serialu sò tumbati chjamatu u bash shell. Chistu pò ancu succede (se attivata) si un signalu di u hangup hè mandatu à u portu serale per una goffe di venti DCD da u modem. Quellu sindromu o catece in DCD serà in risultatu. Puderete forçar à pocu à respawn manighjatu di bash (o login) o chjattendu a chjave C, ecc .: mentre que in "cima" o cù l'ordine "kill". Avete bisognu di tumbà cù u signore 9 (chì ùn pò micca esse ignoratu).

Se getty run da a linea di cummandu: Programmi stati firmati

Aduverà esse direttamente run getty from inside / etc / inittab e micca da a linea di cummanda o altri chì parechji schedari chì currenu nantu à u terminal pò esse in suspiscazione suspesa (stati). Eccu perchè (skip à a secunna sece se u perchè ùn hè impurtante per voi). Se cuminciate u getty for say ttyS1 da a linea di cumanda di un altru terminal, dichjarete tty1, da esse tty1 cum'è a so "terminal di cuntrollu" ancu s'ellu u terminal propriu quiche se è ttyS1. Cusì hà u terminal in cuntrollu incorreu. Ma s'ellu hà iniziatu accadutu à u cartulinu iniziali avà serà ttyS1 cum'è u terminal di cuntrollu (curretta).

Ancu chì u terminal di cuntrollu hè sbagliatu, u login in ttyS1 hè bella (quandu hà datu ttyS1 com'è argumentu à getty). L'ingaghjamentu standard è a pruduzzioni sò stabiliti à ttyS1 anche chì u terminal di cuntrollu hè tty11. L'altri programmi curati à a ttyS1 possu ereditarà sta intrata / pruvedura standard (chì hè cunnessu cù ttyS1) è tuttu hè Avete. Ma qualchì prugrammu pò fà l'errore di pruvà à leghje da u so terminal di cuntrollu (tty1) chì hè sbagliatu. Avà tty1 crede chì i prugrammi si sviluppanu in u sughjettu da tty1 perchè un tentativu di leghje da tty1 (avissi duvutu esse stati ttyS1) risultati per finisce u prucessu chì attrova di leghje. (Un prucessu di fondu ùn hè micca permessu di leghje da u so terminal di cuntrollu). Pudete vede un missaghju quantu: " [1] + Stopped " in u screnu. À questu puntu hè stallatu, postu chì ùn pò micca interaccate cù un prucessu chì prova di cumunicà cun voi per u terminal equivale. Sicuru a scappari di questu pudete andà à un'altra terminale è ammazzanu u prucessu, ecc.

agetty (pò esse chjamatu getty)

Un esempiu in a / etc / inittab:

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

S1 hè da ttyS1. 23 significa chì u getty hè ghjucatu nantu à l'intrata 2 o 3. respawn significa chì si u getty (o un prucessu chì l'ha rimpiazzatu cum'è bash) hè uccisu, l'getty automaticamente (risparazione) torna. / sbin / getty hè l'ordine di getty. U -L significa Locale (ignora i signali di modu di modem). -h (micca illustrattu in l'esempiu) permette un cuntrollu di flussu hardware (stissu cum'è criptichi stritti). 19200 hè a freccia di baud. ttyS1 significa / dev / ttyS1 (COM2 in MS-DOS). U vt102 hè u tipu di terminal è questu getty stabilisce a varià di l'ambienti TERMU à stu valore. Ùn ci hè micca schedari di cunfigurazione. Tipo "init q" nantu à a linea di cumanda dopu l'editore getty è avete vede un promptu di login.

Agtty & # 39; s auto-detection of parity problems

U prugettu agitty pruverà à detta l'identità di a parità in a terminal (inclusa n ogni parità). Ùn soporta data di 8-bit bytes plus 1-bit parity. Vede a data di 8 bits (plus parità). Sè vo avete usatu styte per stabbilisce a parità, agetty automaticamente automaticamente di ricunniscenza, postu chì inizialu vole chì a parità piglia à vende cum'è se fussi un pocu di dati. Questu hè chì avete bisognu à ottene l'ultimu filu (possibile un parità à pocu) cumu scrive u nome d'identificazione per ch'ellu pò detesta automaticamente a parità. Cusì, se utilizate a parità, permettenu solu in u termine di u testu è permettenu l' autore-detettà è aghjunghje à l'informazione. Se u vostru terminal risponde à a parità ricivata, l'avvena di cunnessione vi sarà garritta finu à chì scrivia qualcosa per chì l'getty pò detecà a

parità. U preghjudiziu cusì dilettante uttene u visitori, etc. da pruvà d'accede. Chì puderia esse solu ciò chì vulete.

Ci hè qualchì volta un prublema cù l'autodetection di parità. Questu hè chì dopu avè prima u vostru nome di login, agetty inicce u programu di login per finisce u vostru logging in. Desfortunatemente, u schedariu di login ùn pò detreve parità chì u programma getty disattivò per stabilisce a parità da chì u login ùn hà micca pudè stabilisce questu. Se u primu attu di cunnessione falla, u login si permettenu pruvà di novu, etc. (tutte e parità sette in male). In seguitu, dopu unepochi di prughjetti falluti à cuncede (o dopu un periodu longu) agetty saldurà torna è principià a sequenza di login. Una volta u getty hè in corruzzione novu, pò esse capace di detta a parità in a seconda pruvà cusì tuttu pò pudè esse accaduta.

Cù parità in male, u prugramma di cunnessione ùn pò micca leghjitele leghjite ciò chì scrive è ùn pudete micca log in. Se u vostru terminal rispunnevule a parità ricevenita, seguite per vede una scatula leggente. Se u getty falla per detezziunà a parità un / etc / issue file hè normale di vede à a pantera appena prima di l'avvicina prima, perchè e parolle abbastanza più ridutta nantu à a pantalla.

Perchè ùn pò agitty detracture parity per a prima lettere scritta? Quì hè un esempiu: Eccu perchè detecta un byte di 8 bits cù a so parità pocu 0 (bassu d'altitudine) è cun un qualchì numeru di 1-bits. Qualessu pari hè questu? U bonu, u numeru imparu di 1 bits significanu chì hè parità imparia. Ma puderia ancu esse un caratteru 8-bit senza parità. Ùn ci hè modu cusì finu à determinà quale. Ma, finu à quandu avemu eliminatu a pussibilità di even parity. U detecimentu di a parità perchè annantu à un prucessu d'eliminazione.

Se u vechju byte typed hè simile à u prima unicu è ancu solu l'elimina a pussibilità di even parity, hè ancu impossible per determinar a parità. Questa situazione pò cuntinuà indefinitu è ​​in casi règule cresce l'accessu falla finu à chì cambia u nome di login. Se agitty finds a bit of parity of 1 assume chì hè una parità à pocu è micca un pocu d'altitudine di un caratteru di 8 bits. Hè cusì assume chì ùn utilizate micca metteoti (settore pocu) in u vostru nome d'utilizatore (per esempiu chì u vostru nome hè in ASCII).

Pudete mette in un "login loop" in parechji maneri. Eppo supponi chì l'aghjustate una sola lettera o dui per u vostru nome di login è da u hit back. Sì sti ittri ùn sò micca suffizii par a deteczione di parità, dopu u login corse da a parità hè stata detta. In ocasioni, stu prublema succète si ùn avete micca u terminal è / o cunnessi quandu agetty prima aperta.

Sè stata fatta in questa "login loop" un modu da questu hè di cumbattà a chjave di u ritornu parechji volte finu à ricuarà u guidendu d'iniziu login. L'altru modu hè di aspittà d'esperà un minutu o più per un timeout. Allora l'avvena di cunnessione di u getty se fassi nantu à u screnu da u programa Getty è pudete pruvate di novu in u vostru logu.

8-bit data bytes (plus parità)

Sfortunatamente, agitty ùn pò micca detectar din parità. A fini di a finalità di u 1999 ùn ha micca sceltu per disattivarià l'autodetección di a parità è cusì detalla parighjata incorrecta. U risultatu hè chì u prucessu di cunnessione sarà chjucu è a parità serà messa in male. Cusì ùn pare micca vale à pruvà d'utilizate dades di 8-bit with parity.

getty (parte di getty_ps)

(A maiò parte di questu hè di l'vechju Serial-HOWTO da Greg Hankins)
Per questu getty, unu deve bisogna à pusà entrati in un schedariu di cunfigurazione è aghjunghje una entrata in / etc / inittab . Eccu alcuni esempi di l'articulu di utilizà per a vostra terminal chì vi mette in u schedariu di cunfigurazione / etc / gettydefs .

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

Avete chì u DT38400, DT19200, etc. sò solu scritti è devi esse u listessu chì avete in / etc / inittab .

Se vulete, pudete fà imprese stampativi interessanti in u login banner. In i mio esempi, aghju u nome di u sistema è a linea serata stampata. Pudete aghjunghje altre cose: [blockquote

ombre = sì] @B L'attuale (evaluata à u tempu chì vede a @B hè veduta) a bps rate. @D A data attuale, in MM / DD / YY. @L La linea serial à a quale getty hè attaccatu. @S U nome di u sistema. @T L'actuale ora, in HH: MM: SS (24 ore). @U U numaru di l'utilizatori cun auturizati. Questu hè un cunti di u numuru d'articuli in u persone / etc / utmp chì anu micca un field nenu ut_name. @V U valore di VERSION, quandu hà datu in u schedariu per difettu. Per vede un carattere simule '@', utilice ancu '\ @' o '@@'.

Quandu si face editatu / etc / gettydefs , pudete verificà chì a sintazione hè corretta per quessa:

linux # getty -c / etc / gettydefs

Assicuratevi micca un altru obtusibili o uugetty config file per u portu serjali chì u vostru terminal hè attaccatu à cum'è ( /etc/default/{uu}getty.ttyS N or /etc/conf.{uu}getty.ttyS N ) , chì questu puderà interferire cù running getty in un terminal. Eliminate tali articuli cunflitti si sianu fora.

Edite u vostru / etc / inittab file per esse runty getty on the serial port (sostituisce in l'infurmazione curretta per u vostru ambiente - portu, velocità è u tipu di terminale):

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

À questu puntu, vi vede un promptu di login in u vostru terminal. Pudete bisognu di vultà à ritornu per avè l'attenzione di u terminal.

mgetty

U "m" stands pè u mudellu. Stu prugramma hè principalmente per i modi è da a mità di u 2000, hà bisognu di recompilià per a usu di terminale di testu (aduce s'è l'usu di u cuntrollu di flussu di hardware), è chì solitu necessite un cable fattu in manu). Per a ducumentazione per i terminale diretti direttamenti vede a sección "diretta" di u manual: mgetty.texi.

Fighjate l'ultimi ligami di /etc/mgetty/mgetty.config per un esempiu di a cunfigurà per un terminal. A menu chì ùn diceranu "toggle-dtr no", crede chì avete un modem è gota (negate) u pin DTR à u PC in un tentativu di vinu di rinvià u modem inexistent. In cuntrastu à altri gettys, mgetty ùn ci micca attaccà à un spiccatu finu à chì qualchissia alcuni qualchì chjave di quellu terminal perchè vi vede un? per a terminal in più o ps finu à questu feriu. I logs in / var / log / mgetty / pudete mustrà unepoche di qualchi messaggi d'avvette chì sò solu appiecati à i modi chì pudete chjamate.

Eccu un esempiu di a ligna chì si mette in / etc / inittab:

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