Teksto-fina stacioj sur Linukso

14.1 Getty (uzita en / etc / inittab)

Enkonduko al Getty

Por havi ensalutan procezon kuri sur seria haveno (kaj la fina stacio ligita al ĝi) kiam la komputilo funkciigas (aŭ ŝaltas kuritajn nivelojn) oni devas enmeti komandon getty en la dosieron / etc / inittab. Kuranta getty de la komandlinio povas kaŭzi problemojn (vidu Se getty kuras de komandlinio: Programoj ĉesas vidi kial). Getty GETs estas TTY (fina stacio) iranta. Ĉiu fina stacio bezonas sian propran getty-komandon. Ankaŭ ekzistas almenaŭ unu getty-komando por la konzolo en ĉiu / etc / inittab-dosiero. Trovu ĉi tion kaj metu la getty-komandojn por la realaj fina stacioj apud ĝi. Ĉi tiu dosiero eble enhavas ekzemplojn de akcesoraj tekstoj por tekstaj fina stacioj, kiujn oni devas diri, por ke ĉio, kion vi devas fari estas malkompreni ilin (forigi la ĉefan nombro) kaj ŝanĝi kelkajn argumentojn.

La argumentoj, kiuj rajtas dependas, pri kiuj vi uzas:
Du aviadiloj plej bone por rekte konektitaj fina stacioj estas:

Du akcesoraj plej bonaj por mark-modemaj (eviti rekte konektitajn fina staciojn) estas:

Simplaj uzoj, se vi ne uzas realan tekston-terminalon. Plej multaj Linuksaj uzantoj uzas unu el ĉi tiuj ĉe ilia monitoro:

Via Linukso-dissendo povas veni per ps_getty aŭ agetty por tekst-fina stacioj. Iuj distribuoj ne provizas. Bedaŭrinde, ili ofte nomas ĝin "getty" por ke vi eble bezonu determini, kiun vi havas, pro tio, ke la argumentoj, kiujn vi postulas ĝin en / etc / inittab, diferencas. Debian uzas agetty (en la utila-linux-pako). RedHat kaj Fedora uzis ps_getty kiu estas ĉe: ps_getty

Kiel lasta rimedo provi determini, kiom vi havas, vi povas kontroli ĝian ekzekutan kodon (kutime en / sbin). ps_getty havas / etc / gettydefs enigita en ĉi tiu kodo. Por serĉi ĝin, iru al / sbin kaj tajpi:
strings getty | grep getty
Se getty estas efektive malplena, la supre rezultos nenion. Tamen se vi havas agetty tipe:
getty -h
devus montri la eblojn [-hiLmw].

Se vi ne havas la getty, vi volas kontroli aliajn dissendojn kaj la fremdan programon por konverti inter RPM kaj Debian-pakoj. La fonta kodo povas esti elŝutita el Getty Programaro.

Se vi ne uzas modemajn liniojn de kontrolo (ekzemple se vi nur uzas la minimuman nombron de 3 ŝoforoj: transdonu, ricevi kaj komunan signalon) vi devas scii ĉi tion per "loka" flago. La formato de ĉi tio dependas de kiu vi uzas.

Getty eliras post ensaluto (kaj povas respawn)

Post kiam vi ensalutos, vi rimarkos (per "supro", "ps -ax" aŭ "ptree"), ke la procezo getty ne plu funkcias. Kio okazis al ĝi? Kial getsty rekomencas denove se via ŝelo estas mortigita? Jen kial.

Post kiam vi tajpas vian uzantnomon, getty prenas ĝin kaj vokas la ensalutan programon rakontante ĝin al via uzulnomo. La procezo getty estas anstataŭigita per la ensalutprocezo. La ensalutprocezo petas vian pasvorton, kontrolas ĝin kaj komencas, kio ajn procezo estas specifita en via pasvorto. Ĉi tiu procezo ofte estas la bash-ŝelo. Se do, bash komenciĝas kaj anstataŭas la ensalutan procezon. Notu, ke unu procezo anstataŭas alian kaj ke la bash-ŝelo-procezo origine komenciĝis kiel la procezo getty. La implikaĵoj de ĉi tio estos klarigitaj sube.

Nun en la / etc / inittab-dosiero, getty estas supozita respawn (rekomenci) se mortigita. Ĝi diras tiel sur la linio kiu vokas getty. Sed se la bash shell (aŭ la ensalutprocezo) estas mortigita, getty respawns (rekomencoj). Kial? Nu, ambaŭ la ensalutprocezo kaj bash estas anstataŭaĵoj por getty kaj heredi

