Teks-Terminal ing Linux

14.1 Getty (digunakake ing / etc / inittab)

Pambuka kanggo Getty

Kanggo nggoleki proses mlebu ing port serial (lan terminal sing disambungake) nalika komputer diwiwiti (utawa ngalih level run), perintah getty kudu dilebokake ing file / etc / inittab. Running getty saka baris printah bisa nyebabake masalah (ndeleng Yen getty mbukak saka baris perintah: Program njaluk mandegake kanggo ndeleng apa sebabe). Getty entuk sawijining TTY (terminal) arep. Saben terminal perlu mandheg dhewe. Ana uga sethithik siji printah getty kanggo console ing saben file / etc / inittab. Goleki lan ketikake perintah getty kanggo terminal nyata ing jejere. Berkas iki bisa uga ngemot garis getty kanggo terminal teks sing ditulis supaya kabeh sing kudu dilakoni yaiku uncomment (mbusak leading leading) lan ngganti argumen sawetara.

Argumentasi sing diwenehake gumantung marang pituwas sing digunakake:
Loro panggonan paling apik kanggo terminal sing nyambung langsung yaiku:

Loro pangguna sing paling apik kanggo modem dial-up (supaya ora bisa nyambungake terminal):

Gampang kanggo nggunakake yen sampeyan ora nggunakake terminal teks nyata. Paling pangguna Linux migunakake salah sijine ing monitor:

Distribusi Linux sampeyan bisa teka nganggo ps_getty utawa banget kanggo teks-terminal. Sawetara distribusi ora ana. Sayange, padha kerep mung ngarani "getty" dadi sampeyan kudu nemtokake manawa sampeyan duwe argumen sing ditrapake sawise / etc / inittab beda-beda. Debian migunakake aget (ing paket util-linux). RedHat lan Fedora migunakake ps_getty ing: ps_getty

Minangka pilihan pungkasan kanggo nyoba kanggo nemtokake apa sampeyan duwe, sampeyan bisa mriksa kode eksekusi (biasane ing / sbin). ps_getty nduweni / etc / gettydefs ditempelake ing kode iki. Kanggo nelusuri, menyang / sbin lan ketik:
strings getty | grep getty
Yen getty pancen apik, ing ndhuwur ora ana apa-apa. Nanging yen sampeyan wis ngetik banget:
getty -h
kudu nuduhaké pilihan [-iLmw].

Yen sampeyan ora duwe getty sampeyan pengin mriksa distribusi liya lan program asing kanggo ngonversi paket RPM lan Debian. Kode sumber bisa didownload saka Getty Software.

Yen sampeyan ora nggunakake garis kontrol modem (contone, yen sampeyan mung nggunakake nomer minimum 3 konduktor: ngirim, nampa, lan lemah sinyal umum) sampeyan kudu ngidini getty ngerti iki kanthi nggunakake gendera "lokal". Format iki gumantung marang apa sing digunakake.

Getty metu sawise login (lan bisa ngalahake)

Sawise sampeyan mlebu, sampeyan bakal weruh (kanthi nggunakake "ndhuwur", "ps -ax", utawa "ptree") yen proses getty ora mlaku maneh. Apa sing kedadeyan? Kenging punapa kok dugi malih malih manawi shell sampeyan dipateni? Punika sababipun.

Sawise sampeyan ngetik ing jeneng pangguna, getty njupuk lan nelpon program login kasebut jeneng panganggo sampeyan. Proses getty diganti karo proses mlebu. Proses mlebu log njaluk sandi, mriksa lan wiwit proses apa wae sing ditemtokake ing file sandhi. Proses iki asring cangkang bash. Yen mangkono, bash wiwit lan ngganti proses mlebu. Elinga yen proses siji ngganti liyane lan proses cangkang bash wiwitane diwiwiti minangka proses getty. Ing ngisor iki implikasi kasebut.

Saiki ing berkas / etc / inittab, getty mestine kanggo respawn (urip maneh) yen dipateni. Iku ngandika supaya ing baris sing telpon getty. Nanging yen cangkang bash (utawa proses mlebu) wis matèni, getty respawn (diwiwiti maneh). Kenapa? Inggih, proses login lan bash minangka pengganti kanggo getty lan warisan

* Terminal teks How-To Index

