Linux-da mətn terminləri

14.1 Getty (/ etc / inittab istifadə olunur)

Getty-ə Giriş

Kompüter başladıldığında (və ya iş səviyyələrini açdıqda) bir seri portda (və ona bağlı terminal) bir giriş prosesinin olması üçün / etc / inittab faylına getty komandası qoyulmalıdır. Buyty komut satırından qaçış problemlərə səbəb ola bilər (bax: getty komanda satırından yayınlansın: Proqramlar nə üçün dayandırılsın). Getty bir TTY (bir terminal) GET edir. Hər terminal öz getty komandasına lazımdır. Hər / etc / inittab faylında konsol üçün ən az bir getty əmri var. Bu tapın və yanında olan real terminalların getty əmrlərini qoyun. Bu fayl, mətn terminalleri üçün nümunə getty xəttlərindən ibarət ola bilər, belə ki, lazım olan bütün bunları (başdan # silin) ​​və bir neçə arqumentləri dəyişdirin.

İzin verilmiş olan arqumentlər hansı istifadə etdiyinizə bağlıdır:
Birbaşa əlaqəli terminallıqlar üçün ən yaxşı iki ədəd:

Dial-in modemlər üçün ən yaxşı iki qurğu (birbaşa əlaqəli terminallardan qaçın) aşağıdakılardır:

Həqiqi mətn terminalını istifadə etmirsinizsə, sadə gettys istifadə edəcək. Linux istifadəçilərinin bir çoxu monitorlardan birindən istifadə edir:

Linux dağılımınız, mətn terminalleri üçün ps_getty və ya agetty ilə gəlmək olar. Bəzi paylanma nədir. Təəssüflər olsun ki, onlar tez-tez sadəcə "getty" deyirlər, və / etc / inittab-dan sonra qoyduğunuz arqumentlərdən hansı birini seçməyinizə ehtiyac ola bilər. Debian agetty (util-linux paketində) istifadə edir. RedHat və Fedora ps_getty istifadə olunur: ps_getty

Hansı getty-ni müəyyən etməyə çalışdığınız ən son çarə kimi, onun icraçı kodunu (adətən / sbin) yoxlaya bilərsiniz. ps_getty bu kodu daxil / etc / gettydefs var. Aramak üçün / sbin-ə gedin və yazın:
strings getty | grep getty
Getty həqiqətən agetty varsa yuxarıdakı heç bir şey ilə nəticələnəcək. Lakin agetty yazarkən:
getty -h
variantları göstərməlidir [-hlmw].

Getty'iniz yoxsa, RPM və Debian paketləri arasında digər dağılımları və yabanci proqramı yoxlayın. Mənbə kodu Getty Software-dan endirilə bilər.

Modem nəzarət xətləri istifadə etmirsinizsə (məsələn, minimum 3 ədəd simli ötürücüyü istifadə etsəniz, ötürmək, qəbul etmək və ümumi sinyal zəmini) "local" bayrağından istifadə edərək bunu bilsin. Bunun formatı hansı istifadə etdiyinizə bağlıdır.

Girişdən sonra Getty çıxışlar (və respawn bilər)

Giriş yaptıktan sonra getty prosesinin artık çalışmadığını fark edeceksiniz ("top", "ps -ax" ya da "ptree" istifadə edərək). Buna nə oldu? Kabanızı öldürdüyünüzdə getty yenidən nə üçün yenidən başladır? İşdə niyə.

İstifadəçi adınızı yazdıqdan sonra getty onu alır və istifadəçi adınızı izah edən giriş proqramını çağırır. Getty prosesi giriş prosesi ilə əvəz olunur. Giriş prosesi şifrənizi tələb edir, onu yoxlayır və parol dosyanızda hər hansı bir prosesin müəyyənləşdirilməsinə başlayır. Bu proses tez-tez bash qabığını təşkil edir. Əgər belədirsə, bash başlayır və giriş prosesini əvəz edir. Bir prosesin başqa birinin əvəzləndiyini və bash qabığının əvvəlcədən getty prosesi olaraq başladığını unutmayın. Bunun nəticəsi aşağıda açıqlanacaq.

İndi / etc / inittab faylında, getty öldürüldükdə cavab verməlidir (yenidən başladın). Getty çağırır ki, line belə deyir. Lakin bash shell (və ya giriş prosesi) öldürülürsə, getty respawns (yenidən başladır). Niyə? Yaxşı, giriş prosesi və bash getty və miras üçün əvəz edir

* Metin Terminali Nasıl Yapılır?

onların sələfləri tərəfindən siqnal əlaqələri qurur. Əslində siz detalları müşahidə edərsəniz, əvəzləmə prosesinin orijinal proses kimi eyni proses kimliyinə sahib olacağını görəcəksiniz. Beləliklə, bash, eyni proses kimlik nömrəsi ilə gizlənməyin bir növüdür. Bəş öldürüldüyündə, getty öldürüldüyü kimi (getty artıq işləməsə də). Bu nəticə getty respawning.

Bir çıxdıqda, bu serial portdakı bütün proseslər bash qabığını da daxil olmaqla öldürülür. Modem tərəfindən bir DCD gərginliyi ilə seri porta bir asma siqnal göndərildikdə bu da ola bilər (aktiv olduqda). DCD-də çıxmaq və ya buraxma getty respawning səbəb olacaq. Biri "yuxarı" ya da "öldürmək" əmrini verərkən, k düyməsini vuraraq, və ya bash (və ya giriş) əl ilə öldürmək getty məcbur edə bilər. Ehtimal ki, siqnal 9 ilə məhv olmağınız lazımdır (bunu nəzərə almamaq mümkün deyil).

Getty komanda satırından yayınlansın: Proqramlar dayandırılıb

Normal olaraq getty'i / etc / inittab- dan komut satırından deyil, ya da terminalda çalışan bəzi proqramların gözlənilmədən dayandığı (dayandırılmalıdır) ola bilər. İşdə niyə (nəyə görə vacib deyilsə növbəti hissəyə keçin). Başqa bir terminalın əmr xəttindən ttyS1 deyirsinizsə, tty1 deyirsinizsə, o zaman ttyS1 işlədildikdə, o, terminalın "nəzarət terminalı" kimi tty1 olacaq. Beləliklə yanlış nəzarət terminalı var. Amma inittab faylının içərisində başlamışsa, ttyS1-in nəzarət terminalı (düzgün) olacaq.

Nəzarət terminalının yanlış olmasına baxmayaraq, ttyS1-də giriş ttyS1-ə getty-yə bir argüman verdiyiniz üçün yaxşı işləyir. Standart giriş və çıxış ttyS1-ə təyin edilərsə də, nəzarət terminalı tty11 olaraq qalır. TtyS1-də işlədilən digər proqramlar bu standart giriş / çıxışa (ttyS1-ə qoşulan) sahib ola bilər və hər şey tamamdır. Lakin bəzi proqramlar səhv olan nəzarət terminalından (tty1) oxumağa çalışmaq səhvini yarada bilər. İndi tty1, bu proqramların tty1 tərəfindən arxa planda işlədildiyini düşünə bilər, belə ki tty1-dən oxumaq cəhdi (ttyS1 olmalıdır) oxumağa cəhd göstərən prosesin dayandırılmasına gətirib çıxarır. (Fon prosesi onun nəzarət terminalından oxumağa icazə verilmir). Bir mesajı bir ekranda " [1] + Durduruldu " kimi görə bilərsiniz. Səhv terminal vasitəsilə sizinlə ünsiyyət qurmağa çalışdığınız bir proseslə qarşılıqlı əlaqə saxlaya bilmədiyiniz üçün bu nöqtədə sıxışdınız. Əlbəttə bundan qaçmaq üçün başqa terminala gedə və prosesi öldürə bilərsiniz.

agetty (getty adlandırıla bilər)

/ Etc / inittab-da bir nümunə line:

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

S1 ttyS1-dən. 23, getty'nin 2 və ya 3-cü səviyyələrinə daxil olduqda işlədiyini bildirir. Respawn, getty (və ya bash kimi əvəz edilmiş bir proses) öldürüldüyündən, getty avtomatik olaraq (respawn) başlayacaq deməkdir. / sbin / getty getty əmridir. -L yerli deməkdir (modem nəzarət siqnallarını görməyin). -h (nümunədə göstərilmir) donanım axını nəzarətini təmin edir (stty ktscts ilə eyni). 19200 bud nisbəti. ttyS1 / dev / ttyS1 (MS-DOS-da COM2) deməkdir. vt102 terminal tipidir və bu getty, bu dəyişikliyə ətraf mühit dəyişən TERM təyin edəcək. Konfiqurasiya faylları yoxdur. Getty-i redaktə etdikdən sonra komanda xəttində "init q" yazın və bir giriş sorunu görəcəksiniz.

Agetty & # 39; nin paritet problemlərinin avtomatik aşkar edilməsi

Gərginlik proqramı terminalın içərisində olan pariteyi təyin etməyi (heç bir paritet daxil olmaqla) avtomatik olaraq aşkar etməyə çalışacaq. 8 bit məlumat baytlarını və 1-bit paritetini dəstəkləmir. 8 bit məlumat baytlarına (plus parity) baxın. Pariteyi təyin etmək üçün stty istifadə etsəniz , agetty avtomatik bərpa olunacaq, çünki əvvəlcə parite bitinin bir məlumat biti kimi girməsini istəyir. Bunun səbəbi, pariteyi avtomatik olaraq təyin edə bilmək üçün giriş adınızı yazarkən son bit (ehtimal ki, bir parite biti) almaq lazımdır. Beləliklə, pariteyi istifadə etsəniz, yalnız mətn terminalinin içərisində aktivləşdirin və agetty onu avtomatik olaraq aşkar edin və onu kompüterə qoyun. Terminalınız alınan pariteyi dəstəkləyərsə, giriş sorunu getty'yi ala bilən bir şey yazana qədər boş görünür

parite. Bozuk bir istek, giriş yapmaya çalışırken ziyaretçileri və s. Bu istədiyiniz nə ola bilər.

Bəzən paritenin avtomatik aşkarlanması ilə bağlı bir problem var. Bu, ilk növbədə sizin giriş adınızı yazdıqdan sonra, agetty giriş proqramını siz daxil etməyi başa çatdırmaq üçün başlayır. Təəssüf ki, giriş proqramı pariteyi aşkar edə bilmir, beləliklə , getty proqramı pariteyi təyin etmədikdə, giriş daxil olmayacaq ya da. İlk giriş cəhdi uğursuz olarsa, giriş yenidən cəhd etməyə imkan verir və s. (Bütün parity ilə yanlışdır). Nəhayət, bir neçə uğursuz cəhddən sonra (və ya bir zaman aşımından sonra) giriş üçün təkrar başlayacaq və giriş sekanslarını yenidən başladır . Getty yenidən işlədildikdən sonra, ikinci cəhddə pariteyi müəyyən edə bilər, buna görə hər şey daha sonra işləyə bilər.

Yanlış paritet ilə, giriş proqramı yazdığınız şeyi düzgün oxuyur və daxil ola bilməyəcəksiniz. Terminaliniz alınan paritetləri dəstəkləyərsə, bir bozuk ekranı görməyə davam edəcəksiniz. Getty parite aşkar etmədikdə, / etc / issue faylını tez-tez soruşmadan əvvəl ekrana köçürülürsə, ekranda daha çox bozuk sözlər görünə bilər.

Niyə agetty yazdığınız ilk məktub ilə bərabərliyi ala bilmir? Burada bir nümunə: Məsələn, parite bitsi 0 (yüksək səliqəli bit) və bir ədəd 1 bit ilə 8 bit bayt algılar. Nə bərabərlikdir? Bəli, 1 ədədə bərabər sayda tək parite var. Ancaq bu, eyni zamanda, heç bir bərabərliyi olmayan 8 bitlik bir xarakter ola bilər. Bu günə qədər hansı qərarı təyin etmək üçün heç bir yol yoxdur. Ancaq indiyə qədər bərabərlik ehtimalı aradan qaldırdıq. Beləliklə, bərabərliyin müəyyən edilməsi aradan qaldırılma prosesindən irəli gəlir.

Növbəti bayt yazılanlar birinciyə bənzərsə və hətta bərabərlik ehtimalı aradan qaldırırsa, bərabərliyi müəyyən etmək hələ də mümkün deyil. Bu vəziyyət qeyri-müəyyən olaraq davam edə bilər və nadir hallarda login adınızı dəyişdirməyinizə qədər giriş uğursuz olacaq. Əgər agetty 1 parity bitini taparsa, bu 8bitlik bir xarakterin yüksək sətri deyil, bir parite biti olduğunu varsayar. Beləliklə, istifadəçi adınızdakı meta-simvolları (yüksək bit dəsti) istifadə etməyin (məsələn, adınız ASCII-də olduğundan).

Bir "giriş loop" müxtəlif yollarla daxil ola bilər. Yalnız giriş adınız üçün tək bir məktub və ya iki yazdığınızı düşünün və sonra geri döndünüz. Bu məktublar parite aşkarlanması üçün kifayət deyilsə, parite aşkar edildikdən sonra giriş işləyir. Bəzən bu problem agetty ilk başladığında terminalı və / və ya bağlı olmayan halda olur.

Bu "giriş loopunda" sıxışdığınızdan bir çıxış yolu, getty giriş sorğusunu əldə etməyinizə qədər bir neçə dəfə qaytarma düyməsini vurmaqdır. Başqa bir yol isə bir dəqiqəliklə bir dəqiqə və ya bir qədər gözləməkdir. Getty giriş sorğusu getty proqramı ilə ekranda qoyulacaq və yenidən daxil olmağa cəhd edə bilərsiniz.

8 bit məlumat baytları (plus parity)

Təəssüf ki, agetty bu pariteyi müəyyən edə bilmir. 1999-cu ilin sonu etibarilə avqustun bərabərliyinin avtomatik aşkar edilməməsi üçün heç bir alternativi yoxdur və beləliklə, səhv bərabərlik aşkar ediləcəkdir. Nəticədə, giriş prosesi pozulacaq və parite səhv ediləcək. Beləliklə, parite ilə 8 bit məlumat baytlarını istifadə etməyə çalışmaq mümkün görünmür.

getty (getty_ps hissəsidir)

(Bunların böyük hissəsi Greg Hankins tərəfindən köhnə Serial-HOWTO'dan)
Bu getty üçün bir konfiqurasiya faylına girişlər qoymalı/ etc / inittab ünvanına bir giriş əlavə etməlidir . Terminaliniz üçün / etc / gettydefs konfiqurasiya faylına daxil etdiyiniz bəzi nümunə girişlər.

# 38400 bps Dumb Terminal girişi DT38400 # B38400 CS8 CLOCAL # B38400 SANE -STRIP CLOCAL # @ S @ L giriş: # DT38400 # 19200 bps Dumb Terminal giriş DT19200 # B19200 CS8 CLOCAL # B19200 SANE -STRIP CLOCAL # @ S @L giriş: # DT19200 # 9600 bps Dumb Terminal giriş DT9600 # B9600 CS8 CLOCAL # B9600 SANE -STRIP CLOCAL # @ S @L giriş: # DT9600

Qeyd edək ki, DT38400, DT19200, və s. Yalnız etiketlərdir və / etc / inittab-da istifadə etdiyiniz kimi olmalıdır.

İstəsəniz, giriş pankartında maraqlı şeyləri getty edə bilərsiniz. Mənim nümunələrimdə sistem adı və serial xətti yazılıb. Başqa şeylər əlavə edə bilərsiniz: [blockquote

kölgə = bəli] @B Mövcud (Bb göründüyü zaman qiymətləndirilir) bps dərəcəsi. @D Cari tarix, MM / DD / YY. @L Getty'ə bağlı olan serial xətti. @S Sistem adı. @ T Cari vaxt: HH: MM: SS (24 saat). @U Hal-hazırda imzalanmış istifadəçilərin sayı. Bu qeyri-null ut_name sahəsi olan / etc / utmp faylında olan giriş sayının bir sayıdır. @V VERSION dəyəri, əvəzetmə faylında verildiyi kimi. Bir '@' simvolunu göstərmək üçün '@ @' və ya '@@' istifadə edin.

/ Etc / gettydefs redaktə edildikdə , sözdiziminin doğru olduğunu doğrulayırsınız:

linux # getty -c / etc / gettydefs

Terminalinizin ( /etc/default/{uu}getty.ttyS N ya da /etc/conf.{uu}getty.ttyS N ) kimi əlavə olunduğu seri port üçün digər getty və ya uugetty konfiqurasiya faylının olmadığından əmin olun. , çünki bu, ehtimal ki, bir terminaldə getty qaçmağa müdaxilə edəcəkdir. Çıxarsa belə ziddiyyətli faylları çıxarın.

Serial portunda Getty- i (mühitiniz üçün doğru məlumatı - port, sürət və default terminal tipini əvəz etmək) / etc / inittab faylınızı redaktə edin:

S1: 23: respawn: / sbin / getty ttyS1 DT9600 vt100 içində linux # init q

Bu nöqtədə, terminalınızdakı bir giriş sorğusunu görməlisiniz. Terminalın diqqətini almaq üçün geri dönməlisiniz.

mgetty

"M" modemdir. Bu proqram əsasən modemlər üçündir və 2000-ci ilin ortalarından etibarən mətn terminalləri üçün istifadə etmək üçün yenidən yığma tələb olunur (donanım axını nəzarətindən istifadə etmirsiniz və adətən əl istehsalı kabel tələb edir). Birbaşa əlaqəli terminalların sənədləri üçün əlavənin "Doğrudan" bölməsinə baxın: mgetty.texi.

Terminal üçün konfiqurasiya nümunəsi üçün /etc/mgetty/mgetty.config saytının son xətlərinə baxın. Əgər "keçid-dtr yoxdur" deyirsinizsə, modeminiz var və qeyri-mövcud modemi sıfırlamak üçün boş bir cəhddə PC-də DTR pinini buraxın (düşünməyin) olduğunu düşünəcəkdir. Başqa gettys fərqli olaraq, mgetty bir terminal görəcəksiniz ki, bir terminal hər hansı bir düyməsinə vuruncaya qədər bir terminal özü əlavə deyil? bu baş verənə qədər üst və ya ps -terminal üçün. / Var / log / mgetty / içindəki günlükler, yalnız görmezden gelebileceğiniz modemlere aid bir neçə xəbərdarlıq mesajı gösterebilir.

/ Etc / inittab ünvanına qoyduğunuz sadə xəttin nümunəsi :

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