* Teksta fina stacio Kiel-Al Indekso

la signalaj rilatoj establas per siaj antaŭuloj. Fakte, se vi observos la detalojn, vi rimarkos, ke la anstataŭa procezo havos la saman procezon ID kiel la originala procezo. Tiel bash estas ia speco disimulanta kun la sama proceza ID-nombro. Se bash estas mortigita, ĝi estas same kiel getty estis mortigita (kvankam getty ne plu funkcias). Ĉi tio rezultas en getty respawning.

Kiam oni elŝaltas, ĉiuj procezoj sur tiu seria haveno estas mortigitaj inkluzive de la bash-ŝelo. Ĉi tio ankaŭ povas okazi (se ebligita) se pendiga signalo estas sendita al la seria haveno per guto de DCD-tensio per la modemo. Aŭ la elŝutado aŭ falo en DCD rezultos akiri resanigon. Oni povas devigi retenadon por mortigi bash (aŭ ensaluton) aŭ per tordado de k-ŝlosilo, ktp dum en "supro" aŭ kun la "mortigi" komandon. Vi verŝajne bezonos mortigi ĝin per signalo 9 (kiu ne povas esti ignorita).

Se getty kuras de komandlinio: Programoj ĉesiĝis

Vi kutime funkciu getty ekstere de / etc / inittab kaj ne de la komandlinio aŭ alie iuj programoj kurantaj sur la fina stacio eble neatendite malaltiĝis (ĉesis). Jen kial (saltu al la sekva sekcio se la kialo ne gravas por vi). Se vi komencos getty por diri ttyS1 de la komandlinio de alia fina stacio, diru tty1, tiam ĝi havos tty1 kiel ĝia "kontrolanta fina stacio" eĉ se la vera fina stacio kuri estas ttyS1. Tiel ĝi havas la malĝustan kontrolon de fina stacio. Sed se ĝi komenciĝas ene de la dosiero inittab, tiam ĝi havos ttyS1 kiel la kontrolanta fina stacion (ĝusta).

Kvankam la kontrola fina stacio estas malĝusta, la ensaluto ĉe ttyS1 funkcias bone (ĉar vi donis ttyS1 kiel argumento al getty). La norma enigo kaj eligo estas fiksitaj al ttyS1 eĉ se la kontrola fina stacio restas tty11. Aliaj programoj kuritaj ĉe ttyS1 povas heredi ĉi tiun norman eniron / eligo (kiu estas ligita al ttyS1) kaj ĉio estas bone. Sed iuj programoj povas fari eraron provi legi de ilia kontrolo fina stacio (tty1), kiu estas malĝusta. Nun tty1 povas pensi, ke ĉi tiuj programoj estas kuritaj en la fono de tty1 do provo legi de tty1 (ĝi devus esti ttyS1) rezultas haltigi la procezon, kiu provis legi. (Fona procezo ne rajtas legi de ĝia reguliga fina stacio.). Vi povas vidi mesaĝon ion kiel: " [1] + haltita " sur la ekrano. Ĉe ĉi tiu punkto vi estas batita pro tio ke vi ne povas interagi kun procezo, kiu provas komuniki kun vi tra la malĝusta fina stacio. Por supozita eskapi de ĉi tio povas iri al alia fina stacio kaj mortigi la procezon, ktp.

agetty (povas esti nomata getty)

Ekzemplo de linio en / etc / inittab:

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

S1 estas el ttyS1. 23 signifas, ke getty estas kurita post eniranta kuritajn nivelojn 2 aŭ 3. Respawn signifas, ke se getty (aŭ procezo, kiu anstataŭigis ĝin kiel bash) estas mortigita, getty aŭtomate komenciĝos (respawn) denove. / sbin / getty estas la getty-komando. La -L signifas lokan (ignori signojn de kontrolo de modemo). -h (ne montrita en la ekzemplo) ebligas al la aparataro fluo kontrolo (same kiel stty crtscts). 19200 estas la baud-indico. ttyS1 signifas / dev / ttyS1 (COM2 en MS-DOS). vt102 estas la tipo de fina stacio kaj ĉi tiu getty starigos la median variablon TERM al ĉi tiu valoro. Ne estas agordoj de agordo. Tajpu "init q" en la komandlinio post redaktado getty kaj vi devus vidi ensalutan prompton.

Agetty & # 39; s aŭtomata detektado de paritatproblemoj