koneksi sinyal didegake dening para predator. Jebule yen sampeyan mirsani rincian sampeyan bakal weruh yen proses panggantos bakal duwe ID proses sing padha minangka proses asli. Mangkono bash minangka sort of getty ing nyamarake kanthi nomer ID proses sing padha. Yen bash wis matèni kaya wae getty mateni (sanajan getty ora mlaku maneh). Iki bakal nggawe respawn.

Nalika salah sawijining log metu, kabeh proses ing port serial kasebut mateni kalebu shell bash. Iki uga bisa kedadeyan (yen wis aktif) yen sinyal hangup dikirim menyang port serial kanthi drop of voltage DCD dening modem. Salah sijine logout utawa drop in DCD bakal ngasilake respawn. Siji bisa ngalahake getty kanggo ngalahake kanthi manual nyebabake bash (utawa mlebu) kanthi ngetokake tombol k, etc nalika ing "ndhuwur" utawa karo "mateni" printah. Sampeyan mesthine kudu mateni karo sinyal 9 (sing ora bisa diilangi).

Yen getty mbukak saka baris perintah: Program bisa mandheg

Sampeyan kudu nggoleki getty saka jero / etc / inittab lan ora saka baris perintah utawa liya sawetara program sing mlaku ing terminal bisa tanpa sengaja digantung (mandheg). Mulane (lunga menyang bagean sabanjure yen kok ora penting sampeyan). Yen sampeyan miwiti getty kanggo ngomong ttyS1 saka baris perintah saka terminal liyane, ucapake tty1, banjur bakal duwe tty1 minangka "terminal ngontrol" sanajan terminal nyata sing dioperasikake yaiku ttyS1. Mangkono iku ana terminal pengontrol sing salah. Nanging yen diwiwiti nang file inittab maka bakal duwe ttyS1 minangka terminal kontrol (bener).

Sanajan terminal pangontrol salah, mlebu ing ttyS1 kerjane apik (amarga sampeyan menehi ttyS1 minangka pitakonan kanggo getty). Input lan output standar disetel menyang ttyS1 sanajan terminal kontrol tetep tty11. Program liyane sing mlaku ing ttyS1 bisa diwenehi standar input / output (sing disambungake karo ttyS1) lan kabeh iku OK. Nanging sawetara program bisa nggawe kesalahan maca saka terminal kontrol (tty1) sing salah. Saiki, tty1 bisa uga mikir yen program-program kasebut di-run ing latar mburi dening tty1 supaya upaya maca saka tty1 (mesthine wis ttyS1) ngasilake proses sing nyoba maca. (Proses latar mburi ora diijini maca saka terminal kontrole.). Sampeyan bisa ndeleng pesen kayata: " [1] + Berhenti " ing layar. Ing titik iki sampeyan wis macet amarga sampeyan ora bisa sesambungan karo proses sing nyoba kanggo komunikasi karo sampeyan liwat terminal salah. Mesthi mlayu saka iki sampeyan bisa pindhah menyang terminal liyane lan mateni proses kasebut, lan liya-liyane.

agetty (bisa uga jeneng getty)

Baris conto ing / etc / inittab:

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

S1 saka ttyS1. 23 tegese getty diluncurake nalika ngetik tingkat 2 utawa 3. respawn tegese yen ifty (utawa proses sing diganti kaya bash) bakal mati, getty bakal otomatis diwiwiti (respawn) maneh. / sbin / getty iku perintah getty. Ing -L tegese Local (ora dianggep sinyal kontrol modem). -h (ora ditampilake ing conto) mbisakake kontrol aliran hardware (kaya crtsct stty). 19200 yaiku tingkat baud. ttyS1 tegese / dev / ttyS1 (COM2 ing MS-DOS). vt102 minangka jinis terminal lan getty iki bakal ngeset variabel lingkungan TERM marang nilai kasebut. Ora ana file konfigurasi. Ketik "init q" ing baris perintah sawise nyunting getty lan sampeyan kudu ndeleng pituduh login.

Auto-deteksi masalah pariti Agetty

