14.1 Getty (koristi se u / etc / inittab)
Uvod u Getty
Kako bi se pokrenuo postupak prijavljivanja na serijskom priključku (i terminalu koji je povezan s njim) kada se računalo pokrene (ili prebacuje razine izvođenja), u / etc / inittab datoteku mora biti stavljena naredba getty. Pokretanje gettya iz naredbenog retka može uzrokovati probleme (pogledajte Ukoliko se getty izvodi iz naredbenog retka: Programi se zaustavljaju da biste vidjeli zašto). Getty dobiva TTY (terminal) koji ide. Svaki terminal treba svoju vlastitu getty naredbu. Tu je i najmanje jedna getty naredba za konzolu u svakoj / etc / inittab datoteci. Pronađite ovo i stavite getty naredbe za prave terminale pokraj njega. Ova datoteka može sadržavati uzorke getty linija za tekstne terminale koji su komentirani tako da sve što trebate učiniti jest da ih poništite (uklonite vodeći #) i promijenite nekoliko argumenata.
Dopušteni argumenti ovise o tome koji getty koji upotrebljavate:Dva gettys najbolja za izravno priključene stezaljke su: Dva gettys najbolja za dial-in modeme (izbjegavajte izravno priključene terminale) su: Jednostavne gettys za korištenje ako ne koristite pravi tekst-terminal. Većina Linux korisnika koristi jedan od njih na svom monitoru: Vaša Linux distribucija može doći s bilo ps_getty ili agetty za tekstualne terminale. Neke distribucije ne opskrbljuju niti jedan. Nažalost, često ga samo nazivaju "getty" pa ćete možda trebati utvrditi koji ste od njih jer se argumenti koje ste postavili nakon njega razlikuju u / etc / inittab. Debian koristi agetty (u util-linux paketu). RedHat i Fedora koristili su ps_getty koji je na: ps_getty Kao posljednje sredstvo pokušaja da odredite koji ste getty, možete provjeriti njegov izvršni kod (obično u / sbin). ps_getty ima / etc / gettydefs ugrađen u ovaj kod. Da biste ga potražili, idite na / sbin i upišite:žice getty | grep getty Ako je getty stvarno agetty gore, to će rezultirati ništa. Međutim, ako imate tipkati tipkanje:getty-htrebali bi prikazati opcije -hiLmw. Ako nemate getty koji želite provjeriti druge distribucije i stranac program pretvoriti između RPM i Debian paketa. Izvorni kod može se preuzeti s Getty Software-a. Ako ne koristite modemske upravljačke vodove (na primjer, ako koristite samo minimalni broj 3 vodiča: odašiljanje, primanje i zajednički signal), trebali biste to znati pomoću "lokalne" zastavice. Format ovisi o tome koji getty koristite. Nakon što se prijavite, primijetit ćete (koristeći "top", "ps -ax" ili "ptree") da se proces getty više ne pokreće. Što se s njom dogodilo? Zašto se getty ponovno pokreće ako je vaše ljuske ubijeno? Evo zašto. Nakon što unesete svoje korisničko ime, getty ga preuzima i poziva program za prijavu koji mu govori o korisničkom imenu. Postupak getty zamjenjuje se procesom prijave. Postupak prijave traži lozinku, provjerava ga i pokreće postupak koji je specificiran u datoteci lozinke. Ovaj proces je često bash shell. Ako je tako, bash započinje i zamjenjuje postupak prijave. Imajte na umu da jedan postupak zamjenjuje drugi i da je postupak bash procesa izvorno započeo kao proces Getty. Posljedice toga će biti objašnjene u nastavku. Sada u / etc / inittab datoteku, getty bi trebao respawn (restart) ako je ubijen. To kaže tako na liniji koja zove Getty. No, ako se bash shell (ili proces prijave) ubije, getty respawns (restarts). Zašto? Pa, proces prijave i bash su zamjene za getty i nasljeđuju * Tekstualni terminalski indeks veze signala koje su uspostavili njihovi prethodnici. U stvari, ako promatrate detalje primijetit ćete da će zamjenski proces imati isti ID procesa kao i originalni proces. Tako bash je vrsta getty u prerušavanju s istim ID procesa broj. Ako je bash ubijen, baš kao što je Getty ubijen (iako Getty više ne radi). To rezultira getty respawning. Kada se netko odjavi, svi procesi na tom serijskom portu se ubiju, uključujući i bash shell. To se također može dogoditi (ako je omogućeno) ako se sabirni signal šalje na serijski ulaz za kap DCD napona modema. Ili odjava ili pad u DCD rezultirat će getty respawning. Jedan se može prisiliti da se getty ponovno vrati ručnim ubijanjem bash (ili login-a) bilo udaranjem tipke k, itd. Dok je "top" ili "kill" naredba. Vjerojatno ćete ga morati ubiti pomoću signala 9 (koji se ne može zanemariti). Trebali bi normalno pokrenuti getty iznutra / Etc / inittab a ne iz naredbenog retka ili neki programi koji se izvode na terminalu mogu se neočekivano obustaviti (zaustaviti). Evo zašto (preskočite na sljedeći odjeljak ako je zašto vam nije važno). Ako pokrenete getty za reći ttyS1 iz naredbenog retka drugog terminala, recimo tty1, tada će imati tty1 kao "kontrolni terminal", iako je stvarni terminal koji radi na ttyS1. Stoga ima pogrešan kontrolni terminal. Ali ako se pokrene unutar inittab datoteke onda će imati ttyS1 kao kontrolni terminal (ispravno). Iako kontrolni terminal nije u redu, prijava na ttyS1 funkcionira dobro (jer ste dali ttyS1 kao argument za getty). Standardni ulaz i izlaz postavljeni su na ttyS1 iako kontrolni terminal ostaje tty11. Ostali programi pokrenuti u ttyS1 mogu naslijediti ovaj standardni ulaz / izlaz (koji je povezan s ttyS1) i sve je u redu. No, neki programi mogu napraviti pogrešku pokušaja čitanja s kontrolnog terminala (tty1) koji nije u redu. Sada tty1 može misliti da se ti programi pokreću u pozadini tty1 tako da pokušaj čitanja s tty1 (to bi trebao biti ttyS1) rezultirao zaustavljanjem procesa koji je pokušao čitati. (Proces pozadine nije dopušten za čitanje sa svog kontrolnog terminala.). Možda ćete vidjeti poruku poput: "1 + Zaustavljeno"Na zaslonu, u ovom trenutku ste zaglavi jer ne možete komunicirati s procesom koji pokušava komunicirati s vama preko pogrešnog terminala. Naravno, da bježite od toga, možete ići na drugi terminal i ubiti proces, itd. , Primjer linija u / etc / inittab:
S1 je od ttyS1. 23 znači da se getty izvodi nakon ulaska u razinu 2 ili 3. Respawn znači da ako se getty (ili proces koji ju zamijeni, npr. Bash) ubije, getty će se automatski automatski pokrenuti (respawn). / sbin / getty je naredba getty. -L znači Lokalni (ignorirajte modemske kontrolne signale). -h (nije prikazano u primjeru) omogućava kontrolu protoka hardvera (isto kao i stty crtscts). 19200 je brzina prijenosa podataka. ttyS1 znači / dev / ttyS1 (COM2 u MS-DOS-u). vt102 je vrsta terminala i ovaj getty će postaviti varijablu okruženja TERM na ovu vrijednost. Nema konfiguracijskih datoteka. Upišite "init q" na naredbenom retku nakon uređivanja getty i trebali biste vidjeti prompt za prijavu. agetty program će pokušati automatski detektirati paritet postavljen unutar terminala (uključujući neparitet). Ne podržava 8-bitne podatkovne bajtove plus 1-bitni paritet. Pogledajte 8-bitne podatkovne bajtove (plus paritet). Ako koristite stty za postavljanje pariteta, agetty automatski će ga poništiti jer u početku želi da se paritet pojavi kao da je bit podataka. To je zato što treba zadati zadnji bit (moguće paritetni bit) dok upisujete svoje ime za prijavu tako da automatski detektira paritet. Dakle, ako koristite paritet, omogućite je samo unutar tekstualnog terminala i pustite ga agetty automatski je otkriti i postaviti ga na računalo. Ako vaš terminal podržava primljeni paritet, upit za prijavu će izgledati pomiješano dok ne upišete nešto tako da getty može otkriti paritet. Poremećeni redak će odvratiti posjetitelje itd. Od pokušaja prijave. To bi moglo biti upravo ono što želite. Ponekad postoji problem s automatskim otkrivanjem pariteta. To se događa jer nakon što prvi unesete svoje ime za prijavu, agetty započinje prijaviti se program za dovršetak prijavljivanja. Nažalost, prijaviti se program ne može otkriti paritet pa ako Getty program nije uspio odrediti paritet tada prijaviti se neće moći ni odrediti. Ako prvi pokušaj prijave ne uspije, prijaviti se pustit će vas ponovno, itd. (sve s paritetom postavljenim pogrešnim). Na kraju, nakon neuspjelih pokušaja prijave (ili nakon isteka vremena) agetty ponovno će se pokrenuti i ponovno započeti sekvence prijava. Nakon što se getty ponovo aktivira, možda će biti u stanju otkriti paritet na drugom pokušaju, tako da sve može potom funkcionirati. S pogrešnim paritetom prijaviti se program ne može ispravno čitati ono što upisujete i ne možete se prijaviti. Ako vaš terminal podržava primljeni paritet, nastavit će se prikazati pomiješani zaslon. Ako getty ne otkrije paritet, datoteka / etc / issue obično se baca na zaslon neposredno prije prije brzog, tako da se na zaslonu mogu pojaviti još nejasnijih riječi. Zašto ne može otkriti paritet prvo slovo upisano? Evo primjera: Pretpostavimo da on detektira 8-bitni bajt s paritetnim bitom 0 (bit visokog reda) i s neparnim brojem 1-bitova. Kakav je to paritet? Pa, neparan broj od 1 bita znači da je neparna paritet. Ali to također može biti samo 8-bitni lik bez pariteta. Do sada nije moguće utvrditi koji. Ali do sada smo uklonili mogućnost čak i pariteta. Otkrivanje pariteta stupa na taj način procesom eliminacije. Ako je sljedeći bajt upisan sličan prvom i samo uklanja mogućnost čak i pariteta, još uvijek je nemoguće odrediti paritet. Ta se situacija može trajati neograničeno, au rijetkim slučajevima prijava neće uspjeti sve dok ne promijenite ime za prijavu. Ako agetty pronađe paritetni bit od 1, pretpostavit će da je to paritetni bit, a ne bit velikog reda 8-bitnog znaka. Stoga pretpostavlja da u svom korisničkom imenu ne upotrebljavate meta-znakove (bitni bit set) (tj. Da se vaše ime nalazi u ASCII formatu). Netko može ući u "pristupnu petlju" na različite načine. Pretpostavimo da samo unosite samo jedno slovo ili dva za svoje ime za prijavu, a zatim pritisnite povratak. Ako ova slova nisu dovoljna za otkrivanje pariteta, tada se prijava počinje prije nego što je otkriven paritet. Ponekad se taj problem dogodi ako terminator ne bude povezan i / ili je povezan kada se agetty prvi put pokreće. Ako se zaglavite u ovoj "petlji za prijavu" izlaz iz njega je da pritisnete tipku za povratak nekoliko puta dok ne dobijete prompt za prijavu getty. Drugi način je samo pričekati minutu ili više na vrijeme. Zatim će getty program za prijavu biti stavljen na zaslon getty programa i pokušat ćete se ponovno prijaviti. Nažalost, agetty ne može otkriti ovaj paritet.Od kraja 1999. godine nema opciju za onemogućavanje automatske detekcije pariteta i time će otkriti netočan paritet. Rezultat je taj da će proces prijave biti pomiješan i paritet će biti pogrešan. Stoga ne izgleda moguće pokušati koristiti 8-bitne podatkovne bajtove s paritetom. (Većina je to od starog serijskog-kalkuliranja Greg Hankins)Za ovaj getty potrebno je staviti unose u konfiguracijsku datoteku i dodati unos / Etc / inittab, Evo nekoliko primjera unosa koje biste trebali koristiti za vaš terminal koji ste stavili u konfiguracijsku datoteku / etc / gettydefs.
Imajte na umu da su DT38400, DT19200 i sl. Samo oznake i moraju biti iste one u kojima upotrebljavate / Etc / inittab. Ako želite, možete napraviti Getty ispisati zanimljive stvari u banneru za prijavu. U mojim primjerima imam ime sustava i serijska crta. Možete dodati i druge stvari: blockquote nijansa = yes
Kada završite s uređivanjem / etc / gettydefs, možete provjeriti je li ispravna sintaksa:
Pobrinite se da nema drugih Getty ili uugetty konfiguracijsku datoteku za serijski port koji je priključen na vaš terminal kao što je (/etc/default/{uu}getty.ttySN ili /etc/conf.{uu}getty.ttySN), jer će to vjerojatno utjecati na trčanje Getty na terminalu. Uklonite takve datoteke u sukobu ako izađu. Uredite svoj / Etc / inittab pokrenuti datoteku Getty na serijskom priključku (zamjenjujući točne informacije za vašu okolinu - priključak, brzinu i zadanu vrstu terminala):
U ovom trenutku trebao bi se pojaviti upit za prijavu na vašem terminalu. Možda ćete morati pogoditi povratak kako biste dobili pozornost terminala. "M" označava modem. Ovaj program je prvenstveno za modeme, a od sredine 2000. godine potrebno je recompiliranje da se koristi za tekstualne terminale (osim ako ne koristite kontrolu protoka hardvera - a to obično zahtijeva ručno izrađeni kabel). Za dokumentaciju za izravno priključene stezaljke pogledajte odjeljak "Direktni" priručnika: mgetty.texi. Pogledaj posljednje retke /etc/mgetty/mgetty.config za primjer konfiguriranja za terminal. Ako ne kažete "toggle-dtr no", mislit ćete da imate modem i ispustite (negirajte) DTR pin na računalu u uzaludnom pokušaju resetiranja nepostojećeg modema. Za razliku od ostalih gettys, mgetty neće se priključiti na terminal dok netko ne udari bilo koji ključ tog terminala tako da ćete vidjeti a? za terminal u Zagrebu vrh ili p.s dok se to ne dogodi. Prijavljuje se / Var / log / mgetty / može prikazati nekoliko poruka upozorenja koje se primjenjuju samo na modeme koje možete zanemariti. Evo primjera jednostavne linije koju ste unijeli / Etc / inittab:
Getty izlazi nakon prijave (i može se ponovno pojaviti)
Ako se getty izvodi iz naredbenog retka: programi se zaustavljaju
agetty (može se nazvati getty)
S1: 23: respawn: / sbin / getty-L 19200 ttyS1 vt102
Agettyova automatska detekcija problema s paritetom
8-bitni podatkovni bajt (plus paritet)
getty (dio getty_ps)
mgetty