Mgetty

 

Mgetty je program za unix operacijske sustave koji služi za spajanje  modemom ili faks uređajem na računalo. ( Za rad sa faks-om služi dio paketa, sendfaks, ali ovdje neće biti govora o tome). Mgetty radi tako da kad je instaliran, stalno ˝osluškuje˝ serijski port na koji je priključen modem i u slučaju poziva ('RING') javlja se , uspostavlja vezu i omogućava korisniku da se logira na naše računalo, nakon čega pokreće odrađeni program ili slićno, već prema našem izboru. Također brine o tome da nam nitko ˝ne upadne u razgovor˝ tako što zabranjuje korištenje serijskog porta od strane drugih programa.

Ptrogram nam omogućava korištenje modemske linije za spajanje na racunalo, bez zadržavanja ili onemogućavanja izlaznih poziva.

 

Kompajliranje i instalacija paketa bi trebala biti priilično jednostavna. Program možemo skinuti sa stranice  ftp://alpha.greenie.net/pub/mgetty/source/1.0/mgetty+sendfax-1.0.0.tar.gz i kopirati ga u direktorij /usr/local/sbin. Potrebno je kopirati 'policy.h-dist' u 'policy.h' i urediti tu datoteku prema vlastitim zahtjevima, slijedeći uputstva napisana u samoj datoteci. Naravno, većina defaultnih vrijednosti bi trebala biti u redu.

Nakon toga potrebno je editirati '/etc/inittab' tako da mu se za našu upotrebu doda redak:

 

S1:23:respawn:/usr/local/sbin/mgetty -x 3 ttyS1

 

Upravo taj redak je uzrok pokretanja mgetty-a prilikom svakog uključivanja računala. Ovako uređen redak pretpostavlja da je modem spojen na port ttyS1, da se program nalazi u direktoriju  /usr/local/sbin i neke druge, možda manje važne stvari objašnjene u daljnjem tekstu.

Zatim bi trebalo editirati 'Makefile', da se definiraju instalacijski putevi do sistemski ovisnih datoteka i neke druge stvari (objasnjeno tamo) ali meni su radile defaultne vrijednosti. Naredba 'make' bi trebala izgraditi program i dokumentaciju, dok ćemo samu instalaciju napraviti naredbom 'make install'. Ako se kompiler žali na #ident linije, treba pokrenuti 'make noindent', koji ce se pobrinuti za to (no vecina program će raditi i sa tim greškama). Samim time proces instalacije je završen. Ako vas ništa više ne zanima, potrebno je samo resetirati računalo i pokušati se spojiti modemom na njega (npr. pomoću programa minicom pokušati uspostaviti vezu). To bi trebalo raditi, meni je radilo. Ako vas ipak zanima više, nastavite čitati. Ako ne, sretno vam bilo!

 

 

                                    

        Kako radi mgetty?

 

Da bi objasnili princip rada, pretpostavimo da mgetty treba kontrolirati modem spojen na serijsku liniju npr. '/dev/ttyS1'.

Kad se računalo digne, operacijski sustav pokreće init process , koji je odgovoran za to da getty-i rade na namjenjenim ulazno/izlaznim jedinicama npr. virtualni terminali, serijske linije i modemi. Zatim init čita konfiguracijski file '/etc/inittab' koji kaže da bi liniju '/dev/ttyS1' trebao kontrolirati mgetty.

Kad se mgetty starta, on prvo gleda dali postoji valjani 'lock' file za tu liniju. Ako postoji, to znaci da je port u upotrebi i mgetty će pričekati da se linija oslobodi. Čudni 'lock' file-ovi se ignoriraju.

Postoje dvije mogucnosti kada se podaci pojave na serijskom portu. Ili je neki drugi program pokušao zvati van, ili je stigao 'RING' poslan od modema. U prvom slučaju, mgetty neće dirati port. To će sve biti u redu ako je program generirao valjani lock file. Mgetty će pričekati da lock nestane i zatim prestati s radom. To će uzrokovati time da init počne novi mgetty process koji će ćekati novi poziv.