Program agetty bakal nyoba otomatis ndeteksi paritas kasebut ing jero terminal (kalebu ora ana paritas). Ora ndhukung bita data 8-bit plus pita 1-bit. Waca bita data 8-bit (plus paritas). Yen sampeyan nggunakake stty kanggo nyetel parity, agetty bakal kanthi otomatis unset iku wiwit pisanan ing kepengine sing keseimbangane teka liwat minangka yen ana data bit. Iki amarga kudu mbutuhake bit pungkasan (mbok menawa dicokot parity) nalika sampeyan ngetik jeneng login sampeyan supaya bisa ndeteksi otomatis keseimbangane. Mangkono manawa sampeyan nggunakake keseimbangane, mung bisa disimpen ing terminal teks lan supaya bisa ngegetake lan nemtokake kanthi otomatis ing komputer. Yen terminal sampeyan ndhukung paritas sing ditampa, pituduh mlebu bakal katon kacepetan nganti sampeyan ngetik sawijining soko supaya getty bisa ndeteksi

keseimbangn. Panjaluk sing kacau bakal ngalangi pengunjung, lan liya-liyane saka nyoba mlebu. Sing bisa dadi mung apa sing dikarepake.

Kadhangkala ana masalah karo deteksi otomatis paritas. Mengkono amarga sawise sampeyan ngetik dhisik jeneng login, sampeyan bakal miwiti program mlebu kanggo ngrampungake nglebokake sampeyan. Sayange, program mlebu ora bisa ndeteksi paritas supaya yen program getty gagal nemtokake paritas banjur mlebu ora bakal bisa nemtokake iku uga. Yen upaya login kapisan gagal, mlebu log bakal ngidini sampeyan nyoba maneh, lan sapiturute (kabeh karo paritas sing salah). Pungkasan, sawise sawetara usaha gagal mlebu (utawa sawise wektu entek) bakal katon maneh lan miwiti urutan login kabeh maneh. Sawise getty mlaku maneh, bisa uga bisa ndeteksi keseimbangane ing nyoba liya supaya kabeh bisa uga OK.

Kanthi keseimbangan salah, program login ora bisa diwaca kanthi bener apa sing sampeyan ketik lan sampeyan ora bisa mlebu. Yen terminal ndhukung paritas sing ditampa, sampeyan bakal terus ndeleng layar kacepetan. Yen getty gagal ndeteksi paritas lan file / etc / issue biasane dicelupake menyang layar sadurungé sadurunge pituduh, supaya tembung sing luwih kacepetan bisa katon ing layar.

Apa ora bisa ngetung parity kanthi aksara pisanan diketik? Contone: Contone, ndeteksi bit byte 8 karo bit parity 0 (bit order) lan nomer ganjil 1-bit. Apa keseimbangan? Inggih, nomer ganjil 1 bit nggadahi yen keseimbangn ganjil. Nanging bisa uga mung dadi karakter 8-bit tanpa paritas. Ora ana cara sing bisa ditemtokake. Nanging nganti saiki kita wis ngilangi kemungkinan saka keseimbangan. Deteksi paritas kasebut nerusake kanthi proses pambatalan.

Yen typing sabanjure diketik padha karo sing pisanan lan uga mung ngilangi kamungkinan saka keseimbangan, iku isih mokal kanggo nemtokake keseimbangn. Kahanan iki bisa terus tanpa wates lan ing kasus-kasus langka bakal gagal nganti sampeyan ngganti jeneng login. Yen agetty nemokake batesan keseimbangane 1 bakal nganggep yen iki minangka keseimbangan lan ora dicokot dhuwur saka karakter 8-bit. Mulane, nganggep sampeyan ora nganggo meta-karakter (set bit dhuwur) ing jeneng pangguna (misale jeneng sampeyan ana ing ASCII).

Siji bisa njaluk menyang "daur ulang log" ing macem-macem cara. Upaminipun sampeyan mung ngetik huruf siji utawa loro kanggo jeneng login banjur pencet bali. Yen huruf kasebut ora cukup kanggo deteksi paritas, banjur login mlebu sadurunge paritas wis dideteksi. Kadhangkala masalah iki kedadeyan yen sampeyan ora duwe terminal lan / utawa disambungake nalika agetty diwiwiti.