La agrabla programo provos aŭtomate detekti la paritatan aranĝon ene de la fina stacio (inkluzive sen paridad). Ĝi ne subtenas 8 bitojn de datumoj bytes plus pli ol 1-biton. Vidu 8-bit-datumojn (plus parity). Se vi uzas stilon por agordi paridad, agetty aŭtomate malŝaltos ĝin pro tio ke ĝi komence volas ke la popola bito venu tra kvazaŭ ĝi estis datumito . Ĉi tio estas ĉar ĝi bezonas akiri la lastan biton (eble parity) kiel vi tajpas vian ensalutnomon por ke ĝi povas aŭtomate detekti paritaton. Do se vi uzas paridad, ebligu ĝin nur ene de la tekstfinalo kaj lasu ĝin aŭtomate detekti ĝin kaj starigi ĝin ĉe la komputilo. Se via fina stacio subtenas paritaton, la ensalutprogramo aspektos ĝenita ĝis vi tajpas ion por ke getty povas detekti ĝin

paridad. La ĝentila provo malhelpi vizitantojn, ktp, provante ensaluti. Tio povus esti nur kion vi deziras.

Kelkfoje estas problemo pri aŭtomata detektado de paritato. Ĉi tio okazas, ĉar post kiam vi unue ensalutas vian ensalutan nomon, agetty komencos la ensalutan programon por fini ensaluti vin. Bedaŭrinde, la ensalutprogramo ne povas detekti paritaton, do se la programo getty malsukcesis determini la paridad, tiam la ensaluto ne povos determini ĉu. Se la unua ensaluto provas malsukcesi, ensaluto permesos al vi provi denove, ktp. (Ĉio kun la parity-aro malĝusta). Eventuale, post kelkaj malsukcesaj provoj ensaluti (aŭ post tempo de tempo) denove komencos kaj komencos la ensalutajn sekvencojn denove. Fojo getty funkcias denove, ĝi eble povas detekti la paridadon en la dua provo, do ĉio povas funkcii bone.

Kun malĝusta paritato, la ensalutprogramo ne rajtas legi tion, kion vi tajpas kaj vi ne povas ensaluti. Se via fina stacio subtenas paritaton, vi ankoraŭ vidos eksterordinaran ekranon. Se getty malsukcesas detekti paritaton / etc / issue-dosiero kutime estas malplenigita al la ekrano ĝuste antaŭ ol la pruvo, do pli ĝojaj vortoj aperos sur la ekrano.

Kial ne povas agrabi detekti paritaton per la unua litero tajpita? Jen ekzemplo: Supozu, ke ĝi detektas 8-bit-bajton per ĝia parity-bit 0 (alta ordo) kaj kun nepara numero de 1-bitoj. Kio paritato estas? Nu, la nepara numero de 1 bitoj implicas, ke ĝi estas stranga paritato. Sed ĝi ankaŭ povus esti nur 8-bita karaktero sen parideco. Ne ekzistas maniero ĝis nun por determini kiu. Sed ĝis nun ni forigis la eblon de eĉ paridad. La detektado de paritato tiel progresas per procezo de elimino.

Se la sekva byte tajpita estas simila al la unua kaj ankaŭ nur forigas la eblon de eĉ paridad, ĝi ankoraŭ neeblas determini paritaton. Ĉi tiu situacio povas daŭrigi nedifinite kaj en maloftaj kazoj ensaluto malsukcesos ĝis vi ŝanĝos vian ensalutnomon. Se agetty trovas iometecon de 1, ĝi supozos, ke ĉi tio estas parcito kaj ne alta ordo de karaktero de 8-bitoj. Ĝi supozas, ke vi ne uzas meta-karakterojn (alta bito) en via uzulnomo (tio estas, ke via nomo estas en ASCII).

Oni povas eniri "ensalutan buklon" de diversaj manieroj. Supozi, ke vi nur tajpas unu literon aŭ du por via ensalutnomo kaj poste batis revenon. Se ĉi tiuj leteroj ne sufiĉas por parolado, tiam ensalutado antaŭ ol parity estis detektita. Kelkfoje ĉi tiu problemo okazas, se vi ne havas la finaĵon kaj / aŭ konektita kiam la unua agado komenciĝas.

Se vi atingos ĉi tiun "ensalutan loopon", ekstere de ĝi estas frapi la rondan ŝlosilon plurajn fojojn ĝis vi ricevos la getty-ensalutan prompton. Alia maniero estas nur atendi minuton aŭ pli por tempo. Tiam la getty-ensalutprogramo estos metita sur la ekranon per la getty-programo kaj vi povas denove provi ensaluti.