U protivnom slučaju mgetty će pretpostaviti da telefon zvoni, zapisat će lock file i čitati podatke sa serije. Ako pronadje 'RING' javlja se tako da posalje 'ATA' i zatim čeka na 'CONNECT'. Ako se radi o modemu, ispisuje se sadžaj file-a '/etc/issue' i prikazuje se login prompt. Jednom kad je primio naš login, mgetty poziva /bin/login i prepušta mu posao oko logiranja. 'login' će pročitati password i zatim pokrenuti user login sheell ili bilo što drugo. Također će postaviti i lock, tako da drugi programi nemogu  koristiti modem. (Ako koristimo 'login.config' onda mgetty može pozvati i druge programe osim /bin/login).

 

Uređivanje '/etc/inittab'

 

Tipičan `inittab' za mgetty izgleda ovako:

 
<tt>:rlevel:<respawn|off>:/usr/local/sbin/mgetty [options] <device>

 

'tt' je kratica od imena uređaja (tj. serije za nas), koje koristi init i who za internu upotrebu, nešto poput ' S0 ' or ' 2A '

 

`rlevel' specificira razinu  na kjoj se odvija proces (runlevel) obično '23'

 

<respawn|off> govori dali je entry (odnosno sam mgetty) aktivan ili ne

 

/usr/local/sbin/mgetty definira put do programa koji cemo pokrenuti (mgetty)

`-x <level>' postavlja razinu debugiranja. To je vrlo bitno za dijagnozu problema ako se pojave, jer će na višim razinama mgetty zapisivati detaljne informacije o poduzetim

`-s <speed>' postavlja brzinu prijenosa podataka na portu. Ako nije specificirano, koristi se default iz `policy.h', (podatak DEFAULT_PORTSPEED)  će se koristiti

`-k <space>' postavlja minimalan broj kbyte –a koji se zahtijevaju u ulaznom FAX spool direktoriju

`-m 'expect send ...' postavlja sekvencu za inicijalizaciju modema `-r' za direktne linije (modemi ne razgovaraju)

`-p <login prompt>' definira login prompt

`-n <rings>' postavlja očekivani broj RING poruka prije nego što će poslati ATA modemu. Defaultno je to jedan RING.

`-R <sec>'omogučuje mgetty-u, a to znači da onaj ko zove mora poklopiti i nazvati opet nakon <sec> sekundi..

`-i `/etc/issue' definira tekst koji će se ispisati kad se netko logira

`-S `<fax_document>' specificira dokument koji će biti poslan na faks . Nas to ne zanima.

Za naš slučaj  `/etc/inittab' bi izgledao ovako:

S1:23:respawn:/usr/local/sbin/mgetty -x 3 tty2a

Za detaljniji opis svih opcija trebalo bi pogledati `mgetty(1)' man stranice.

       

 

 

Runtime konfiguracija

 

Mgetty će vrlo vjerojatno raditi jako dobro sa defaultnim vrijednostima, ali ga to čini jako nefleksibilnim, pogotovo ako koristimo različite tipove modema. Te default-ne vrijednosti mogu biti promjinjene i iz komandne linije, ali je to vrlo napraktično zato jer to čini `/etc/inittab' vrlo  velikim i neprikladnim za čitanje.

Ako kompajliramo mgetty sa config file podrškom (definiramo MGETTY_CONFIG u `policy.h'), on će koristiti konfiguracijski file koji će učiniti dinamički setup puno lakšim. Taj je file obični lociran u `/usr/local/etc/mgetty+sendfax/' i zove se `mgetty.config'. Format mu je vrlo jednostavan. Svaki red sadrži jednu ključnu riječ i moguće argumente za nju, odvojene razmakom. Dozvljeni su prazni redovi i linije sa komentarima. Za naprednije korisnike, način editiranja dostupan je na adresi http://www.leo.org/~doering/mgetty/mgetty_16.html#SEC16 

i otvara pregršt novih mogućnosti korištenja programa.

 

Za sve nejasnoće prilikom korištenja mgetty-a dobro je pogledati stranicu sa detaljnijim uputstvima, i odgovorima na često postavljena pitanja (FAQ).

http://www.leo.org/~doering/mgetty/mgetty_toc.html