14.1 Getty (naudojamas / etc / inittab)
Įvadas į "Getty"
Kad prisijungimo procesas prasidėtų serijinio prievado (ir prie jo prijungto terminalo), kai kompiuteris paleidžiamas (arba perjungia paleidimo lygius), failas / etc / inittab turi būti įvestas getty komanda. Gedito paleidimas iš komandinės eilutės gali sukelti problemų (žiūrėkite, jei Getty paleisti iš komandinės eilutės: programos nustoja pamatyti kodėl). Getty gauna TTY (terminalą). Kiekvienam terminalui reikia savo "Getty" komandos. Kiekvienoje / etc / inittab failo konsolėje yra bent viena komanda getty. Suraskite tai ir įdiekite "getty" komandas šalia jo esančių realių terminalų. Šiame faile gali būti parodytos "getty" linijos tekstiniams terminalams, kurie yra komentuojami, todėl viską, ką turite padaryti, tai pakartotinai juos komentuoti (pašalinti pagrindinius #) ir keisti keletą argumentų.
Leistini argumentai priklauso nuo to, kurį naudojate.Du geriausi tiesiogiai prijungti terminalai: Du įvesties modemams tinkami gavimo būdai (vengiama tiesiogiai prijungtų gnybtų) yra: Paprasti gettys naudoti, jei nenaudojate realaus teksto terminalo. Daugelis Linux naudotojų naudoja vieną iš jų savo monitoriuje: Jūsų "Linux" paskirstymas gali būti su "ps_getty" arba "agetty" tekstiniams terminalams. Kai kurie paskirstytojai tiekia ne. Deja, jie dažnai vadina jį "getty", todėl jums gali prireikti nustatyti, kuris iš jų yra, nes argumentai, kuriuos pateikėte po jo / etc / inittab, skiriasi. Debian naudoja agetty (paketo util-linux). RedHat ir Fedora naudojo ps_getty, kuris yra: ps_getty Kaip paskutinė priemonė, norėdami nustatyti, kuri gatvė turite, galite patikrinti vykdomąjį kodą (paprastai į / sbin). ps_getty turi / etc / gettydefs, įterptų į šį kodą. Norėdami jį ieškoti, eikite į / sbin ir įveskite:stygos getty | grep getty Jei Getty yra iš tikrųjų agetty, pirmiau nieko neįvyks. Tačiau jei turite rašyti žodžius:Getty-hturėtų parodyti parinktis -hiLmw. Jei neturite Getty norėtumėte patikrinti kitus platinimus ir užsienietis programa konvertuoti tarp "RPM" ir "Debian" paketų. Šaltinio kodą galima atsisiųsti iš "Getty" programinės įrangos. Jei nenaudojate modemo valdymo linijų (pavyzdžiui, jei naudojate tik mažiausią trijų laidininkų skaičių: persiunčia, gaunate ir įprastą signalo įžeminimą), turėtumėte leisti "getty" tai žinoti naudodami "vietos" vėliavėlę. Formatas priklauso nuo to, kokį gatvį naudojate. Po to, kai prisijungsite, pastebėsite (naudodami "viršuje", "ps -ax" arba "ptree"), kad getty procesas nebeveikia. Kas nutiko? Kodėl Getty vėl paleidžiamas iš naujo, jei jūsų lukštas žuvo? Štai kodėl. Įvedę savo vartotojo vardą, Getty jį paima ir ragina prisijungimo programą, nurodydama savo vartotojo vardą. "Getty" procesas pakeičiamas prisijungimo procesu. Prisijungimo procesas reikalauja jūsų slaptažodžio, jį patikrina ir paleidžia bet kokį procesą, nurodytą jūsų slaptažodžio failo atmintyje. Šis procesas dažnai yra "bash shell". Jei taip, bash prasideda ir pakeičia prisijungimo procesą. Atkreipkite dėmesį, kad vienas procesas pakeičia kitą ir kad "bash shell" procesas iš pradžių buvo pradėtas kaip Getty procesas. Šios pasekmės bus paaiškintos toliau. Dabar / etc / inittab failą, jei bus nužudytas, "Getty" turi būti iš naujo paleistas (paleiskite). Tai sako taip linijoje, kuri skambina Getty. Bet jei nužudomas bash apvalkalas (arba prisijungimo procesas), getty respawns (paleidžiamas iš naujo). Kodėl? Na, tiek prisijungimo procesas, tiek bash yra "getty" ir "inherit" pakeitimai * Teksto terminalo instrukcijų indeksas signalų ryšius nustato jų pirmtakai. Iš tikrųjų, jei pastebėsite išsamią informaciją, pastebėsite, kad pakeitimo procesas turės tą patį proceso ID kaip ir pradinis procesas. Taigi bash yra kažkokia gatvė, užmaskuota tuo pačiu proceso ID numeriu. Jei bashas nužudytas, tai lyg tas pats, kaip Getty buvo nužudytas (nors Getty nebeveikia). Tai lemia "Getty respawning". Kai atsijungia, visi nuosekliojo prievado procesai yra nužudyti, įskaitant "bash shell". Tai taip pat gali atsitikti (jei įjungta), jei modulio prievadas yra siunčiamas į nuoseklųjį prievadą naudojant DCD įtampą. Arba išeinant iš DSC ar sumažėjus DCD rezultatas bus "Getty respawning". Galite priversti Getty į respawn rankiniu būdu nužudyti bash (arba prisijungti) arba paspaudus klavišą "k" ir tt, kai "viršuje" arba "nužudyti" komandą. Jums greičiausiai reikės jį nužudyti signalu 9 (kuris negali būti ignoruojamas). Paprastai paleiskite Getty iš vidaus / etc / inittab o ne iš komandinės eilutės, arba kai kurios programos, veikiančios terminale, gali būti netikėtai sustabdytos (sustabdytos). Štai kodėl (pereikite prie kito skirsnio, jei kodėl jums nėra svarbu). Jei paleisite Getty už pasakyti ttyS1 iš kito terminalo komandinės eilutės, pasakyk tty1, tada jis turės tty1 kaip "valdymo terminalą", net jei faktinis jis paleidžia ttyS1. Taigi jis turi neteisingą valdymo terminalą. Bet jei jis pradedamas inittab failo viduje, jis bus ttyS1 kaip valdymo terminalas (teisingas). Nors valdantis terminalas yra neteisingas, ttyS1 prisijungimas veikia gerai (nes tau buvo pateiktas ttyS1 argumentas Getty). Standartinis įvestis ir išvestis nustatomi į ttyS1, nors valdymo terminalas išlieka tty11. Kitos programos, veikiančios ttyS1, gali paveldi šį standartinį įvestį / išvestį (kuris yra prijungtas prie ttyS1) ir viskas gerai. Tačiau kai kurios programos gali padaryti klaidą bandydamos skaityti iš savo valdymo terminalo (tty1), kuris yra klaidingas. Dabar tty1 gali pagalvoti, kad šios programos paleidžiamos fone naudojant tty1, todėl bandymas skaityti iš tty1 (tai turėjo būti ttyS1) baigia procesą, kuris bandė perskaityti. (Fono procesas negali būti skaitomas iš jo valdymo terminalo.). Galite matyti pranešimą: "1 + sustota"ekrane. Šiuo metu esate įstrigęs, nes negalite bendrauti su procesu, kuris bando su jumis susisiekti netinkamu terminalu. Žinoma, kad pabėgti nuo jo galite eiti į kitą terminalą ir nužudyti procesą ir tt . Pavyzdinė eilutė / etc / inittab:
S1 yra iš ttyS1. 23 reiškia, kad getty paleidžiamas paleidžiant 2 arba 3 lygį. Respawn reiškia, kad jei getty (arba procesas, kuris jį pakeitė, pvz., Bash) yra nužudytas, Getty vėl bus automatiškai paleistas (respawn). / sbin / getty yra getty komanda. "-L" reiškia "Local" (ignoruoti modemo valdymo signalus). -h (nerodomas pavyzdyje) leidžia valdyti aparatūros srautą (toks pats kaip ir stty crtscts). 19200 yra bodo greitis. ttyS1 reiškia / dev / ttyS1 (COM2 MS-DOS). vt102 yra terminalo tipas, ir šis getty nustatys aplinkos kintamąjį TERM į šią vertę. Nėra konfigūracijos failų. Įveskite "init q" komandinėje eilutėje po redagavimo Getty ir turėtumėte pamatyti prisijungimo raginimą. The agetty programa bandys automatiškai aptikti paritetą, nustatytą viduje terminalo (įskaitant be pariteto). Jis nepalaiko 8 bitų duomenų baitų ir 1 bitų pariteto. Žr. 8 bitų duomenų bitus (plius paritetas). Jei naudojate stty nustatyti paritetą agetty bus automatiškai išjungtas, nes iš pradžių ji nori, kad pariteto bitas būtų toks, lyg jis būtų duomenų bitas. Taip yra todėl, kad įvedate savo prisijungimo vardą, kad galėtumėte automatiškai nustatyti paritetą, kad gautumėte paskutinį bitą (galbūt pariteto bitą). Taigi, jei naudosite paritetą, įjunkite jį tik teksto terminalo viduje ir leiskite agetty ją automatiškai aptinka ir nustato jį kompiuteryje. Jei jūsų terminalas palaiko gautą paritetą, prisijungimo raginimas atrodys iškraipytas, kol įvesite kažką, kad Getty galėtų aptikti paritetas. Iškraipytas greitis atbaido lankytojus ir tt, bandant prisijungti. Tai gali būti tik tai, ko norite. Kartais yra problema dėl automatinio pariteto nustatymo. Taip nutinka, nes kai pirmą kartą įveskite prisijungimo vardą, agetty prasideda Prisijungti programa baigia prisijungti jus. Deja, Prisijungti programa negali nustatyti pariteto, taigi, jei Getty programa nepavyko nustatyti pariteto Prisijungti taip pat negalės to nustatyti. Jei pirmas prisijungimo bandymas nepavyksta, Prisijungti leis jums pabandyti dar kartą ir tt (viskas, kai paritetas nustatytas neteisingai). Galiausiai po tam tikrų nepavykusių bandymų prisijungti (arba po tam tikro laiko) agetty vėl pradės veikti ir vėl pradės prisijungimo sekas. Kai Getty vėl paleidžiamas, gali būti įmanoma aptikti paritetą antrojoje bandymo metu, kad viskas galėtų veikti gerai. Neteisingai lygus, Prisijungti programa negali teisingai perskaityti, ką rašote, ir negalite prisijungti. Jei jūsų terminalas palaiko gautą paritetą, jūs ir toliau matysite iškraipytą ekraną. Jei Getty nepavyksta nustatyti pariteto, failas / etc / issue paprastai nukreipiamas į ekraną prieš pat prieš eilutę, taigi ekrane gali atsirasti daugiau iškraipytų žodžių. Kodėl negalima tiksliai nustatyti pariteto pagal pirmąją įvestą raidę? Štai pavyzdys: tarkime, kad jis aptinka 8 bitų baitą su jo lygiaverte bitu 0 (aukšto eilės bitu) ir su nelygiu 1-bitų skaičiumi. Kokia yra paritetas? Na, nelyginis 1 bitų skaičius reiškia, kad tai nelyginis paritetas. Bet tai taip pat gali būti tik 8 bitų simbolis be pariteto. Nėra jokio pagrindo nustatyti, kuris. Tačiau iki šiol mes pašalinome net lygių galimybių galimybę. Taigi pariteto nustatymas atliekamas pašalinant. Jei kitas įvedamas bitas yra panašus į pirmąjį, ir tik pašalina net lygties galimybę, vis tiek negalima nustatyti pariteto. Ši situacija gali tęstis neribotą laiką, o retais atvejais prisijungimas nepavyks, kol nepakeisite savo prisijungimo vardo. Jei "agetty" nustato pariteto bitų 1, tai darys prielaidą, kad tai yra pariteto bitas, o ne 8 bitų simbolio aukšto lygio bitas. Todėl daroma prielaida, kad nenaudojate savo vartotojo vardo metaforų (didelio bitų rinkinio) (t. Y. Jūsų vardas yra ASCII). Galima įvažiuoti į "prisijungimo liniją" įvairiais būdais. Tarkime, kad įvedate tik vieną raidę arba du savo prisijungimo vardui ir paspauskite grįžti. Jei šių raidžių nepakanka lygybei aptikti, prisijungimas prasidės prieš nustatant paritetą. Kartais ši problema atsiranda, jei neturite terminalo ir (arba) nėra prijungtas, kai "agetty" pirmą kartą paleidžiamas. Jei įstrigo šiame "prisijungimo cikle", išeiti iš jo yra paspausti grąžinimo klavišą kelis kartus, kol gausite "Getty" prisijungimo raginimą. Kitas būdas yra tiesiog palaukti minutę tam tikrą laiką. Tada Getty prisijungimo eilutė bus įdiegta "Getty" programos ekrane, ir galėsite vėl bandyti prisijungti. Deja, "Agetty" negali nustatyti šio lygybės.1999 m. Pabaigoje negalima išjungti pariteto automatinio aptikimo ir taip nustatys neteisingą paritetą. Rezultatas - prisijungimo procesas bus iškraipytas ir paritetas bus nustatytas neteisingai. Taigi atrodo, kad neįmanoma bandyti naudoti 8 bitų duomenų baitų su paritetu. (Dauguma tai yra iš senojo Serial-HOWTO Greg Hankins)Šiam Getty reikia įdėti įrašus į konfigūracijos failą ir pridėti įrašą / etc / inittab. Čia yra keletas pavyzdžių, kuriuos naudojate savo terminalui, kurį įdėjote į konfigūracijos failą / etc / gettydefs.
Atkreipkite dėmesį, kad DT38400, DT19200 ir tt yra tik etiketės ir turi būti tos pačios, kokios naudojate / etc / inittab. Jei norite, galite padaryti Getty Spausdinti įdomių dalykų prisijungimo juostoje. Mano pavyzdžiuose turiu sistemos pavadinimą ir spausdintą serijinę liniją. Galite pridėti kitų dalykų: blockquote šešėlis = taip
Kai baigsite redaguoti / etc / gettydefs, galite patikrinti, ar sintaksė yra teisinga:
Įsitikinkite, kad nėra kito Getty arba Uugetty serijinio prievado konfigūracijos failas, kurio terminalas yra prijungtas prie (/etc/default/{uu}getty.ttySN arba /etc/conf.{uu}getty.ttySN), nes tai gali trukdyti veikti Getty ant terminalo. Pašalinkite tokius prieštaringus failus, jei jie išeina. Redaguokite savo / etc / inittab failą paleisti Getty nuosekliojo prievado (pakeisdamas teisingą informaciją apie jūsų aplinką - uosto, greičio ir numatytojo terminalo tipo):
Šiuo momentu terminalą turėtumėte pamatyti prisijungimo raginimą. Jums gali prireikti grįžti, norint gauti terminalo dėmesį. "M" reiškia modemą. Ši programa pirmiausia skirta modemams ir nuo 2000 m. Vidurio reikės iš naujo kompiliuoti ją naudoti tekstiniams terminalams (nebent jūs naudosite aparatūros srauto valdymą - ir paprastai reikia rankinio kabelio). Tiesiogiai prijungtų terminalų dokumentacijai rasite vadovą "Tiesioginis". mgetty.texi. Pažvelkite į paskutines eilutes /etc/mgetty/mgetty.config pavyzdžiui, konfigūravimas terminalo. Jei nebūsite sakęs "toggle-dtr no", jis manys, kad jūs turite modemą ir nulenkite DTR kontaktą į kompiuterį, veltui bandydami iš naujo nustatyti neegzistuojantį modemą. Priešingai nei kiti gettys, "mgetty" neprisijungs prie terminalo, kol kažkas pateks į bet kurį šio terminalo raktą, taigi pamatysite? terminalui viršuje arba Ps kol tai atsitiks. Įrašai / var / log / mgetty / gali parodyti kelis įspėjamuosius pranešimus, kurie taikomi tik modemams, kuriuos galite ignoruoti. Pateikiamas paprastos eilutės pavyzdys / etc / inittab:
Getty išeina po prisijungimo (ir gali atnaujinti)
Jei Getty paleisti iš komandinės eilutės: Programos bus sustabdytos
agetty (gali būti pavadintas getty)
S1: 23: respawn: / sbin / getty-L 19200 ttyS1 vt102
"Agetty" automatiškai nustato pariteto problemas
8 bitų duomenų baitai (plius paritetas)
Getty (getty_ps dalis)
Mgetty