8 bitoj de datumoj bytes (pli paridad)

Bedaŭrinde, senfortulo ne povas detekti ĉi tiun paridad. Fine de 1999, ĝi ne havas eblon malhelpi la aŭtomate detektadon de paridad kaj tiel detektos malĝustajn parojn. La rezulto estas, ke la ensalutprocezo estos zorgita kaj paritato estos malĝusta. Do ĝi ne ŝajnas farebla provi uzi 8 bitojn de datumoj bytes kun paridad.

getty (parto de getty_ps)

(Plejparto de tio estas de la malnova Serial-HOWTO de Greg Hankins)
Por ĉi tiu aranĝo oni bezonas ambaŭ enmeti en agordan dosieron kaj aldoni eniron en / etc / inittab . Jen kelkaj ekzemploj por uzi por via fina stacio, kiun vi enmetis en la agorda dosiero / ktp / gettydefs .

# 38400 bps Dumb Terminal eniro DT38400 # B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL # @ S @L ensaluto: # DT38400 # 19200 bps Dumb Terminal eniro DT19200 # B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL # @ S @L ensaluto: # DT19200 # 9600 bps Muta enirejo DT9600 # B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL # @ S @L ensaluto: # DT9600

Notu, ke la DT38400, DT19200, ktp estas nur etiketoj kaj devas esti la samaj, kiujn vi uzas en / etc / inittab .

Se vi volas, vi povas fari getty presi interesajn aferojn en la ensalut-standardo. En miaj ekzemploj, mi havas la sistemon-nomon kaj la seria linio presitan. Vi povas aldoni aliajn aferojn: [blockquote

ombro = jes] @B La nuna (taksita ĉe la tempo, kiam la @B estas vidata) bps-indico. @D La nuna dato, en MM / DD / YY. @L La seria linio al kiu getty estas alfiksita. @S La nomo de la sistemo. @T La nuna tempo, en HH: MM: SS (24 horoj). @U La nombro de nun subskribitaj uzantoj. Ĉi tio estas kalkulo de la nombro da eniroj en la / etc / utmp-dosiero, kiu havas ne-nulajn ut_nomonon. @V La valoro de VERSIO, kiel estas donita en la defaŭlta dosiero. Por montri solan '@' karakteron, uzu ĉu '\ @' aŭ '@@'.

Kiam vi redaktas / ktp / gettydefs , vi povas kontroli, ke la sintakso estas ĝusta per faranta:

linux # getty -c / ktp / gettydefs

Certiĝu, ke ne ekzistas alia dosiero de agordo aŭ uugetty por la seria haveno kun kiu via fina stacio estas ligita (kiel /etc/default/{uu}getty.ttyS N/etc/conf.{uu}getty.ttyS N ) , ĉar ĉi tio verŝajne malhelpos kuracadon sur terminalo. Forigi tiajn konfliktajn dosierojn se ili eliras.

Redaktu vian / etc / inittab- dosieron por kuri getty en la seria haveno (anstataŭigante en la ĝusta informo por via medio - haveno, rapido kaj defaŭlta fina stacio):

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

Je ĉi tiu punkto, vi devus vidi ensalutan prompton en via fina stacio. Vi eble devas renkonti la atenton de la fina stacio.

milda

La "m" staras por modemo. Ĉi tiu programo estas ĉefe por modemoj kaj de meze de 2000 ĝi postulas rekompencon uzi ĝin por tekst-fina stacioj (krom se vi uzas aparatan fluon-kontrolon - kaj kiu kutime postulas manfaritan kablon). Por la dokumentado por rekte konektitaj fina stacioj vidu la sekcion "Rekta" de la manlibro: mgetty.texi.

Rigardu la lastajn liniojn de /etc/mgetty/mgetty.config por ekzemplo de agordi ĝin por fina stacio. Krom se vi diras "toggle-dtr no" ĝi pensos, ke vi havas modemon kaj guton (malkonfirmas) la DTR-pin ĉe la PC en vana provo restarigi la ne-ekzistantan modemon. Kontraste kun aliaj akvoj, mgetty ne aliĝos al fina stacio ĝis iu trafos iun ajn ŝlosilon de tiu fina stacio do vi vidos? por la fina stacio en suprops ĝis tio okazas. La registroj en / var / log / mgetty / povas montri kelkajn avertajn mesaĝojn, kiuj nur aplikiĝas al modemoj, kiujn vi povas ignori.

Jen ekzemplo de la simpla linio, kiun vi enmetis / etc / inittab:

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