Testu-terminala Linux-ean

14.1 Getty (/ etc / inittab erabiltzen da)

Gettyren sarrera

Saio-hasierako proiekzio bat serieko ataka batean exekutatzeko (eta konektatutako terminalera) ordenagailua martxan dagoenean (edo exekutatzen ari diren aldatzeak) Getty komandoa / etc / inittab fitxategian sartu behar da. Komando lerroko getty exekutatzea arazoak sor ditzake (ikus Getty exekutatzen komando lerroan badaude: Programak gelditu zergatik ikusteko). Gettyk TTY (terminal bat) egiten du. Terminal bakoitzak bere getty komandoa behar du. Gainera, / etc / inittab fitxategi guztietan kontsumitzailearen getty komandoa ere badago. Aurkitu hau eta getty komandoak benetako terminalak jartzeko. Fitxategi honek lagineko getty lerroak izan ditzake, testuinguruko terminalean ageri direnak, beraz, egin behar duzun guztia deskonprimitu behar da (kendu liderra #) eta aldatu zenbait argumentu.

Onartzen diren argumentuak erabiltzen duzun gettyren araberakoa da:
Bi zuzeneko konektatutako terminaletarako bi gettys hauek dira:

Bi gettys modemak markatzeko modurik onena (zuzenean konektatutako terminalak saihesteko) honako hauek dira:

Testu-terminal erreala erabiltzen ez baduzu erabilgarri dauden gettys sinpleak. Linux erabiltzaile gehienek erabiltzen dute horietako bat monitorean:

Zure Linux banaketa ps_getty edo agetty testu-terminaletarako etorri daiteke. Zenbait banaketak ez du hornitzen. Zoritxarrez, "getty" deitzen ohi dute, beraz / etc / inittab-en ondoren jarri dituzun argitalpenak zein izan diren zehaztu beharko duzu. Debianek erabiltzen du agetty (util-linux paketean). RedHat eta Fedora erabiltzen ps_getty hau da: ps_getty

Azken xedea getty-k zehaztea saiatzen den bitartean, egiaztatu exekutagarriaren kodea (normalean / sbin). ps_getty / etc / gettydefs kode honetan txertatu da. Horretarako, joan / sbin eta idatzi:
kateak getty | grep getty
Getty benetan agetty bada, goian ezer ez da izango emaitza. Hala eta guztiz ere, agetty idazten baduzu:
getty-h
aukera [-hiLmw] erakutsi beharko lituzke.

Ez baduzu Getty-k beste banaketa eta alien programa egiaztatu RPM eta Debian paketeen artean bihurtzeko. Iturburu-kodea Getty Software-tik deskargatu daiteke.

Modem kontroleko lerroak erabiltzen ari ez bazara (adibidez, 3 eroale gutxienez erabiltzen badituzu: transmititu, jasotzea eta ohiko seinalea), getty-k jakin behar duzu hau "tokiko" bandera erabiliz. Honen formatua araberakoa da zein erabiltzen duzun.

Getty saioaren ondoren irteten da (eta berrezarri daiteke)

Saioa hastean, nabarituko duzu ("top", "ps -ax" edo "ptree" erabiliz) getty prozesua martxan jada ez dagoela. Zer gertatu zaizu? Zergatik getty berriro hasten da zure shell hil egiten bada? Hona hemen zergatik.

Zure erabiltzaile-izena idatzi ondoren, getty-k hartu eta erabiltzaile-izena kontatzen duen saio-programa deitzen du. Getty prozesua saio-hasierako prozesuan ordezten da. Saio-hasierako prozesuak zure pasahitza eskatzen du, egiazta ezazu eta pasahitza fitxategian zehaztutako edozein prozesutan hasten da. Prozesu hau sarritan bash shell da. Hala bada, bash saio-hasierako prozesua hasten eta ordezten du. Kontuan izan prozesu batek beste bat ordezkatzen duela eta bash shell prozesua jatorriz getty prozesu gisa hasi zela. Horren ondorioak azalduko dira.

Orain / etc / inittab fitxategian, getty suposatzen da respawn (berrabiarazi) hil egiten bada. Esaten du, beraz, getty deitzen duen lerroan. Baina bash shell (edo saio-hasierako prozesua) hil egiten bada, getty respawns (berrabiarazten). Zergatik? Beno, saio-hasierako prozesua eta bash-ak getty eta ordezko ordezten dira

* Testua Terminalaren Nola-indizea

seinaleen konexioak aurrekoek ezartzen dituzte. Izan ere, xehetasunak ikusten badituzu, ordezko prozesuak prozesu originalaren IDa izango du. Horrela, bash motako mozorrotxoa da ID prozesuaren prozesu berarekin. Bash hil egiten bazen, getty hil zen (nahiz eta getty ez da gehiago exekutatzen). Hau lortzeko getty respawning.

Saioa amaitzean, serieko ataka horretan prozesu guztiak hil dira bash shell barne. Hau ere gertatuko da (gaituta badago), hangout-aren seinalea serieko ataka batera bidaliko da, DCD tentsioaren beherakada modemaren bidez. DCD-en saioa amaitzean edo desagertzean, getty respawning lortuko da. Eskuratu ahal izango duzu getty bat eskuz bash (edo saio) hiltzeko, k tekla sakatuz, eta abar "goian" edo "hiltzea" komandoarekin sakatuz. Beharbada hiltzea 9 seinaleekin (ezin da baztertu).

Getty komando lerroan exekutatzen bada: Programak gelditu egiten dira

Normalean / etc / inittab barruan eskuratu beharko zenuke getty eta ez komando-lerrotik edo, bestela, terminalean exekutatzen diren zenbait programak ustekabean eten egin daiteke (gelditu egin da). Hona zergatik (joan hurrengo atalera, zergatik ez duzu garrantzitsua). Beste ttyS1 ttyS1 bat abiarazten baduzu komando-lerro baten beste terminal batetik, esan tty1, tty1 izango du bere "kontrol-terminal" gisa, nahiz eta benetako terminal exekutatzen ttyS1 da. Horrela okerreko terminal kontrolatzailea du. Baina inittab fitxategiaren barruan abiarazten bada, ttyS1 izango da kontrol-terminal gisa (zuzena).

Nahiz eta kontrol-terminal okerra izan, ttyS1 saioa hasita dago (ttyS1 eman diozu getty-ren argumentu gisa). Sarrera estandarra eta irteera ttyS1-ri ezarriko dira, nahiz eta kontrol-terminalak tty11 izaten jarraitzen du. Beste ttyS1 programetan exekutatu daitezke sarrera / irteerako estandar hau (hau da, ttyS1arekin konektatuta) eta dena ongi dago. Baina programa batzuek akatsa izan dezakete okerreko kontrol-terminaletik (tty1) irakurri nahian. Orain tty1-k tty1-k programa hauek exekutatzen ari direla pentsa liteke tty1-tik irakurtzeko saiakerak (ttyS1 izan behar zuen) irakurtzen saiatu zen prozesua geldiarazten. (Atzeko planoko prozesua ez da kontrolatzen terminaletik irakurtzeko baimena). Mezu bat, adibidez: " [1] + gelditu egin da " pantailan. Une honetan, trabatuta geratzen zaizu, ezin duzu zurekin komunikatu nahi ez duen prozesu batekin elkarreragin gaizki terminalaren bidez. Jakina, honetatik ihes egiteko beste terminal batera joan zaitezke eta prozesua hiltzeko, eta abar.

Agetty (agian getty izenekoa)

Adibidez lerro bat / etc / inittab:

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

S1 ttyS1 da. 23 esan nahi du getty exekutatzen diren 2 edo 3 mailetan sartzen dela exekutatzen denean. Respawnek esan nahi du getty (edo bash bezalako ordezkapena duen prozesua hil egiten dela), getty automatikoki abiatuko da (respawn) berriro. / sbin / getty getty komandoa da. -L Lokalea esan nahi du (ez ikusi modem kontrolaren seinaleak). -h (ez da adibiderik erakusten) hardware-fluxuaren kontrola gaitzen du (kurbadurak bezalakoak). 19200 baudien tasa da. ttyS1 esan nahi du / dev / ttyS1 (COM2 MS-DOS). vt102 terminal mota da eta getty honek balio horizontala ingurune aldagaia ezarriko du. Ez dago konfigurazio fitxategirik. Idatzi "init q" komando lerroan getty editatu ondoren eta saio-hasierako galdeketa bat ikusi beharko zenuke.

Bikoteen parekotasuna duten auto-detekzio automatikoa

Agetty programak terminalaren barruan parekotasuna automatikoki detektatuko du (parekotasuna ez barne). Ez du 8 biteko datu-byte gehi 1 biteko parekotasuna onartzen. Ikusi 8 biteko datu byte (gehi parekotasuna). Parekotasuna ezartzeko stty erabiltzen baduzu, agetty- k automatikoki berrabiaraziko du hasiera batean parekotasun- bitra bitarteko datu-bit bat balitz bezala hartzera . Honek azken bit-eko (agian parekotasun-bit) bat lortu behar duelako zure saio-hasieraren izena idaztean, parekotasuna detektatu ahal izateko. Horrela, parekotasuna erabiltzen baduzu, testu-terminalaren barruan soilik gaitu ezazu eta agetty-k automatikoki detektatu eta ordenagailuan ezarri. Zure terminalak jasotako parekotasuna onartzen badu, saio-hasierako galdeketa garbi ikusiko du zerbait idazten duzun arte, beraz, getty-k detektatu dezake

parekotasuna. Gidaliburuaren gonbita bisitariak saihestu egingo dira, eta abar saioa hasi nahian. Hori nahi duzuna izan daiteke.

Batzuetan parekotasun automatikoki detektatzeko arazoa dago. Hori gertatzen da zure saio-hasierako izena idatzi ondoren, agetty saio-hasiera programa hasten da saioa hastean amaitzeko. Zoritxarrez, saio-hasierak ezin du parekorik detektatu, beraz, getty programak ez du parekotasuna zehaztu, saioa hasteko ezin izango du zehaztu bai. Lehenengo saioaren saiakerak huts egiten badu, saioa hasi berriro saiatuko zara, etab. (Parekotasunak ez du gaizki). Azkenean, login saio huts batzuk (edo denbora tarte bat igaro ondoren) agetty berriro martxan jarriko da eta saio hasierako sekuentziak berriro abiaraziko dira. Behin berriz martxan dagoenean, parekotasuna antzeman ahal izango du bigarren probetan, dena ondo funtziona dezan.

Parekotasun okerra, saio-hasierak ezin du irakurtzeko zein idazten duzun eta ezin duzu saioa hasi. Zure terminalak jasotako parekotasuna onartzen badu, pantailako pantaila bat ikusiko duzu. Gettyk parekotasunak ez badu lortzen / etc / issue fitxategiak normalean pantailara bota ohi dira gonbita baino lehenago, pantailan agertzen diren hitzak garbiagoa izan liteke.

Zergatik ezin du engainatu paretek lehen letra idatzitakoaren arabera? Hona hemen adibide bat: Demagun 8 biteko byte bat detektatzen duela bere parekotasuna 0 bitarekin (eskaera handiko bit) eta 1 bit bitarteko zenbaki batekin. Zein parekotasun da? Beno, 1 bit bitarteko zenbaki bakoitza parekotasun bakoitza da. Baina 8 biteko karakterea izan daiteke, ez parekotasunik. Orain arte ez dago zein den zehazteko. Baina orain arte ez dugu parekotasunik izan. Parekotasunaren detekzioa ezabatze prozesu batek aurrera egiten du.

Hurrengo byte idatzitakoa lehenengoaren antzekoa bada eta parekotasun berdina ere ezabatzen badu, ezinezkoa da parekotasuna zehaztea. Egoera hau mugagabean eutsi ahal izango da eta, kasu batzuetan, saioa hasteko saioa hasten ez baduzu, saioa hasteko izena aldatu egingo duzu. Agetty-k 1 biteko parabolaren bat aurkitzen badu, parekotasun-bit bat izango da eta ez da 8 biteko karaktere-kopuru handia. Horrela, zure erabiltzaile-izenean (esate baterako, zure izena ASCIIa da) ez dituzu meta-karaktereak (bit-multzo txikiak) erabiltzen.

Ezin daiteke "saioa hasi" sartu modu ezberdinetan. Demagun letrak edo letrak idatzi baino ez dituzula zure izenean eta, ondoren, sakatu itzuli. Letra horiek ez badira parekotasunaren antzemateetarako nahikoa, saioa hasierako parekotasuna detektatu aurretik exekutatzen da. Batzuetan arazoren bat gertatzen da terminala eta / edo konektatutakoa ez badituzu agetty lehen aldiz hasten denean.

"Saio hasiera" honetan itsatsita geratzen bazara, modu bat atera behar da bueltan-tekla hainbat aldiz iritsi arte getty login galderara iritsi arte. Beste modu bat besterik ez da itxaron minutu bat edo gehiago iraungitzeagatik. Ondoren, Gettyren saio-hasierako eskaera pantailan lortuko da getty programa eta berriro saia zaitezke saioa hasteko.

8 biteko datuak byte (gehi parekotasuna)

Zoritxarrez, agettyk ezin du parekotasun hori detektatu. 1999. urte amaieran, ez da parekotasun automatikoki detektatzeko aukera desgaitzen, beraz parekotasun okerra antzemango du. Emaitza da login prozesua nahasgarria izango dela eta parekotasuna gaizki egongo dela. Horrela, ez dirudi bideragarria 8 biteko datuen byteak partzialki erabiltzea.

getty (getty_ps zati)

(Gehienek Greg Hankins-en Serial-HOWTO zaharra da)
Getty honek konfigurazio fitxategian sarrerak jarri eta sarrera / etc / inittab batean sartu behar ditu . Hemen daude zure sarrerako adibide batzuk zure konfigurazio fitxategian / etc / gettydefs-ean sartzeko .

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

Kontuan izan DT38400, DT19200, etab. Etiketak besterik ez direla eta / etc / inittab erabiltzen duzula.

Nahi izanez gero, getty inprimatu gauza interesgarriak egin ditzakezu saio hasierako pantailan. Nire adibideetan, sistemaren izena eta serieko linea inprimatua dut. Beste gauza batzuk gehi ditzakezu: [blockquote

itzala = bai] @ B Uneko (bistaratzen den unean @B ikus daiteke) bps tasa. @D Uneko data, MM / DD / YY. @L Bety-ren lerroa zeinari lotua erantsita. @S Sistemaren izena. @T Uneko ordua, HH: MM: SS (24 ordu). @U Unean sinatutako erabiltzaileen kopurua. Honek / etc / utmp fitxategiaren sarreren kopurua zenbatzen du ut_name eremua ez den null. @ V VERSION balioa, lehenetsitako fitxategian ematen den bezala. '@' Karaktere bakarra bistaratzeko, erabili '\ @' edo '@@'.

Editatu / etc / gettydefs egitean , sintaxia zuzena dela egiazta dezakezu:

linux # getty -c / etc / gettydefs

Ziurtatu ez duzula beste getty edo uugetty konfigurazio fitxategia zure terminalari atxikitako serieko ataka ( /etc/default/{uu}getty.ttyS N edo /etc/conf.{uu}getty.ttyS N ) , hau agian terminal batean getty exekutatzea eragotz dezake . Kendu gatazkatsuak diren fitxategiak kentzen badituzte.

Editatu / etc / inittab fitxategia lortzeko getty serieko ataka (zure inguruko informazio egokia ordez - ataka, abiadura eta terminal mota lehenetsia):

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

Une honetan, zure terminaleko saio-hasierako kontsulta bat ikusi beharko zenuke. Orduan itzulera sakatu beharko duzu terminalaren arreta lortzeko.

mgetty

"M" modema dago. Modemarako da programa hau, batez ere, 2000. urteaz geroztik. Horretarako, testu-terminaletarako erabili beharko da (hardware-fluxuen kontrola erabiltzen baduzu eta eskuz egindako kablea behar bezala erabiltzen baduzu). Zuzenean konektatutako terminaletarako dokumentazioarentzat, ikusi eskuliburuaren "Zuzena" atala: mgetty.texi.

Ikus ezazu /etc/mgetty/mgetty.config azken lerroetarako konfiguratzeko adibide bat terminal baten bidez. "Toggle-dtr no" esan ezean, ez duzu modem eta tanta bat (ukatu) DTR pin ordenagailuan alda daitekeen modem bat berrezarriko. Beste gettysekin alderatuta, mgetty-k ez du terminal batera erantsiko norbaitek terminal bateko edozein gako atzitzen uzten duen arte, beraz, ikusiko duzu? goian edo ps terminalerako gertatzen den arte. Log- en / var / log / mgetty / -en logotipoek ohartarazten zaizkie modemei aplikatzen zaizkien abisu-mezu batzuk.

Hemen / etc / inittab jarri duzun lerro sinplearen adibide bat da :

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