Linux- ում տեքստային տերմինալներ

14.1 Getty (օգտագործված / etc / inittab)

Getty- ի ներածություն

Համակարգիչը սկսում է (կամ անջատում է վազքի մակարդակները) սերիական պորտում (եւ դրա հետ կապված տերմինալը) մուտք գործելու գործընթացը ստանալու համար getty հրամանը պետք է տեղադրվի / etc / inittab ֆայլում: Հրամանի տողից վազողը կարող է խնդիրներ առաջացնել (տես, եթե getty- ը հրամանի տողում է. Ծրագրերը դադարել են տեսնել, թե ինչու): Getty- ը ստանում է TTY (տերմինալ) գնում: Յուրաքանչյուր տերմինալ պետք է իր սեփական հրամանատարությունը: Կա նաեւ առնվազն մեկ getty հրաման յուրաքանչյուր կոնֆերանսի / etc / inittab ֆայլում: Գտեք այս եւ դնում հեթանոսական հրամանները այն իրական տերմինալների կողքին: Այս ֆայլը կարող է պարունակել տեքստային տերմինների համարանիշի getty տողեր, որոնք մեկնաբանվում են այնպես, որ դուք պետք է անեք այն ամենը, որ դրանք չհայտնաբերեք (հեռացնել առաջատարը #) եւ փոխել մի քանի փաստարկներ:

Այն փաստարկները, որոնք թույլատրվում են, կախված են նրանից, թե ինչից եք օգտվում:
Ուղիղ միացված տերմինալների համար լավագույն երկու նիշերը հետեւյալն են `

Լավագույն երկու նվագարկիչներ, որոնք հասանելի են մոդեմներ հավաքելու համար (խուսափեք անմիջական կապակցված տերմինալների համար) հետեւյալն են.

Պարզ Gettys օգտագործելու համար, եթե չեք օգտագործում իրական տեքստային տերմինալ: Linux- ի շատ օգտվողներ դրանցից մեկը օգտագործում են իրենց մոնիտորի վրա:

Ձեր Linux- ի բաշխումը կարող է կամ ps_getty- ով կամ agetty- ով տեքստային տերմինալների համար: Որոշ բաշխումներ չեն ապահովում: Ցավոք սրտի, նրանք հաճախ ասում են, որ դա «գետտ» է, ուստի անհրաժեշտ է որոշել, թե որն է այն, ինչից հետո դուք կցուցադրեք այն փաստարկները, որոնք դրված եք / etc / inittab- ում: Debian- ն օգտագործում է ցանցը (util-linux փաթեթում): RedHat- ը եւ Fedora- ն օգտագործեցին ps_getty, որը գտնվում է `ps_getty

Որպես վերջին հանգամանք, փորձեք որոշել, թե ինչ ստացանք ունեք, կարող եք ստուգել դրա գործարկվող կոդը (սովորաբար / sbin): ps_getty- ը ունի այս կոդը ներկառուցված / etc / gettydefs: Որոնել այն, գնալ / sbin եւ մուտքագրել:
ստեղներ getty | grep getty
Եթե ​​գետը իրականում ծագում է, վերը նշվածը ոչինչ չի բերի: Այնուամենայնիվ, եթե դուք ունեք մուտքագրված գրառումներ:
գետի -հ
պետք է ցույց տա ընտրանքներ [-hLmw]:

Եթե ​​դուք չեք ստանում getty ցանկանում եք ստուգել այլ բաշխման եւ օտար ծրագիրը փոխանակելու RPM եւ Debian փաթեթների միջեւ: Աղբյուրը կոդը կարող է ներբեռնել Getty Software- ից:

Եթե ​​դուք չեք օգտագործում մոդեմի հսկման գծերը (օրինակ, եթե դուք օգտագործում եք միայն 3 հաղորդիչի նվազագույն քանակը `հաղորդեք, ստացեք եւ ընդհանուր ազդանշանային հիմք) պետք է թույլ տաք, որ դա տեղյակ լինի« տեղական »դրոշի միջոցով: Այս ձեւաչափը կախված է նրանից, թե ինչից եք օգտվում:

Getty- ը մուտքից հետո (եւ կարող է պատասխանել)

Մուտք գործելուց հետո դուք կիմանաք («top», «ps -ax», կամ «ptree» օգտագործելով), որ getty գործընթացը այլեւս չի աշխատում: Ինչ է պատահել դրա հետ: Ինչու getty կրկին վերսկսվի, եթե ձեր սաղմոնը սպանվի: Ահա թե ինչու:

Ձեր անունը գրելուց հետո getty- ը տանում է այն եւ կոչում է մուտքի ծրագիր, որը պատմում է ձեր օգտագործողի անունը: Getty գործընթացը փոխարինվում է մուտքի գործընթացով: Մուտքային գործընթացը պահանջում է ձեր գաղտնաբառը, ստուգում է այն եւ սկսում է գործընթացը նշված ձեր գաղտնաբառը ֆայլում: Այս գործընթացը հաճախ հաճախակի է բաշը: Եթե ​​այո, ապա bash սկսվում է եւ փոխարինում մուտքի գործընթացը: Նշենք, որ մեկ պրոցեսը փոխարինում է մյուսին, եւ որ bash- ի շերտը սկզբից սկսեց որպես «getty» գործընթաց: Դրա հետեւանքները կբացատրվեն ստորեւ:

Այժմ / etc / inittab ֆայլում, getty- ը պետք է պատասխան տա (վերսկսելու), եթե սպանվի: Այն ասում է, որ այդ գիծը, որը կոչ է անում getty: Բայց եթե bash shell (կամ մուտքի գործընթացը) սպանվում է, getty respawns (վերսկսվում). Ինչու: Դե, այնպես էլ մուտքի գործընթացը եւ բաշը փոխարինված են getty եւ ժառանգության համար

* Տեքստային տերմինալը ինչպես ինդեքսին

ազդանշանային կապերը հաստատում են նախորդների կողմից: Փաստորեն, եթե դիտարկեք մանրամասները, դուք կտեսնեք, որ փոխարինման գործընթացը կունենա նույն պրոցեսը նույնականացման գործընթացը: Այսպիսով, bash- ը նույն ձեւով նույնականացման համարով քողարկված է: Եթե ​​bash- ը սպանվի, նույնքան նմանվում է գետիին (թեեւ getty- ն այլեւս չի աշխատում): Սա հանգեցնում է հեթանոսության:

Երբ մեկը դուրս է գալիս, այդ սերիալ պորտի բոլոր գործընթացները սպանվում են, այդ թվում `bash- ն: Դա կարող է նաեւ տեղի ունենալ (եթե միացված լինի), եթե սեղմված ազդանշանը ուղարկվի սերիական պորտին, DCD լարման կաթիլով մոդեմով: Կամ DCD- ի դուրս գալը կամ թողնելը կհանգեցնի getty respawning- ի: Մեկը կարող է ստիպել ստանալու պատասխանել `ձեռքով սպանելով bash (կամ մուտքի) միջոցով` կոճակին հարվածելով եւ այլն, իսկ «վերեւում» կամ «սպանել» հրամանով: Դուք, ամենայն հավանականությամբ, պետք է սպանեք այն ազդանշանով 9 (ինչը չի կարող անտեսվել):

Եթե ​​getty վարում հրամանի տողում. Ծրագրերը դադարում են

Անհրաժեշտ է սովորաբար getty / etc / inittab- ի ներսում եւ ոչ թե հրամանի տողում, կամ տերմինալում գործող որոշ ծրագրեր կարող են անսպասելիորեն կասեցնել (դադարեցվել): Ահա թե ինչու (անցնել հաջորդ բաժին, եթե ինչու ձեզ համար կարեւոր չէ): Եթե ​​դուք սկսեք ստանալ ttyS1- ը մեկ այլ տերմինալի հրամանի տողից, ասեք tty1- ը, ապա այն կունենա tty1 որպես իր «հսկիչ տերմինալը», չնայած այն փաստացի տերմինալը, որը գործում է, ttyS1 է: Այսպիսով, այն ունի սխալ վերահսկիչ տերմինալ: Բայց եթե inittab- ի ֆայլը սկսեց, ապա ttyS1- ը կունենա որպես վերահսկման տերմինալ (ճիշտ):

Չնայած վերահսկման տերմինը սխալ է, ttyS1- ի մուտքն աշխատում է տուգանքով (քանի որ դուք տրված եք ttyS1- ի որպես getty- ի փաստարկ): Ստանդարտ մուտքագրումը եւ արտադրանքը սահմանվում են ttyS1- ին, չնայած որ հսկիչ տերմինը մնում է tty11: TtyS1- ում գործող այլ ծրագրեր կարող են ժառանգել այս ստանդարտ մուտքագրումը / ելքը (որը կապված է ttyS1- ին) եւ ամեն ինչ լավ է: Սակայն որոշ ծրագրեր կարող են սխալվել, փորձելով կարդալ իրենց հսկիչ տերմինալից (tty1), ինչը սխալ է: Այժմ tty1- ը կարող է մտածել, որ այս ծրագրերը ֆտորում են tty1- ով, ուստի tty1- ից կարդալու փորձը (այն պետք է լինի ttyS1) հանգեցնում է կարդալու գործընթացը դադարեցնելու: (Ֆոնային գործընթացը թույլ չի տալիս կարդալ իր հսկիչ տերմինալը): Դուք կարող եք տեսնել մի հաղորդագրություն, որը նման է «Էկրանի վրա [1] + Stopped »: Այս պահին դուք խրված եք, քանի որ չես կարող փոխազդել մի գործընթացի հետ, որը փորձում է շփվել ձեզ հետ սխալ տերմինով: Իհարկե, այս փախուստը կարող եք մեկ այլ տերմինալ գնալ եւ սպանել գործընթացը եւ այլն:

agetty (կարող է անվանվել getty)

Օրինակ / etc / inittab- ի օրինակ գիծ:

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

S1- ը ttyS1- ից է: 23-ը նշանակում է, որ getty- ն ընթանում է 2-րդ կամ 3-րդ մակարդակներում մուտք գործելուց հետո: respawn- ը նշանակում է, որ եթե getty- ն (կամ այն ​​փոխարինեց այն, ինչպիսին օրինակ bash- ը) սպանվի, getty- ը ինքնաբերաբար կսկսի նորից (respawn): / sbin / getty է getty հրաման. -L- ը նշանակում է տեղական (անտեսել մոդեմի կառավարման ազդանշանները): -h (օրինակով չի ցուցադրվում) թույլ է տալիս սարքավորման հոսքի հսկողությունը (նույնը, ինչպես stty crtscts): 19200 թթ. ttyS1 նշանակում է / dev / ttyS1 (COM2 MS-DOS- ում): vt102 տերմինալի տեսակը է, եւ այս getty- ը սահմանելու է շրջակա միջավայրի փոփոխական TERM- ը այս արժեքի համար: Կոդավորման ֆայլեր չկան: Մուտքագրեք «init q» հրամանի տողում գետի խմբագրումից հետո եւ դուք պետք է տեսնեք մուտքի հուշում:

Agetty & # 39; s ավտոմատ հայտնաբերում է հավասարության խնդիրները

The agetty ծրագիրը կփորձի ավտոմատ կերպով հայտնաբերել տերմինալի ներսում սահմանված հավասարությունը (ներառյալ ոչ մի հավասարություն): Այն չի ապահովում 8-bit տվյալների բայթ եւ գումարած 1-բիթանոց հավասարություն: Տես 8-bit տվյալների բայթ (գումարած հավասարություն): Եթե ​​դուք օգտագործում եք ծայրահեղություն սահմանելու համար, ապա agetty- ը ինքնաբերաբար կհեռացնի այն, քանի որ ի սկզբանե ցանկանում է, որ հավասարակշռությունը հասնի, քանի որ դա տվյալների բիթ է: Դա այն է, որ այն պետք է ստանա վերջին տիտղոսը (հնարավոր է հավասարության հավասարություն), երբ մուտքագրեք ձեր մուտքի անունը, որպեսզի կարողանա ավտոմատ կերպով բացահայտել հավասարակշռությունը: Այսպիսով, եթե օգտագործեք հավասարակշռությունը, միացրեք այն միայն տեքստային տերմինի ներսում եւ թույլ տվեք, որ այն ավտոմատ կերպով հայտնաբերի եւ դրեց այն համակարգչում: Եթե ​​ձեր տերմինալը սատարում է ստացված հավասարությունը, ապա մուտքի հուշումը կտտանքվի, մինչեւ որեւէ բան գրեք, որպեսզի getty- ը կարողանա հայտնաբերել

հավասարություն: Վտանգված հուշումը կբացահայտի այցելուներին եւ այլն եւ փորձում մուտք գործել: Դա կարող է լինել միայն այն, ինչ ուզում եք:

Երբեմն կա հավանականության ավտո հայտնաբերման խնդիր: Դա տեղի է ունենում այն ​​բանի համար, որ առաջին անգամ մուտքագրելով ձեր մուտքի անունը, agetty- ը սկսում է մուտք գործել ծրագիրը, ավարտելու համար մուտքագրումը: Ցավոք, մուտքի ծրագիրը չի կարող հավասարություն գտնել, որպեսզի եթե getty ծրագիրը չհաջողվի որոշել հավասարակշռությունը, ապա մուտք գործելը չի կարողանա որոշել դա էլ է: Եթե ​​առաջին մուտքի փորձը ձախողվի, մուտքի թույլտվությունը կրկին փորձեք, եւ այլն (բոլորը հավասարության սկզբունքով սահմանված են): Ի վերջո, մի շարք անհաջող փորձերից հետո մուտք գործելու (կամ ժամանակի ավարտից հետո) սկսում են նորից սկսել եւ նորից սկսել մուտքի հաջորդականությունները: Երբ getty նորից վազում է, այն կարող է իմանալ հավասարությունը երկրորդ փորձել, որպեսզի ամեն ինչ կարող է աշխատել OK.

Անօրինական հավասարության դեպքում մուտքի ծրագիրը չի կարող ճիշտ կարդալ այն, ինչ մուտքագրում եք, եւ չեք կարող մուտք գործել: Եթե ձեր տերմինալը սատարում է ստացված հավասարությունը, կշարունակեք տեսնել աղավաղված էկրան: Եթե ​​getty- ը չհաջողվի բացահայտել հավասարակշռությունը, ապա / etc / issue ֆայլը սովորաբար հափշտակված է մինչեւ էկրանին, այնպես որ էկրանին կարող է հայտնվել ավելի խեղաթյուրված բառերը:

Ինչու չհաջողվեց հասկանալ հավասարությունը տպագրված առաջին տառով: Ահա մի օրինակ. Ենթադրենք, այն հայտնաբերում է 8 բիտ բայտ իր հավասարության բիթով 0 (բարձր կարգի բիտ) եւ տարօրինակ թվով 1 բիթ: Ինչ հավասարություն է սա: Դե, տարօրինակ թվով 1 բիթը ենթադրում է, որ դա տարօրինակ հավասարություն է: Բայց դա կարող էր նաեւ լինել միայն 8-բիթ `առանց հավասարության: Առայժմ ոչ մի կերպ չկա որոշելու: Սակայն մինչ օրս մենք վերացրեցինք հավասարության հավանականությունը: Հավասարության հայտնաբերումը դրանով կախված է վերացման գործընթացից:

Եթե ​​հաջորդ բայթը տպագրված է առաջինին, եւ միայն վերացնում է նույնիսկ հավասարության հնարավորությունը, ապա հավանականությունը որոշելու հավանականությունը դեռեւս անհնար է: Այս իրավիճակը կարող է անորոշ ժամանակով շարունակվել, եւ հազվադեպ դեպքերում մուտքի հնարավորությունը չի հաջողվի, մինչեւ դուք փոխեք ձեր մուտքի անունը: Եթե ​​agetty գտնում է 1 հավասարության բիթ, ապա ենթադրվում է, որ դա հավասարության բիտ է եւ ոչ թե 8-բիթանոց բնույթ: Այսպիսով, ենթադրվում է, որ ձեր օգտագործողի անունից չեք օգտագործում մետա-նիշ (բարձր բիտ կոդ) (այսինքն, ձեր անունը ASCII- ում է):

Մեկը կարող է մուտք ունենալ «մուտքի հանգույց» տարբեր ձեւերով: Ենթադրենք, դուք մուտք եք գործում միայն մեկ նամակ կամ երկու ձեր մուտքի անվանման համար, ապա հարվածեք վերադարձին: Եթե ​​այդ տառերը բավարար չեն հավասարակշռության հայտնաբերման համար, ապա մուտքն անցնում է, մինչեւ հավասարակշռությունը հայտնաբերվի: Երբեմն այս խնդիրը տեղի է ունենում, եթե դուք չունեք տերմինալը եւ / կամ միացված, երբ սկսում է սկսվել:

Եթե ​​դուք խրված եք այս «մուտքի հանգույցում», ելքից դուրս գալու համար մի քանի անգամ հարվածել վերադարձի ստեղնը, քանի դեռ դուք ստանում եք getty մուտքի հուշում: Մեկ այլ եղանակ է, պարզապես մի րոպե սպասել, որ տեւական ժամանակահատված լինի: Այնուհետեւ, getty մուտքի հուշումը էկրանին կցուցադրվի getty ծրագրի կողմից եւ կարող եք կրկին փորձել մուտք գործել:

8-bit տվյալների բայթ (գումարած հավասարություն)

Ցավոք, ագրետին չի կարող բացահայտել այդ հավասարակշռությունը: 1999-ի վերջի դրությամբ այն չունի տարբերակ `ավտոմատ կերպով հայտնաբերելու հավասարակշռությունը եւ այդպիսով կբացահայտի սխալ հավասարություն: Արդյունքն այն է, որ մուտքի գործընթացը կխախտվի եւ հավասարությունը կկատարվի սխալ: Այսպիսով, հավանականությունը կարծես հավանական չէ փորձել օգտագործել 8-bit տվյալների բայտներ հավասարությամբ:

Getty (getty_ps- ի մի մասը)

(Այս ամենը Greg Hankins- ի հին Serial-HOWTO- ից է)
Այս գայթակղիչի համար անհրաժեշտ է մուտքագրել մուտքերի կոնֆիգուրացիայի ֆայլ եւ մուտքագրել / etc / inittab- ում : Ահա մի քանի օրինակ գրառումներ, որոնք կօգտագործեն ձեր տերմինալի համար, որը դուք տեղադրեք կազմաձեւման ֆայլ / etc / gettydefs :

# 38400 bps Dumb տերմինալ մուտք DT38400 # B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL # @ S @ L մուտք: # DT38400 # 19200 bps Dumb տերմինալ մուտք DT19200 # B19200 CS8 CLOCAL # B19200 SANE -STRIP CLOCAL # @ S @ # DT19200 # 9600 bps Dumb տերմինալ մուտք DT9600 # B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL # @ S @ լ Մուտք: # DT9600

Նշենք, որ DT38400, DT19200 եւ այլն պարզապես պիտակներ են եւ պետք է լինեն նույնը, որ դուք օգտագործում եք / etc / inittab- ում :

Եթե ​​ցանկանում եք, ապա դուք կարող եք տպել հետաքրքիր բաներ մուտքի դրոշի ներքո: Իմ օրինակում ես ունեմ համակարգային անուն եւ տպագրված սերիան: Դուք կարող եք ավելացնել այլ բաներ. [Blockquote

ստվեր = այո] @ Բ ընթացիկ (գնահատվում է այն ժամանակ, երբ @ b- ը դիտվում է) bps դրույքաչափով: @ D Ընթացիկ ամսաթիվը, MM / DD / YY- ում: @ L Սերիալ տողը, որի համար getty կցված է: @ Ս համակարգի անունը: @ Տ ընթացիկ ժամանակաշրջանը `Հ.Հ.-ում` SS (24 ժամ): @U Ներկայումս գրանցված օգտագործողների թիվը: Սա / etc / utmp ֆայլում գրանցված գրառումների թվաքանակն է, որը չունի ոչ null ut_name դաշտ: @V VERSION- ի արժեքը, ինչպես նշված է կանխադրված ֆայլում: Մեկ «@» նշանի ցուցադրելու համար օգտագործեք կամ '\ @' կամ '@@':

Երբ եք արել խմբագրումը / etc / gettydefs , կարող եք հաստատել, որ շարահյուսությունը ճիշտ է անում.

linux # getty -c / etc / gettydefs

Համոզվեք, որ չկա այլ getty կամ uugetty config ֆայլը սերիական պորտի համար, որը ձեր տերմինը կցված է, ինչպիսիք են ( /etc/default/{uu}getty.ttyS N կամ /etc/conf.{uu}getty.ttyS N ) , քանի որ դա, ամենայն հավանականությամբ, խանգարում է տերմինալում աշխատելու համար: Հեռացնել նման ծագող ֆայլերը, եթե դրանք դուրս են գալիս:

Խմբագրել ձեր / etc / inittab ֆայլը սերիական պորտում աշխատելու համար (փոխարինեք ձեր միջավայրի համար ճիշտ տեղեկատվությամբ `պորտ, արագություն եւ կանխադրված տերմինալ տիպ):

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

Այս պահին, դուք պետք է մուտք գործեք ձեր տերմինալը: Կարող եք ստիպված լինել վերադառնալ, որպեսզի ստանաք տերմինալի ուշադրությունը:

mgetty

«Մ» -ը մոդեմն է: Այս ծրագիրը հիմնականում մոդեմների համար է եւ 2000 թ. Կեսերին այն կպահանջի վերանայել տեքստային տերմինալների համար օգտագործելու համար (եթե դուք օգտագործում եք ապարատային հոսքի հսկողություն, եւ սովորաբար պահանջում է ձեռքի մալուխ): Ուղղակի կապված տերմինալների փաստաթղթերի համար տես ձեռնարկի «Ուղղակի» բաժինը ` mgetty.texi:

Նայեք վերջին տողում /etc/mgetty/mgetty.config տերմինալի համար կարգավորելու համար: Եթե ​​դուք չեք ասում, «անցնել-DTR- ը» չի գտնի, որ դուք ունեք մոդեմ եւ կաթիլ (բացասական) DTR pin- ը PC- ում `գոյություն չունեցող մոդեմը վերականգնելու փորձ: Ի տարբերություն այլ gettys- ի, mgetty չի տալու իրեն տերմինալ մինչեւ որեւէ մեկը հարվածում է որեւէ բանալին այդ տերմինալի, որպեսզի դուք կտեսնեք a? տերմինալի համար վերեւում կամ ps, մինչեւ դա տեղի ունենա: / Var / log / mgetty / տեղեկամատյանները կարող են ցույց տալ մի քանի զգուշացնող հաղորդագրություններ, որոնք կիրառելի են միայն մոդեմների համար, որոնք դուք կարող եք անտեսել:

Ահա / etc / inittab- ում տեղադրված պարզ տողի օրինակ :

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