14.1 Getty (käytetty / etc / inittab)
Johdatus Getty
Jotta sisäänkirjautumisprosessi ajettaisiin sarjaportin (ja siihen liitetyn päätteen) kanssa, kun tietokone käynnistyy (tai vaihtaa suoritustasoja), getty-komento on sijoitettava / etc / inittab -tiedostoon. Gettyin suorittaminen komentoriviltä saattaa aiheuttaa ongelmia (katso Jos getty suoritetaan komentoriviltä: Ohjelmat pysähtyvät nähdäksesi miksi). Getty GETs TTY (terminaali) menossa. Jokainen päätelaite tarvitsee oman getty-komennonsa. Jokaisessa / etc / inittab-tiedostossa on myös vähintään yksi getty komento konsolille. Etsi tämä ja laita getty-komennot oikeiden päätteiden vieressä. Tämä tiedosto voi sisältää esimerkkejä getty-riveistä tekstipäätteille, joita kommentoidaan, joten sinun tarvitsee vain poistaa kommentit (poista johtava #) ja muuta muutamia argumentteja.
Sallitut argumentit riippuvat siitä, mihin Getty-versioon haluat käyttää:Kaksi päästä parhaiten suoraan kytkettyihin päätteisiin ovat: Kaksi gettys parasta dial-in modeemien (välttää suoraan kytkettyjä terminaaleja) ovat: Helppo käyttää, jos et käytä todellista tekstipäätettä. Useimmat Linux-käyttäjät käyttävät jotain seuraavista: Linux-jakelu voi olla joko ps_getty tai agetty tekstipäätelaitteille. Jotkut jakelut eivät tarjoa mitään. Valitettavasti he usein vain kutsuvat sitä "getty", joten sinun on ehkä selvitettävä, mistä sinulla on, koska sen jälkeen antamasi argumentit / etc / inittab eroavat toisistaan. Debian käyttää agettyia (util-linux-pakettiin). RedHat ja Fedora käyttivät ps_getty-palvelua, joka on osoitteessa: ps_getty Viimeisenä keinona selvittää mikä getty sinulla on, voit tarkistaa sen suoritettavan koodin (yleensä / sbin). ps_getty on / etc / gettydefs upotettu tähän koodiin. Voit etsiä sen valitsemalla / sbin ja kirjoittamalla:strings getty | grep getty Jos getty on tosiasiassa edellä, se ei johda mitään. Kuitenkin, jos sinulla on agetty kirjoittaminen:getty-hpitäisi näyttää vaihtoehdot -hiLmw. Jos sinulla ei ole getty-tiedostoa, haluat tarkistaa muut jakelut ja ulkomaalainen ohjelma muuntaa RPM- ja Debian-paketit. Lähdekoodi voidaan ladata Getty-ohjelmistosta. Jos et käytä modeemin ohjauslinjoja (esimerkiksi jos käytät vain vähimmäismäärää 3 johtimella: lähetys, vastaanotto ja yhteinen signaalin maadoitus), sinun pitäisi antaa getty tietää tämä käyttämällä "paikallista" lippua. Tämän muoto riippuu siitä, mitä getty käytät. Kun kirjaudut sisään, huomaat (käyttämällä "top", "ps -ax" tai "ptree"), että getty-prosessi ei enää käynnisty. Mitä sille tapahtui? Miksi getty käynnistyy uudelleen, jos kuori tapetaan? Tässä miksi. Kun olet kirjoittanut käyttäjänimesi, getty ottaa sen ja kehottaa kirjautumisohjelmaa kertomaan sen käyttäjänimesi. Getty-prosessi korvataan kirjautumisprosessilla. Sisäänkirjautumisprosessi pyytää salasanasi, tarkistaa sen ja käynnistää minkä tahansa prosessin määritellään salasanatiedostossa. Tämä prosessi on usein bash-kuori. Jos näin on, bash käynnistää ja korvaa kirjautumisprosessin. Huomaa, että yksi prosessi korvaa toisen ja että bash-kuori prosessi alun perin aloitettiin getty-prosessina. Seuraavassa selostetaan tämän seurauksia. Nyt / etc / inittab-tiedostossa getty on tarkoitus palata uudelleen (uudelleen), jos se tapetaan. Se sanoo niin linjalla, joka kutsuu getty. Mutta jos bash shell (tai kirjautumisprosessi) tapetaan, getty respawns (uudelleen). Miksi? Sekä kirjautumisprosessi että bash ovat korvauksia gettille ja perivät * Tekstipäätteen käyttöohjeet signaaliliitännät, jotka niiden edeltäjät ovat määrittäneet. Itse asiassa, jos noudatat yksityiskohtia, huomaat, että korvausprosessilla on sama prosessin tunnus kuin alkuperäinen prosessi. Siten bash on eräänlainen getty, joka peittää saman prosessin ID-numeron. Jos bash tapetaan, se on aivan kuten getty tapettiin (vaikka getty ei ole enää käynnissä). Tämä johtaa getty-jälleenmyyjään. Kun kirjaudut ulos, kaikki sarjaportin prosessit tapetaan mukaan lukien bash-kuori. Tämä voi myös tapahtua (jos se on käytössä), jos modeemiin kuuluu pudotus DCD-jännite, jos sarjaporttiin lähetetään hangup -signaali. Joko poistumisprosessi tai pudotus DCD: ssä johtaa Getty-jälleenmyyjään. Yksi voi pakottaa gettyin lunastamaan manuaalisesti bash (tai login) tappamalla k-näppäimen, jne. "Top" tai "kill" -komennolla. Sinun on todennäköisesti tapettava sen signaalin 9 avulla (jota ei voida sivuuttaa). Sinun pitäisi yleensä käyttää gettyä sisältä / Etc / inittab eikä komentoriviltä, tai jotkin päätelaitteessa käynnissä olevat ohjelmat voidaan odottamattomasti keskeyttää (pysäyttää). Tästä syystä (siirry seuraavaan osaan, jos se ei ole sinulle tärkeä). Jos käynnistät getty for say ttyS1: n toisen terminaalin komentoriville, eli tty1, sen tty1 on sen "ohjaava pääte", vaikka varsinainen päätelaite, jota se käyttää, on ttyS1. Niinpä sillä on väärä valvontapääte. Mutta jos se aloitetaan inittab-tiedoston sisällä, se tulee ttyS1: ksi hallintapäätteeksi (oikein). Vaikka ohjauspäätelaite on väärä, kirjautumistunnus ttyS1: ssä toimii hyvin (koska annat ttyS1: n argumenttina getty: lle). Tavallinen tulo ja lähtö on asetettu ttyS1: een, vaikka ohjausterminaali pysyy tty11: ssä. Muut ohjelmat, jotka suoritetaan ttyS1: ssä, voivat periä tämän tavallisen tulon / lähdön (joka on liitetty ttyS1: een) ja kaikki on kunnossa. Mutta jotkut ohjelmat saattavat tehdä virheen yritettäessä lukea niiden hallitsevasta päätteestä (tty1), joka on väärä. Nyt tty1 voi ajatella, että näitä ohjelmia ajetaan taustalla tty1, joten yritetään lukea tty1: stä (se olisi pitänyt olla ttyS1), jolloin se lopettaa prosessin, joka yritti lukea. (Taustoprosessia ei saa lukea sen ohjaavasta päätteestä.). Saatat nähdä viestin jotain: "1 + Pysäytetty"Tässä vaiheessa olet jumissa, koska et voi olla vuorovaikutuksessa prosessin kanssa, joka yrittää kommunikoida kanssasi väärällä päätteellä. Tietenkin paeta tästä päästäksesi toiseen terminaaliin ja lopettamaan prosessin jne. . Esimerkki rivillä / etc / inittab:
S1 on peräisin ttyS1: stä. 23 tarkoittaa, että getty suoritetaan ajettaessa tason 2 tai 3 sisään. Respawn tarkoittaa, että jos getty (tai prosessi, joka korvasi sen, kuten bash), tapetaan getty käynnistyy uudelleen (respawn) uudelleen. / sbin / getty on getty-komento. -L tarkoittaa Paikallista (ohittaa modeemin ohjaussignaalit). -h (ei näy esimerkissä) mahdollistaa laitteiston virtauksen hallinnan (sama kuin stty crtscts). 19200 on baudinopeus. ttyS1 tarkoittaa / dev / ttyS1 (COM2 MS-DOS: ssa). vt102 on terminaalin tyyppi ja tämä getty asettaa ympäristömuuttujan TERM tähän arvoon. Ei ole asetustiedostoja. Kirjoita "init q" komentorivillä muokkaamisen jälkeen getty ja sinun pitäisi nähdä kirjautumisen kehote. agetty ohjelma yrittää automaattisesti havaita päätelaitteen sisällä olevan pariteetin (ei pariteettia). Se ei tue 8-bittisiä datatavuja plus 1-bittinen pariteetti. Katso 8-bittiset datatavut (plus pariteetti). Jos käytät stty asettaa pariteetin, agetty automaattisesti poistaa sen käytöstä, koska se aluksi haluaa pariteettibittiä tulevan läpi ikään kuin se olisi databittiä. Tämä johtuu siitä, että sen täytyy saada viimeinen bitti (mahdollisesti pariteettibitti), kun kirjoitat kirjautumisnimeäsi, jotta se pystyy tunnistamaan automaattisesti pariteetin. Joten jos käytät pariteettia, ota se vain tekstipäätteen sisään ja anna agetty tunnista se automaattisesti ja aseta se tietokoneeseen. Jos päätelaite tukee vastaanotettua pariteettia, kirjautumispyyntö näyttää sekaisin, kunnes kirjoitat jotain, niin että getty voi havaita pariteetti. Vääristynyt kehotus estää kävijöitä jne. Yrittämättä kirjautua sisään. Se voisi olla juuri sitä mitä haluat. On joskus ongelma automaattisen havaitsemisen pariteetin kanssa. Tämä johtuu siitä, että olet ensin kirjoittanut kirjautumistunnuksesi, agetty käynnistää Kirjaudu sisään ohjelma lopettaa kirjautumisen sisään. Valitettavasti Kirjaudu sisään ohjelma ei voi havaita pariteetti joten jos Getty ohjelma ei onnistunut määrittämään pariteettia Kirjaudu sisään ei myöskään pysty määrittämään sitä. Jos ensimmäinen kirjautumisyritys epäonnistuu, Kirjaudu sisään voit yrittää uudelleen, jne. (kaikki pariteetti asettaa väärin). Lopulta useita epäonnistuneita kirjautumisyrityksiä (tai aikakatkaisun jälkeen) agetty käynnistyy uudelleen ja käynnistää kirjautumisjärjestykset uudelleen. Kun getty on taas käynnissä, se saattaa pystyä havaitsemaan pariteetin toisessa kokeessa, joten kaikki voi sitten toimia OK. Väärällä pariteetilla Kirjaudu sisään ohjelma ei voi lukea oikein kirjoittamasi ja et voi kirjautua sisään. Jos päätelaitteesi tukee vastaanotettua pariteettia, näyttöön tulee edelleen sekava näyttö. Jos getty ei havaitse pariteettia, / etc / issue -tiedosto syötetään yleensä juuri ennen ennen kehotetta, joten ruudulle voi tulla enemmän sekaisin sanoja. Miksi et voi havaita pariteettia ensimmäisellä kirjaimella kirjoitettuna? Seuraavassa on esimerkki: Oletetaan, että se havaitsee 8-bittisen tavun, jonka pariteettibitti 0 (suuren luokan bitti) ja pariton määrä 1-bittiä. Mikä pariteetti on se? No, pariton määrä 1 bittiä merkitsee, että se on outoa pariteettia. Mutta se voi olla myös vain 8-bittinen merkki ilman pariteettia. Tällä hetkellä ei ole mitenkään mahdollista päättää, mikä. Mutta toistaiseksi olemme poistaneet mahdollisuuden tasavertaisuuteen. Pariteetin ilmaisu etenee näin ollen eliminointimenetelmällä. Jos seuraava tavu kirjoitettu on samanlainen kuin ensimmäinen ja myös poistaa vain pariteetin mahdollisuuden, on vielä mahdotonta määrittää pariteettia. Tämä tilanne voi jatkua loputtomiin ja harvinaisissa tapauksissa kirjautuminen epäonnistuu, kunnes vaihdat kirjautumistunnuksesi. Jos agetty löytää paritebittiä 1, se olettaa, että tämä on pariteettibitti eikä 8-bittisen merkin suuri määräbitti. Siksi oletetaan, että et käytä meta-merkkejä (high bit set) käyttäjänimessäsi (eli että nimesi on ASCII-muodossa). Yksi voi päästä "kirjautumispiiriin" eri tavoin. Oletetaan, että kirjoitat vain yhden kirjaimen tai kaksi kirjautumistunnistasi ja napsautat sitten paluuta. Jos nämä kirjaimet eivät riitä pariteetin havaitsemiseen, kirjautumiset suoritetaan ennen kuin pariteetti on havaittu. Joskus tämä ongelma ilmenee, jos päätelaite ei ole päällä ja / tai kytketty, kun agetty käynnistyy ensimmäisen kerran. Jos pysähdytte tähän "sisäänkirjautumispiiriin", se ulospääsy on paluupainiketta useita kertoja, kunnes saat getty-kirjautumisviestin. Toinen tapa on vain odottaa minuutti tai aikaa aikakatkaisua varten. Tällöin getty-ohjelma käynnistyy getty-ohjelmalla ja voit yrittää uudelleen kirjautua sisään. Valitettavasti agetty ei pysty tunnistamaan tätä pariteettia.Vuoden 1999 lopulla sillä ei ole mahdollisuutta poistaa pariteetin automaattinen tunnistus ja siten havaita virheellinen pariteetti. Tuloksena on, että kirjautumisprosessi sekoittuu ja pariteetti asetetaan väärin. Näin ollen ei näytä olevan mahdollista yrittää käyttää 8-bittisiä datatavuja pariteetilla. (Suurin osa tästä on Greg Hankinsin vanhasta sarjakuvauksesta)Tämän getty: n täytyy syöttää tietueet kokoonpanotiedostoon ja lisätä merkinnän sisään / Etc / inittab. Seuraavassa on joitain esimerkkejä käyttötarkoituksistasi, jota asetit asetustiedostoon / Etc / gettydefs.
Huomaa, että DT38400, DT19200 jne. Ovat vain tarroja ja niiden on oltava samat, joita käytät / Etc / inittab. Jos haluat, voit tehdä Getty tulosta mielenkiintoisia asioita kirjautumissanelissa. Esimerkkeisseni on järjestelmän nimi ja sarjaportti tulostettu. Voit lisätä muita asioita: blockquote sävy = yes
Kun olet valmis muokkaamalla / Etc / gettydefs, voit varmistaa, että syntaksi on oikea tekemällä:
Varmista, että ei ole muuta Getty tai uugetty konfigurointitiedoston sarjaporttiin, johon päätelaitteesi liitetään, kuten (/etc/default/{uu}getty.ttySN tai /etc/conf.{uu}getty.ttySN), koska se todennäköisesti häiritsee käynnistystä Getty päätelaitteessa. Poista tällaiset ristiriitaiset tiedostot, jos ne poistuvat. Muokkaa / Etc / inittab tiedosto käynnissä Getty (korvaamalla oikeat tiedot ympäristölle - portti, nopeus ja oletusterminaalin tyyppi):
Tässä vaiheessa sinun pitäisi nähdä pääkäyttäjän sisäänkirjautumiskysymys. Sinun on ehkä lyödä paluuta saadaksesi päätelaitteen huomion. "M" tarkoittaa modeemia. Tämä ohjelma on ensisijaisesti modeemeja ja vuoden 2000 puolivälistä alkaen se tarvitsee kääntämistä käyttämään sitä tekstipäätteille (ellet käytä laitteiston virtauksen säätöä - ja se vaatii yleensä käsityönä olevan kaapelin). Suoraan liitettyjen päätelaitteiden dokumentaatio on käyttöohjeen "Suora" -osassa: mgetty.texi. Katso viimeiset rivit /etc/mgetty/mgetty.config esimerkkinä sen konfiguroimisesta päätelaitteelle. Ellei sanota "toggle-dtr no", se ajattelee, että sinulla on modeemi ja pudota (kieltäydytään) DTR-tappio tietokoneella turhaan yrittääksesi nollata olemattoman modeemin. Toisin kuin muut gettys, mgetty ei liity terminaaliin, ennen kuin joku lyö minkä tahansa terminaalin avaimen, joten näet sen? terminaalille ylin tai ps kunnes tämä tapahtuu. Lokit sisään / Var / log / mgetty / saattaa näkyä muutamia varoitusviestejä, jotka koskevat vain modeemeja, joita voit jättää huomiotta. Tässä on esimerkki yksinkertaisesta linjasta, johon syötit / Etc / inittab:
Getty poistuu sisäänkirjautumisen jälkeen (ja voi jälleenmyydä)
Jos getty suoritetaan komentoriviltä: Ohjelmat pysähtyvät
agetty (voi olla nimeltään getty)
S1: 23: respawn: / sbin / getty-L 19200 ttyS1 vt102 Agettyin automaattinen havaitseminen pariteettiongelmilla
8-bittiset datatavut (plus pariteetti)
getty (osa getty_ps)
mgetty




