Линукс дээрх текст-терминалууд

14.1 Getty (/ etc / inittab -д ашигласан)

Getty-ийн танилцуулга

Цуваа порт (түүн уруу холбогдсон терминал дээр) нэвтрэх процессийг эхлүүлэхийн тулд компьютер эхлүүлэх (эсвэл ажиллуулах түвшингүүд шилжих үед) getty тушаалыг / etc / inittab файлд оруулна. Тушаалын мөрөөс getty-г ажиллуулах нь асуудал үүсгэж болзошгүй (хэрэв getty тушаал тушаалын мөрөөс ажиллавал: Програмууд яагаад гэдгийг хараарай). Getty нь TTY (терминал) авах боломжтой. Терминал бүр өөрийн getty тушаалыг шаарддаг. / Etc / inittab файл бүрт консолд зориулж ядаж нэг getty тушаал бий. Үүнийг олохын тулд getty тушаалуудыг түүний хажууд байгаа жинхэнэ терминалуудад зориулж байрлуулна. Энэ файл нь текст терминалуудын хувьд жишээ авдаг getty мөрүүдийг агуулж байгаа бөгөөд таны хийх ёстой зүйл бол үүнийг тайлбар болгох (тэргүүлэх # -г устгах) ба цөөн хэдэн нэмэлт өгөгдлүүдийг өөрчлөх явдал юм.

Зөвшөөрөгдөх нэмэлт өгөгдлүүд нь таны ашиглаж байгаа өгөгдөлээс хамаарна:
Шууд холболттой терминалуудад хамгийн тохиромжтой хоёр нь:

Модем дахь залгахад хамгийн тохиромжтой хоёр (шууд холбогдсон терминалуудаас зайлсхийх) нь:

Хэрэв та жинхэнэ текст-терминал ашиглахгүй бол энгийн хэллэг ашиглах хэрэгтэй. Ихэнх Линукс хэрэглэгчдийн эдгээрийн аль нэгийг ашиглан тэдгээрийн дэлгэц дээр ашигладаг:

Таны Линуксийн тархац текст-терминалуудын хувьд ps_getty эсвэл agetty-той хамт ирж болно. Зарим хуваарилалт нь нийлүүлдэггүй. Харамсалтай нь тэд үүнийг "getty" гэж нэрлэдэг бөгөөд ингэснээр / etc / inittab файлд хийгдсэн аргументуудаас ялгаатай байдаг. Debian нь agetty (util-linux багц) ашигладаг. RedHat болон Fedora ps_getty-г ашигладаг: ps_getty

Хамгийн сүүлд та getty файлаа тодорхойлохыг оролдохын тулд өөрийн гүйцэтгэгддэг кодыг (ихэвчлэн / sbin) шалгаж болох юм. ps_getty энэ кодод агуулагдсан / etc / gettydefs байна. Үүнийг хайхын тулд / sbin уруу ороод дараахийг бичнэ:
мөрүүд getty | grep getty
Хэрэв getty яг үнэндээ agetty байвал дээр юу ч байхгүй болно. Гэсэн хэдий ч та хөгшнийг бичиж тэмдэглэвэл:
getty -h
сонголтуудыг харуулах ёстой [-iLmw].

Хэрэв танд getty байхгүй бол бусад хуваарилалт болон харийн програмыг RPM болон Debian багцуудын хооронд хөрвүүлэхийг хүсч байгаагаа шалгаарай. Эх кодыг Getty Програм хангамжаас татан авч болно.

Хэрэв та модемийн хяналтын шугам хэрэглэдэггүй бол (жишээлбэл, дамжуулалт, хүлээн авах, түгээмэл дохио өгөхдөө хамгийн багадаа 3 дамжуулагчийг хэрэглэдэг) байвал getty үүнийг "орон нутгийн" тугийг ашиглан үүнийг мэдэгдэнэ. Энэ формат нь таны ашигладаг getty файлаас хамаарна.

Нэвтрүүлсний дараа Getty гарах (мөн хариулах боломжтой)

Нэвтрэснийхээ дараа та getty процесс ажиллахаа больсон гэдгийг "top", "ps -ax" эсвэл "ptree" гэж тэмдэглэх болно. Юу болсон бэ? Хэрэв таны бүрхүүл амь үрэгдсэн бол яагаад дахин сэргээнэ вэ? Яагаад гэвэл.

Та өөрийн хэрэглэгчийн нэрийг оруулсны дараа getty үүнийг аваад нэвтрэлтийн програмыг таны хэрэглэгчийн нэрийг дууддаг. Getty процесс нь нэвтрэлтийн процессоор солигддог. Нэвтрэх үйл явц нь таны нууц үгийг асууж шалгаад таны нууц үг файлд ямар ч процессыг зааж эхэлнэ. Энэ процесс нь ихэвчлэн bash бүрхүүл юм. Хэрэв тийм бол bash эхлүүлэх ба нэвтрэх процессыг орлох болно. Нэг процесс өөр нэгийг орлож болох бөгөөд bash бүрхүүл процесс анхнаасаа getty процессийг эхлүүлдэг гэдгийг санаарай. Үүний үр дагаварыг тайлбарлах болно.

Одоо / etc / inittab файлд getty нь амь үрэгдсэн бол (дахин эхлүүлэх) ёстой. Энэ нь гуйвуулга гэж нэрлэгддэг мөрний талаар өгүүлдэг. Гэхдээ хэрэв bash бүрхүүл (эсвэл нэвтрэн орох процесс) алагдсан бол getty respon (дахин ачаалах). Яагаад? Тиймээс нэвтрэлтийн процесс болон bash хоёулаа getty-г солих болон өвлөх явдал юм

* Хэрхэн индекс болох Текст терминал

Сигналын холболтууд нь өмнөх загваруудаасаа тогтдог. Үнэнийг ажиглавал орлуулах процесс анхны процессийн адил процесс ID байх болно гэдгийг та анзаарах болно. Ингэснээр bash нь процессийн ID дугаартай ижилхэн getty хэлбэрээр илэрдэг. Хэрэв bash алсан бол энэ нь getty -г алах (getty-ийг ажиллуулахгүй байгаа юм шиг боловч) яг л алга болдог. Энэ нь getty хариу үйлдэл хийдэг.

Нэг нь гарах үед тэр цуваа порт дээрх бүх процессууд нь bash бүрхүүлийг оролцуулан устгагдана. Энэ нь мөн хэрэв боломжтой бол (хэрэв ажиллах боломжтой бол) холболтын дохио нь цуваа порт уруу модемоор DCD хүчдэлийн дусалаар илгээгдэж болно. DCD-д нэвтрэн орох эсвэл унах нь getty respelning болно. Нэг гараар bash (эсвэл login) -ийг гараар устгахын тулд getty -ийг хүчээр тулж болох бөгөөд "top" эсвэл "kill" тушаалын хамтаар k товчийг дарах гэх мэт. Та үүнийг 9 дохиогоор (үүнийг үл тоомсорлож чадахгүй) устгах хэрэгтэй болно.

Хэрэв getty тушаал тушаалыг ажиллуулбал: Хөтөлбөр зогсох болно

Та голдуу getty тушаалыг / etc / inittab файлаас ажиллуулдаг бөгөөд тушаалын мөрөөс биш юм уу эсвэл терминал дээр ажиллаж байгаа зарим програмууд гэнэт зогссон (зогссон) байж болох юм. Яагаад (яагаад таны хувьд чухал биш бол дараагийн хэсэг рүү шилжих). Хэрэв та өөр нэг терминалын тушаалын мөрөөс ttyS1 гэж хэлэх гэж байгаа бол tty1 гэж хэлж болох юм бол tty1 нь ttyS1-г ажиллуулж байгаа ч гэсэн tty1 нь түүний "терминалын терминал" байх болно. Тиймээс энэ нь буруу хяналтын терминалтай байна. Гэхдээ inittab файл дотор эхэлсэн бол ttyS1 нь хяналтын терминалтай байх (зөв) байх болно.

Хяналтын терминал буруу байсан ч таны нэвтрэлт ttyS1 -г зүгээр ажиллуулдаг (та ttyS1-ийг tenty гэсэн хувьсагчийг өгсөн болохоор). Хяналтын терминал tty11 хэвээр байгаа ч стандарт оролт, гаралтыг ttyS1 гэж үздэг. TtyS1-д ажилладаг бусад програмууд нь энэ стандарт оролт / гаралтыг (ttyS1 уруу холбогдсон) бөгөөд бүгд зөв байна. Зарим програмууд нь өөрсдийн хяналтын терминалаас (tty1) унших нь алдаа гаргахад хүргэж магадгүй юм. Одоо tty1 нь эдгээр програмуудыг tty1 дээр далд ажиллаж байгаа гэж бодъё. Ингэснээр tty1 (ttyS1 байсан) уншиж өгөх оролдлого нь уншихыг оролдсон үйл явцыг зогсооход хүргэдэг. (Үндсэн процесс нь түүний хяналтын терминалаас уншиж болохгүй.). Та иймэрхүү мессежийг харж болно: " [1] + Татгалзсан " дэлгэц дээр. Энэ үедээ та буруу холболтоор дамжуулан тантай харилцах гэж байгаа процесстой холбогдож чадахгүй тул та гацаж байна. Мэдээжээс зугтахын тулд та өөр терминалд очиж процессыг устгаж болно.

agetty (getty нэртэй байж болно)

/ Etc / inittab файл дахь жишээ мөр:

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

S1 нь ttyS1-с байдаг. 23 гэсэн утга нь runty level 2 эсвэл 3-р түвшинг оруулахад ажиллуулдаг. Гэдэг нь хэрэв getty (эсвэл bash гэх мэт үүнийг оруулав) алж байвал getty автоматаар дахин эхлүүлэх болно. / sbin / getty тушаал нь getty тушаал юм. -L гэдэг нь Орон нутгийн (модемийн хяналтын дохионуудыг үл хайхрах) гэсэн үг юм. -h (жишээ дээр харуулаагүй) тоног төхөөрөмжийн урсгалын хяналтыг (stty crtscts шиг) боломжийг олгодог. 19200 нь зангилааны хурд юм. ttyS1 нь / dev / ttyS1 (MS-DOS дээр COM2) гэсэн үг. vt102 нь терминалын төрөл бөгөөд энэ нь getty нь орчны хувьсагчийн утгыг энэ утгыг тохируулах болно. Тохируулгын файл байхгүй байна. Getty файлыг засварласаны дараа "init q" гэж бичээд нэвтрэх үгээ харах болно.

Pargetty-ийн автоматаар илрүүлэх pariti-ийн асуудлууд

Agetty програм нь терминал доторх париитын тохиргоог автоматаар илрүүлэх оролдлогыг (parity гэх мэт) оролддог. 8-битийн өгөгдлийн байтыг нэмэхгүй 1-битийн паритыг дэмждэггүй. 8 битийн өгөгдөл байтыг (нэмэх паритет) үзээрэй. Хэрэв та parity-г тохируулахын тулд stty- г тохируулах юм бол agetty нь анхдагчаар өгөгдлийн бит юм шиг ирдэг. Энэ нь таны нэвтрэх нэрийг бичихдээ сүүлчийн битийн (магадгүй тэнцвэрийн бит) авах шаардлагатай учраас parity -г автоматаар илрүүлж болох юм. Тэгэхээр та тэнцвэрээ ашиглавал текст-терминал доторхийг онгойлгож, үүнийг автоматаар илрүүлж, компьютер дээрээ тохируулна уу. Хэрэв таны терминал нь хүлээн авсан parity хүлээн авсан гэдэгт итгэмжлэн оруулбал нэвтрэлт хүлээх мөр нь getty тушаалыг танихын тулд ямар нэгэн зүйлийг бичтэл хэвлэгдэх болно

тэнцвэр. Завсарлага хүлээх нь нэвтэрч орохыг оролдож буй хүмүүсийг зогсоох болно. Энэ бол таны хүссэн зүйл байж болно.

Паритетыг автоматаар илрүүлэхэд заримдаа асуудалтай байдаг. Энэ нь таны нэвтрэх нэрийг эхлээд оруулсны дараа agetty login програмыг эхлүүлэхийн тулд нэвтрэн ороодог . Харамсалтай нь нэвтрэлтийн програм parity-ийг олж чадахгүй тул getty програм нь parity-г тодорхойлж чадсангүй. Энэ нь бас. Хэрэв эхний нэвтрэх оролдлого амжилтгүй болбол нэвтрэн орсноор дахин оролдох болно. Эцэст нь нэвтрэхэд хэдэн удаа амжилтгүй оролдлого хийсний дараа (эсвэл хугацаа дууссаны дараа) agetty дахин эхлэх бөгөөд нэвтрэх дарааллыг дахин эхлүүлнэ. Getty дахин ажиллуулсны дараа хоёр дахь оролдлогоор parity -г олж болохыг мэдэж болох тул бүх зүйл зөв ажиллах болно.

Нөхцөл байдал алдагдсаны улмаас нэвтрэлтийн програм нь таны бичсэн зүйлээ зөв оруулж чаддаггүй, нэвтрэн орж чадахгүй байна. Хэрэв таны терминал хүлээн авсан parity хүлээн авсан бол та дэлгэцийн зургийг үргэлжлүүлэн харах болно. Хэрэв getty тушаалыг / etc / issue файлыг илрүүлэхээ больсон бол ихэвчлэн хүлээх мөрний өмнө дэлгэц уруу харуулдаг. Ингэснээр дэлгэц дээр илүүдэл үгс илэрдэг.

Эхний үсгээр яагаад тэнцвэрийг олж чаддаггүй вэ? Жишээ нь: 8-бит байтыг түүний тэнцвэрийн бит 0 (өндөр дарааллын бит) болон сондгой тоогоор 1-битээр илрүүлэх гэж бодъё. Ямар тэнцүү вэ? За, 1 битийн сондгой тоо гэдэг нь сондгой тэнцүү гэсэн үг юм. Гэхдээ энэ нь ердөө л тэнцвэргүй 8-битийн тэмдэгт байж болох юм. Хэн болохыг нь тодорхойлох хол зам байхгүй. Гэхдээ одоогоор бид тэнцвэргүй байдлаа арилгаж чадсан. Паритыг илрүүлэх нь ингэснээр устгах процесс явагддаг.

Хэрэв дараагийн байтыг бичсэн бол эхнийхтэй төстэй бөгөөд тэнцүү байх магадлалыг арилгадаг бол parity-ийг тодорхойлох боломжгүй хэвээр байна. Энэ байдал нь тодорхойгүй үргэлжилсээр байх бөгөөд ховор тохиолдлууд нь таны нэвтрэх нэрийг өөрчлөх хүртэл нэвтрэх үйлдэл амжилтгүй болно. Agetty нь parity bit 1-ийг олдог бол энэ нь 8 битийн тэмдэгтийн өндөр дарааллын бит биш тэнцүү байх болно гэж таамаглах болно. Тиймээс та өөрийн хэрэглэгчийн нэр дээр мета-тэмдэгтүүд (өндөр битийн багц) ашигладаггүй гэж үздэг (өөрөөр хэлбэл таны нэр ASCII байна).

Нэг нь "нэвтрэх давтамж" руу орох боломжтой. Жишээлбэл, та зөвхөн таны нэвтрэх нэр дээр нэг үсэг эсвэл хоёрыг бичээд дараа нь буцааж бичээрэй. Хэрэв эдгээр үсгүүд нь тэнцвэрт байдлыг хангахад хангалттай биш бол parity илрүүлэгдэхээс өмнө нэвтрэлтүүдийг ажиллуулах болно. Хэрэв та agetty эхлэх үед терминалд холбогдсон ба / эсвэл холбогдсонгүй бол энэ асуудал тохиолддог.

Хэрэв та энэ "нэвтрэх хүрд" -д гацаж байвал getty нэвтрэлт хүлээх мөр хүлээн авах хүртэл буцах түлхүүр хэд хэдэн удаа цохих явдал юм. Өөр нэг арга бол цаг хугацаа өнгөрөхөд нэг минут хүлээх явдал юм. Дараа нь getty нэвтрэлт хүлээх мөр нь getty програмаар дэлгэц дээр тавих болно. Та дахин нэвтрэхэд дахин оролдож болно.

8 битийн өгөгдлийн байт (нэмэх паритет)

Харамсалтай нь, Agetty энэ харьцааг илрүүлж чадахгүй байна. 1999 оны сүүл гэхэд parity-ийн автомат илрүүлэлтийг тасалдуулах боломж байхгүй бөгөөд алдаа тэнцүү эсэхийг илрүүлэх болно. Үүний үр дүнд нэвтрэх процесс хоцрогдож parity нь буруу тохируулагдах болно. Тэгэхээр 8-битийн өгөгдөл байтыг parity бүхий ашиглахыг оролдох нь боломжгүй юм.

getty (getty_ps-ийн хэсэг)

(Үүний ихэнх нь хуучин Serial-HOWTO-аас Грег Хэнкинс)
Энэ getty нь оруулгуудыг тохиргооны файлдаа хоёуланг нь оруулах хэрэгтэй бөгөөд / etc / inittab файлд оруулга нэмэх хэрэгтэй. / Etc / gettydefs тохиргооны файлд оруулсан терминалаа ашиглах зарим жишээг энд орууллаа .

# 38400 bps Dumb Terminal оруулга DT38400 # B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL # @ S @L login: # DT38400 # 19200 bps Dumb терминал оруулга DT19200 # B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL # @ S @L login: # DT19200 # 9600 bps Dumb Terminal оруулга DT9600 # B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL # @ S @L login: # DT9600

DT38400, DT19200, гэх мэт нь зөвхөн хаяг / шошгонууд бөгөөд / etc / inittab- д хэрэглэгддэг байх ёстойг анхаарна уу.

Хэрэв та хүсэж байгаа бол login нэвтрэх банн дээр getty хэвлэх сонирхолтой зүйлсийг хийж чадна. Миний жишээн дээр системийн нэр, цуваа шугам хэвлэгддэг. Та бусад зүйлсийг нэмж болно: [blockquote

сүүдэр = тийм ээ] @ B Одоогийн (@B харуулсан үед үнэлэгдсэн) bps хувь. @D Одоогийн огноо, MM / DD / YY. @L Getty холбогдсон цуваа кабель. @S Системийн нэр. @T Одоогийн цаг, HH: MM: SS (24 цаг). @U Одоо нэвтэрсэн хэрэглэгчдийн тоо. Энэ нь null / оролдлогын талбартай / etc / utmp файл дахь оруулгуудын тоог оруулна. @V Анхдагч файлд өгсөн VERSION утга. '@' Тэмдэгтийг харуулахын тулд '@ @' эсвэл '@@' аль нэгийг ашиглана уу.

/ Etc / gettydefs файлыг засаж дууссаны дараа синтакс зөв хийж байгааг шалгаж болно:

linux # getty -c / etc / gettydefs

( /etc/default/{uu}getty.ttyS N эсвэл /etc/conf.{uu}getty.ttyS N зэрэг ) залгагдсан цуваа портод зориулж getty эсвэл uugetty тохиргооны файл байхг й эсэхийг шалгаарай. учир нь энэ нь терминал дээр getty -г ажиллуулахад нөлөөлөх болно. Хэрвээ гарвал эдгээр зөрчилтэй файлуудыг устга.

Таны цуваа порт дээр getty -г ажиллуулахын тулд өөрийн / etc / inittab файлыг засварлана (өөрийн орчны порт, хурд, анхдагч терминалийн төрөл).

S1: 23: respawn: / sbin / getty ttyS1 DT9600 vt100 үүн дотор linux # init q

Энэ үед та өөрийн терминал дээр нэвтрэлт хүлээх мөрийг харах ёстой. Та буцахын тулд терминалын анхаарлыг татаж авах хэрэгтэй байж магадгүй.

mgetty

"М" нь модемийг илэрхийлдэг. Энэ програм нь голчлон модемуудын хувьд бөгөөд 2000 оны дундуур текст-терминалуудад ашиглахын тулд дахин ашиглахыг шаардах болно (тоног төхөөрөмжийн урсгалын хяналтыг ашигладаггүй бөгөөд гар аргаар хийсэн кабель шаарддаг). Шууд холбогдсон терминалуудын баримтжуулалтыг гарын авлагын "Шууд" хэсгээс үзнэ үү: mgetty.texi.

/etc/mgetty/mgetty.config-ийн сүүлийн мөрүүдийг терминал дээр тохируулах жишээг хараарай . Хэрэв та "toggle-dtr no" гэж хэлээгүй л бол та модемтой бөгөөд PC-ийн DTR пин (байхгүй) модем байхгүй болж дахин тохируулахыг оролдох болно. Бусад gettys-ийн хувьд ялгаатай нь mgetty нь терминал дээр хэн нэгэн түлхүүрийг ортол терминал уруу залгаж орохгүй бөгөөд та үүнийг харах болно. Энэ үед бол терминал дээр top буюу ps нь. / Var / log / mgetty / дахь бүртгэлүүд нь таны хайхад хэрэггүй модемд хамаатай анхааруулах хэд хэдэн зурвасуудыг харуулж болох юм.

/ Etc / inittab -д хийсэн энгийн мөрийн жишээг энд үзүүлэв:

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