Yen sampeyan njaluk macet ing "mlebu log" cara kasebut tekan tombol bali kaping pirang-pirang nganti sampeyan njaluk getty login login. Cara liya yaiku mung ngenteni menit utawa luwih kanggo wektu entek. Banjur pituduh mlebu log bakal dilebokake ing layar dening program getty lan sampeyan bisa nyoba maneh kanggo mlebu.

Bita data 8-bit (plus paritas)

Sayange, cetha ora bisa nemokake paritas iki. Ing pungkasan taun 1999, ora ana pilihan kanggo mateni otomatis-deteksi paritas lan kanthi mangkono bakal nemokake paritas sing ora bener. Asilipun punika proses mlebet badhe kedados malih lan paritas badhe nyetel salah. Mangkono iku ora samesthine kanggo nyoba nggunakake bita 8-bit data kanthi paritas.

getty (bagean getty_ps)

(Sebagéan gedhe saka Serial-HOWTO lawas dening Greg Hankins)
Kanggo njaluk siji iki, sampeyan kudu nggawe entri ing file konfigurasi lan nambah entri ing / etc / inittab . Ing ngisor iki sawetara umpamane entri sing digunakake kanggo terminal sampeyan sijine menyang file konfigurasi / etc / gettydefs .

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

Elinga yen DT38400, DT19200, lan liya-liyane mung label lan kudu padha karo sing sampeyan gunakake ing / etc / inittab .

Yen sampeyan pengin, sampeyan bisa nggawe print artikel menarik ing spanduk mlebu. Ing conto, aku duwe jeneng sistem lan baris serial dicithak. Sampeyan bisa nambah barang-barang liyane: [blockquote

iyub = ya] @B Saiki (dievaluasi ing wektu @ B katon) tingkat bps. @D Tanggal saiki, ing MM / DD / YY. @L Baris serial kang getty dilampirake. @S Jeneng sistem. @T Wektu saiki, ing HH: MM: SS (24 jam). @ U Jumlah pangguna sing saiki wis mlebu. Iki minangka count saka nomer entri ing file / etc / utmp sing duwe kolom non-null ut_name. @V Nilai VERSION, minangka diwenehi ing file standar. Kanggo nampilake karakter '@', gunakake salah siji '@ @' utawa '@@'.

Yen wis rampung nyunting / etc / gettydefs , sampeyan bisa verifikasi manawa sintaks wis bener kanthi cara:

linux # getty -c / etc / gettydefs

Priksa manawa ora ana berkas getty utawa uugetty config kanggo port serial terminal sing ditandhani kayata ( /etc/default/{uu}getty.ttyS N utawa /etc/conf.{uu}getty.ttyS N ) , amarga iki mbokmenawa bisa ngganggu getty ing terminal. Mbusak file konflik kuwi yen padha metu.

Ngowahi berkas / etc / inittab kanggo mbukak getty ing port serial (ngganti informasi sing bener kanggo lingkungan sampeyan - port, kacepetan, lan tipe terminal standar):

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

Ing titik iki, sampeyan kudu ndeleng pituduh login ing terminal sampeyan. Sampeyan bisa uga kudu nyekel bali kanggo entuk kawigaten terminal.

mgetty

"M" tegese modem. Program iki utamane kanggo modem lan ing pertengahan 2000 bakal mbutuhake kompilasi kanggo nggunakake kanggo terminal-teks (kajaba sampeyan nggunakake kontrol aliran hardware - lan sing biasane mbutuhake kabel digawe tangan). Kanggo dokumentasi kanggo terminal sing nyambung langsung ndeleng "Langsung" bagean manual: mgetty.texi.

Deleng garis pungkasan /etc/mgetty/mgetty.config kanggo conto konfigurasi kanggo terminal. Yen sampeyan ora ngelingi "toggle-dtr no" bakal mikir yen sampeyan duwe modem lan nyelehake (negate) PIN DTR ing PC kanthi nyoba ngreset modem sing ora ana. Benten karo gettys liyane, mgetty ora bakal nempelake dhewe menyang terminal nganti tekan wong tombol sembarang terminal supaya sampeyan bisa ndeleng? kanggo terminal ing ndhuwur utawa PS nganti iki kedadeyan. Log ing / var / log / mgetty / bisa nuduhake pesen bebaya sawetara sing mung ditrapake kanggo modem sing bisa ditolak.

Punika conto baris prasaja sampeyan lebokna ing / etc / inittab:

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