Teksta termināli uz Linux

14.1 Getty (izmantots / etc / inittab)

Ievads Getty

Lai ieslēgšanās process darbotos uz seriālā porta (un ar to pieslēgtu termināli), kad dators ieslēdzas (vai pārslēdz darbības līmeni), failā / etc / inittab jāievada getty komanda. Raidīšana no komandrindas var radīt problēmas (sk. Ja Getty palaiž no komandrindas: Programmas tiek pārtrauktas, lai redzētu, kāpēc). Getty iegūst TTY (termināli), kas iet. Katram terminālam nepieciešama sava getty komanda. Katrā / etc / inittab failā konsolē ir arī vismaz viena getty komanda. Atrodiet to un ielieciet Getty komandas reālos terminālus blakus tam. Šajā failā var būt izlasītas getty līnijas teksta termināliem, kas tiek komentēti, tādēļ viss, kas jums jādara, ir atcelt komentārus (noņemt vadošo #) un mainīt dažus argumentus.

Pieļaujamie argumenti ir atkarīgi no tā, kuru jūs izmantojat:
Vislabāk tieši savienotiem termināļiem ir divi:

Divi gettys vislabāk iezvanpieeja modemiem (izvairieties no tieši savienotajiem termināļiem) ir:

Vienkārši gettys izmantot, ja jūs neizmantojat reālu teksta terminālu. Lielākā daļa Linux lietotāju izmanto vienu no šiem monitorā:

Jūsu Linux izplatīšana var būt ar ps_getty vai agetty teksta termināliem. Daži sadalījumi netiek piegādāti. Diemžēl viņi to bieži sauc par "getty", tāpēc jums var būt nepieciešams noteikt, kurš no tiem jums ir, jo argumenti, kurus jūs ievietojat pēc tam, kad / etc / inittab atšķiras. Debian izmanto agetty (util-linux paketē). RedHat un Fedora izmantoja ps_getty, kas ir: ps_getty

Kā pēdējais līdzeklis, lai mēģinātu noskaidrot, kurš jums ir, varat pārbaudīt tā izpildāmo kodu (parasti / sbin). ps_getty ir / etc / gettydefs iegults šajā kodā. Lai to meklētu, dodieties uz / sbin un ierakstiet:
stīgas getty | grep getty
Ja getty ir faktiski agetty, iepriekš nav nekas. Tomēr, ja jums ir agetty rakstīt:
getty-h
vajadzētu rādīt opcijas [-hiLmw].

Ja jums nav getty, kuru vēlaties, pārbaudiet citu sadali un svešzemju programmu, kas konvertē starp RPM un Debian pakotnes. Avota kodu var lejupielādēt no Getty Software.

Ja jūs neizmantojat modema vadības līnijas (piemēram, ja izmantojat tikai minimālo 3 vadītāju skaitu: pārsūtītu, saņemtu un kopēju signālu zemi), jums vajadzēja ļaut gettyam to zināt, izmantojot "vietējo" karodziņu. Šī formāts ir atkarīgs no tā, kuru jūs izmantojat.

Getty aiziet pēc pieteikšanās (un to var atjaunot)

Pēc pieteikšanās jūs pamanīsit (izmantojot "top", "ps -ax" vai "ptree"), ka getty process vairs nedarbojas. Kas ar to notika? Kāpēc Getty atsāk atkal, ja jūsu apvalks tiek nogalināts? Lūk, kāpēc.

Pēc tam, kad esat ievadījis savu lietotāja vārdu, Getty to aizņem un aicina pieteikšanās programmu, kurā norādīts jūsu lietotāja vārds. Getty process tiek aizstāts ar pieteikšanās procesu. Pieteikšanās process prasa jūsu paroli, pārbauda to un sāk jebkuru procesu, kas norādīts jūsu paroles failā. Šis process bieži ir bash apvalks. Ja tā, bash sāk un aizstāj pieteikšanās procesu. Ievērojiet, ka viens process aizstāj otru un ka bash apvalks process sākotnēji tika sākts kā getty process. Šīs sekas tiks paskaidrotas tālāk.

Tagad / etc / inittab failā, getty ir paredzēts respawn (restart), ja nogalināti. Tas norāda uz līniju, kas aicina getty. Bet, ja bash čaula (vai pieteikšanās process) tiek nogalināts, getty respawns (restartē). Kāpēc Nu, gan pieteikšanās process, gan bash ir aizvietotāji Getty un mantot

* Teksta termināļa pamācības indekss

signālu savienojumi nosaka to priekšteči. Faktiski, ja ievērojat informāciju, jūs ievērosiet, ka aizstāšanas procesam būs tāds pats procesa ID kā sākotnējais process. Tādējādi bash ir sava veida getty maskēt ar to pašu procesa ID numuru. Ja bash tiek nogalināts, tā ir tāpat kā getty tika nogalināts (kaut arī getty vairs nedarbojas). Tas rada Getty respawning.

Kad viens pieslēdzas, visi šajā seriālā porta procesi tiek nogalināti, ieskaitot bash apvalku. Tas var notikt arī (ja tas ir iespējots), ja moduļa piliens DCD spriegumam tiek nosūtīts uz seriālo portu. Vai nu izkāpšana no DCD, tā kritums dos rezultātu. Var piespiest getty repawn, manuāli nogalinot bash (vai login), vai nu nospiežot k taustiņu utt, bet ar "top" vai ar "nogalināt" komandu. Jums, iespējams, būs nepieciešams to nogalināt ar signālu 9 (kuru nevar ignorēt).

Ja getty palaiž no komandrindas: Programmas tiek pārtrauktas

Parasti jums vajadzētu palaist getty no iekšpuses / etc / inittab, nevis no komandrindas, vai arī dažas termināļā palaistās programmas var negaidīti apturēt (apturēt). Lūk, kāpēc (pārejiet pie nākamās sadaļas, ja kādēļ tas jums nav svarīgi). Ja jūs sākat getty, lai pateiktu ttyS1 no citas termināļa komandrindas, teiksim tty1, tad tam būs tty1 kā tā kontrolējošo terminālu, lai arī faktiskais terminālis, uz kuru tas darbojas, ir ttyS1. Tādējādi tam ir nepareizs vadības termināls. Bet, ja tas ir sākts inittab failā, tad tam būs ttyS1 kā kontrolējošo terminālu (pareizs).

Kaut arī kontrolējošais termināls ir nepareizs, pieteikšanās ttyS1 darbojas labi (jo jūs sniedzāt ttyS1 kā arguments getty). Standarta ieejas un izejas iestatījums ir ttyS1, lai arī kontrolējošais terminālis paliek tty11. Citas ttyS1 palaistās programmas var mantot šo standarta ievade / izvade (kas ir savienota ar ttyS1), un viss ir kārtībā. Bet dažas programmas var radīt kļūdu, mēģinot lasīt no to kontrolējošā terminālā (tty1), kas ir nepareizs. Tagad tty1 var domāt, ka šīs programmas fiksē tty1, tāpēc mēģinājums lasīt no tty1 (tam vajadzēja būt ttyS1) pārtrauc procesu, kurš mēģināja lasīt. (Fona process nav atļauts lasīt no tā kontrolējošā terminālā.). Uz ekrāna var būt redzams ziņojums: " [1] + pārtraukta ". Šajā brīdī jūs esat iestrēdzis, jo jūs nevarat mijiedarboties ar procesu, kas mēģina sazināties ar jums, izmantojot nepareizu terminālu. Protams, lai izvairītos no tā, jūs varat doties uz citu termināli un nogalināt procesu utt.

agetty (var tikt nosaukts getty)

Rindas piemērs / etc / inittab:

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

S1 ir no ttyS1. 23 nozīmē, ka getty tiek palaists, ieejot palaišanas līmeņos 2 vai 3. Respawn nozīmē, ka, ja killty (vai process, kas to aizstāja, piemēram, bash) tiek nogalināts, getty automātiski uzsāks (respawn) atkal. / sbin / getty ir getty komanda. -L nozīmē Vietējie (ignorēt modema vadības signālus). -h (nav parādīts piemērā) ļauj aparatūras plūsmas vadībai (tāda pati kā stty crtscts). 19200 ir bodu ātrums. ttyS1 nozīmē / dev / ttyS1 (COM2 MS-DOS). vt102 ir termināla tips, un šis getty iestatīs vides vērtību TERM uz šo vērtību. Nav konfigurācijas failu. Ievadiet "init q" komandrindā pēc Getty rediģēšanas, un jums vajadzētu redzēt pieteikšanās uzvedni.

Pareiza paritma problēmu automātiska noteikšana

Programmā Agetty tiks mēģināts automātiski noteikt paritātes iestatījumu termināļa iekšienē (ieskaitot bez paritātes). Tas neatbalsta 8 bitu datu bitus plus 1 bitu paritāti. Skatiet 8 bitu datu bitus (plus paritāte). Ja jūs izmantojat stty, lai iestatītu paritāti, agetty automātiski atiestatīs to, jo sākotnēji tas vēlas, lai paritātes bits nonāktu tā, it kā tas būtu datu bits. Tas ir tāpēc, ka, ievadot savu pieteikumvārdu, tam ir jāiegūst pēdējais bits (iespējams, paritātes bits), lai tas varētu automātiski noteikt paritāti. Tādējādi, ja jūs izmantojat paritāti, iespējojiet to tikai teksta termināla iekšpusē un ļaujiet to automātiski noteikt un iestatīt datorā. Ja jūsu termināls atbalsta saņemto paritāti, pieteikšanās uzvedne izskatīsies izkropļota, kamēr neesat ierakstījis kaut ko tādu, lai getty varētu atklāt

paritāte. Nepareiza uzvedne atturēsies no apmeklētāju utt., Mēģinot pieteikties. Tas varētu būt tieši tas, ko vēlaties.

Dažkārt rodas problēmas ar paritātes automātisko noteikšanu. Tas notiek tāpēc, ka pēc tam, kad pirmo reizi ievadāt savu pieteikšanās vārdu, agetty sāk pieteikšanās programmu, lai pabeigtu jūsu pieslēgšanos. Diemžēl pieteikšanās programma nevar noteikt paritāti, tādēļ, ja getty programma nespēja noteikt paritāti, tad pieteikšanās nevarēs noteikt vai nu. Ja pirmais pieteikšanās mēģinājums neizdodas, piesakieties , lai mēģinātu vēlreiz utt. (Visi ar nepareizu iestatījumu paritāti). Galu galā, pēc vairākiem mēģinājumiem mēģināt pieteikties (vai pēc taimautības ), agetty atsāksies un vispirms sāksies pieteikšanās secība. Kad Getty atkal darbojas, tas var noteikt otra izmēģinājuma paritāti, lai viss varētu darboties pareizi.

Ar nepareizu paritāti pieteikšanās programma nevar pareizi nolasīt to, ko jūs rakstāt, un jūs nevarat pieteikties. Ja jūsu terminālis atbalsta saņemto paritāti, jūs turpināsit skatīt kļūdainu ekrānu. Ja Getty nespēj atklāt paritāti, / etc / issue fails parasti tiek izmests ekrānā tieši pirms ātrās uzvednes, tāpēc ekrānā var parādīties vairāk izkropļoti vārdi.

Kāpēc nevar uzzināt paritāti ar pirmo ievadīto burtu? Piemērs: pieņemsim, ka tas atpazīst 8 bitu baitu ar tā paritātes bitu 0 (augstā secības bits) un ar nepāra skaitu 1 bitu. Kāda ir paritāte? Nu, nepāra skaits 1 bits nozīmē, ka tas ir nepāra paritāte. Bet tas var arī būt tikai 8 bitu raksturs bez paritātes. Nav tā, lai noteiktu, kurš. Bet līdz šim mēs esam likvidējuši pat līdzības iespēju. Tātad paritātes noteikšana tiek veikta ar likvidēšanas procesu.

Ja nākamais ievadītais baits ir līdzīgs pirmajam, un tas arī novērš pat līdzības iespēju, joprojām nav iespējams noteikt paritāti. Šī situācija var turpināties uz nenoteiktu laiku, un retos gadījumos login netiks veikts, kamēr neesat mainījis savu pieteikšanās vārdu. Ja agetty atradīs paritātes bit 1, tā pieņems, ka tas ir paritātes bit, nevis augstā secībā bit 8-bitu raksturs. Tādējādi tiek pieņemts, ka jūsu lietotājvārdā (ti, ka jūsu vārds ir ASCII) jūs neizmantojat meta-rakstzīmes (augstu bitu kopu).

Var iekļūt "login loop" dažādos veidos. Pieņemsim, ka jūs ievadāt tikai vienu vai divus burtus savam lietotājvārdam un pēc tam atgriezieties. Ja šie burti nepietiekami, lai noteiktu paritāti, tad pieteikšanās sākas pirms ir atrasta paritāte. Dažreiz šī problēma rodas, ja jums nav termināļa un / vai savienojuma, kad agetty pirmo reizi palaiž.

Ja jūs esat iestrēdzis šajā "pieteikšanās cilpa", izeja no tā ir vairākas reizes hit atgriešanās taustiņu, līdz jūs saņemat Getty pieteikšanās uzvedni. Vēl viens veids ir vienkārši pagaidīt minūti, vai nu par taimautu. Tad getty pieteikšanās uzvedni tiks ievietota ekrānā ar getty programmu, un jūs varat mēģināt vēlreiz pieteikties.

8 bitu datu biti (plus paritāte)

Diemžēl agetty nevar noteikt šo paritāti. 1999. gada beigās nav iespējas atspējot paritātes automātisko noteikšanu, tādējādi atklājot nepareizu paritāti. Rezultāts ir tāds, ka pieteikšanās process tiks izkropļots un paritāte tiks iestatīta nepareizi. Tādējādi šķiet neiespējami mēģināt izmantot 8 bitu datu bitus ar paritāti.

getty (daļa getty_ps)

(Lielākā daļa no tā ir no vecā Serial-HOWTO, ko iesniedza Gregs Hankins)
Par šo getty ir nepieciešams gan ievietot ierakstus konfigurācijas failā un pievienot ierakstu / etc / inittab . Šeit ir daži piemēri ierakstiem, ko izmantot savam terminālam, kuru ievietojāt konfigurācijas failā / etc / gettydefs .

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

Ņemiet vērā, ka DT38400, DT19200 utt. Ir tikai etiķetes, un tām jābūt tādām pašām kā / etc / inittab .

Ja vēlaties, jūs varat padarīt Getty izdrukāt interesantas lietas pieteikšanās bannerā. Manos piemēros esmu uzrakstījis sistēmas nosaukumu un sērijas līniju. Jūs varat pievienot citas lietas: [blockquote

ēnā = jā] @B Pašreizējais (novērtēts brīdī, kad redzams @B) bps likme. @D Pašreizējais datums, MM / DD / YY. @ L Sērijas līnija, kurai pievienots getty. @ S sistēmas nosaukums. @T Pašreizējais laiks, HH: MM: SS (24 stundas). @U Pašlaik parakstīto lietotāju skaits. Tas ir ierakstu skaits failā / etc / utmp, kuram ir nulles ut_name lauks. @ V VERSION vērtība, kā norādīts noklusējuma failā. Lai parādītu vienu rakstzīmi "@", izmantojiet '\ @' vai '@@'.

Kad esat pabeidzis / etc / gettydefs rediģēšanu, jūs varat pārbaudīt, vai sintakse ir pareiza:

linux # getty-c / etc / gettydefs

Pārliecinieties, vai serial portam nav cita getty vai uugetty config faila, ka jūsu terminālis ir pievienots tādam kā ( /etc/default/{uu}getty.ttyS N vai /etc/conf.{uu}getty.ttyS N ) , jo tas, visticamāk, traucēs runāt gatti terminālā. Noņemiet šos konfliktējošos failus, ja tie iziet.

Rediģējiet savu / etc / inittab failu, lai palaistu getty uz seriālā porta (aizvietojot pareizu informāciju par jūsu vidi - ostas, ātruma un noklusējuma termināla tips):

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

Šajā brīdī jūsu terminālā vajadzētu redzēt pieteikšanās uzvedni. Jums, iespējams, būs jāatgriežas, lai saņemtu termināļa uzmanību.

mgetty

"M" apzīmē modemu. Šī programma galvenokārt paredzēta modemiem, un no 2000. gada vidus tā būs jāpārklasificē, lai to lietotu teksta termināliem (ja vien jūs neizmantojat aparatūras plūsmas kontroli - un parasti tam ir nepieciešams rokām darāms kabelis). Dokumentāciju par tieši pievienotajiem termināliem skatiet rokasgrāmatas sadaļā "Tiešais": mgetty.texi.

Apskatiet pēdējās /etc/mgetty/mgetty.config rindiņas, piemēram, konfigurējot to terminālim. Ja vien jūs neesat teicis "toggle-dtr no", tas domās, ka datoram ir modems un piliens (noliegts) DTR kontakttīkls, kas velti mēģina atiestatīt neeksistējošu modemu. Atšķirībā no citiem saņemtajiem pakalpojumiem, mgetty nepievienosies termināļiem, kamēr kāds noklikšķinās uz jebkura šī termināla taustiņa, lai jūs redzētu? lai terminālis būtu augšā vai ps, kamēr tas nenotiek. Logi / var / log / mgetty / var parādīt dažus brīdinājuma ziņojumus, kas attiecas tikai uz modemiem, kurus jūs varat ignorēt.

Šeit ir vienkāršās rindas piemērs, kuru ievietojāt / etc / inittab:

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