getty(1) | getty(1) |
getty - uçbirim kipini, hızını ve hat disiplinini ayarlar
/etc/getty [-d öntanımlı_dosya] [-a] [-h] [-H kapama_süresi] [-t zamanaşımı] [-w dizge] hat [hız [tür [disiplin]]] /etc/getty -c gettydefs_dosyası
getty, sistem tarafından kullanıcının bağlanmasını sağlamak için kullanılan üç uygulamadan ikincisidir (init(1), getty(1) ve login(1)). getty, init(1) tarafından çağrılır:
getty'nin takip ettiği yol şöyle
açıklanabilir: İlk önce kendi komut
satırını çözümler, şayet
herhangi bir hata yok ise, doğru çalışma
zamanı değerlerini bulabilmek için
öntanımlı dosyaları (şayet FSSTND
seçeneği ile derlenmişse /etc/conf.getty) incelemeye
başlar. Normalde bu dosya /etc/conf.getty'dir. Komut
satırından verilen değerler bu
öntanımlı dosyadaki (-d
öntanımlı_dosya seçeneği ile
başka bir dosya belirtilebilir) değerlere göre
önceliklidir. Daha sonra okuma ve yazma için bir hat
açar ve stdio tamponlamasını kapatır.
Şayet bir ilklendirme tanımlı ise, onu
başlatır.
(Ayrıntılar için HATTIN
İLKLENDİRİLMESİ
bölümüne bakınız).
İlklendirmeden sonra, hat kapatılır ve tekrar açılır. Bu sefer hat engellenebilen kipte açılır ve böylece aygıt serbest hareket edemez hale gelir. Taşıyıcı sinyalin tespit edilmesi hattın açılmasını sağlar.
Sonra, getty bir önbilgi (genellikle /etc/issue içindeki metin) ve kullanıcı ismi istemini basar. Son olarak, kullanıcının girdiği ismi okur ve login(1)'i kullanıcı ismini argüman olarak kullanarak çağırır. Bu ismi okuma işlemi esnasında, getty kullanılan uçbirimin hızını sisteme uyarlamaya çalışır ve kullanıcının bağlantı yordamında kullanılacak uçbirim parametrelerini (ayrıntılar için termio(7)'e bakınız) ayarlar.
getty tarafından kullanılan tty aygıtı hat argümanından saptanır. Getty bağlanacağı aygıtın ismi olarak /dev/hat dizgesini kullanır. Getty -h seçeneği ile çalıştırılmamış (veya öntanımlı dosyada HANGUP=NO belirtilmemiş) ise hızı sıfırlayarak hattı kapanmaya zorlayacaktır. Hattın askıda kalma süresini -H seçeneğine saniye cinsinden sayı belirterek (veya öntanımlı dosyada HANGUPSECS=kapamasüresi belirterek) ayarlayabilirsiniz. -r seçeneği ile gecikme vererek (veya öntanımlı dosyada WAITCHAR=YES ve DELAY=gecikme belirterek) getty'nin hattan tek bir karakter girilmesini beklemesi sağlanabilir ve bu karakter girildikten sonra işleme devam etmeden önce belirtilen saniye kadar daha bekler. Gecikme istenmiyorsa, -r0 kullanın. -w seçeneği ile dizge (veya öntanımlı dosyada WAITFOR=dizge) belirterek getty'nin bu dizgeyi hattan beklemesi sağlanabilir. -t seçeneğine zamanaşımı (veya öntanımlı dosyada TIMEOUT=zamanaşımı) belirtilerek, kullanıcı ismi için istem gösterildikten sonra belirtilmiş zaman içinde bir kullanıcı ismi girilmez veya bu süre içinde doğru kullanıcı ismi girilmez ise getty'nin çıkması sağlanabilir.
Hız argümanı /etc/gettydefs (ayrıntılar için gettydefs(4)kılavuzuna bakınız) dosyası içindeki girdiye bir etikettir. Bu girdi getty'nin tty ayarlarında başlangıç hızını, kullanıcının ismini girerken bağlantı hızı ile hızın yanlış olması durumunda kullanıcının müdahale etmesini sağlayacak başka bir girdiye gösterici olacak hızı tanımlar. Bu işlem <break> karakteri (aslında bir karakter dizisidir) göndererek yapılır. Belirli şartlar altında, bir CR (Satırbaşı karakteri) de aynı işi yapacaktır. Bu genellikle getty'nin modem veya uçbirim hızından daha yükseğe ayarlandığı durumlara oluşur. getty, gettydefs dosyasını sıra ile tarar ve verilen girdiye uygun bir eşleşme arar. Şayet hız belirtilmemişse veya bir girdi bulunamazsa, /etc/gettydefs içindeki ilk girdi öntanımlı değer olarak kabul edilir ve o değer kullanılır. gettydefs dosyasına ulaşılamadığı durumlarda, derleme zamanında tanımlanmış girdi kullanılır.
tür argümanı, hatta bağlı uçbirimi tanımlayan bir dizgedir. tür, termcap(7) içinde listelenen geçerli uçbirim isimlerinden biri olmalıdır. getty, bu değeri ekranı nasıl temizleyeceğine karar vermek için kullanır. Ayrıca TERM ortam değişkenini bu değer ile ayarlar.
disiplin argümanı hat üzerinde kullanılacak hat disiplinini tarif eden bir dizgedir. Öntanımlı değer LDISCO'dur.
Daha önce bahsedildiği gibi, getty bağlantı ekranını görüntüledikten sonra kullanıcı adını okur. Şayet boş karakter alınırsa, kullanıcının <break> tuşuna veya hızın hatalı olduğunu bildirmek için CR tuşuna bastığı kabul edilir. Bunun sonucu olarak getty sıradaki hıza geçer (/etc/gettydefs içinde tanımlı olan hızlar).
Kullanıcı ismi satırsonu karakteri veya satırbaşı karakteri ile sonlandırılır.. Bir satırbaşı karakteri, sistemde yeni satıra geçilmesi sonucunu doğurur (ayrıntılı bilgi için ioctl(2)).
Kullanıcı adı, sadece büyük harflerdenen oluşup oluşmadığını görmek için taranır. Şayet öyle ise, sistem bütün büyük harfleri küçük harfe çevirir.
gettydefs dosyasını sınama seçeneği de vardır. getty, -cgettydefs seçeneği ile çağrılırsa, adı geçen gettydefs dosyası taranır ve görülen değerler standart çıktıya aktarılır. Şayet herhangi bir yazım hatası var ise (gettydefs dosyasındaki sözdizimi hataları) bunlar kullanıcıya bildirilir.
Başlangıçta, getty /etc/conf.getty.hat dosyasına bakar (veya bu dosyanın bulunamadığı durumlarda /etc/conf.getty dosyasına). Şayet bu dosya var ise satırları aşağıdaki biçimde okur:
İSİM=değerBu sayede, getty çalışma zamanı esnasında yeniden derlemeye gerek olmadan belirli özellikleri ayarlama şansına sahip olur. Tanınan İSİM dizgesi ve onların karşılıkları şunlardır:
CONNECT\s\A\r\nyerine geçer. \A öncelemesi hızı gösterecek rakamların yerini işaret eder. Ayrıntılar için BAĞLANTI ve HIZ kısmına bakınız. Öntanımlı olarak bir bağlantı uzlaşması gerçekleştirilmez.
WAITFOR=RING CONNECT="" ATA\r CONNECT\s\Agetty, RING dizgesini bekler, ardından hiçbir şey gelmesi beklemez, bir satırbaşı karakteri ile biten ATA gönderir ve CONNECT 2400 gibi bir dizge bekler ve bu durumda kendini 2400 baud'a ayarlar. Öntanımlı olarak herhangi bir dizge girilmesini beklemez.
Öntanımlı dosyanın adı, komut satırından -d öntanımlı_dosya şeklinde tanımlama yapılarak değiştirilebilir. Eğer öntanımlı_dosya ismi "/" işareti ile başlıyorsa, dosyanın tam yeri belirtiliyormuş gibi kabul edilir. Aksi taktirde, sadece bir dosya ismiymiş gibi ele alınır ve getty'nin tam dosya ismi olarak /etc/conf.öntanımlı_dosya'yı kullanması sağlanır. Şayet FSSTND uyumluluğu ile derlenmiş ise /etc/conf.öntanımlı_dosya kullanılır.
getty önbilgi (genellikle /etc/issue içindeki) ve kullanıcı istemini görüntülediği zaman, çeşitli terbölü öncelemeli karakterlerin kullanılacağını kabul eder. Bu karakterlerden biri bulunduğu zaman, getty tarafından üretilen çıktıda bunların yerine değeri atanır. Tanınan tersbölü öncelemeli karakterler şunlardır:
Bunlara ek olarak, satır sonundaki tek bir tersbölü yeni satırın yok sayılmasına sebebiyet verir ve ilk satırın aşağıdaki satırda devam ettiği kabul edilir.
Ayrıca, @ ile öncelenmiş belirli karakterleri parametre olarak kullanabilirsiniz. Bu parametreler ve bu parametrelere atanan değerler şunlardır:
Tek bir '@' karakteri görüntülemek için '\@' ya da '@@' kullanın.
getty'nin en büyük özelliklerinden birisi (en azından yazar açısından) kullanacağı hattı, kullanmadan önce ilklendirme yeteneğidir. Bu çoğunlukla uçbirimlerde değil de modemli hatlarda olmaktaysa da, uçbirimlerin ilkendirilmesi bu kapsamın dışında değildir.
Hattın ilklendirilmesi; hattın açılmasından hemen sonra, WAITCHAR ve/veya WAITFOR seçeneklerine bağlı olarak, yapılır. İlklendirme, öntanımlılar dosyasına
INIT=dizgegirdisi yerleştirilerek gerçekleştirilir. dizge, aşağıdaki şekilde bir ya da daha fazla alandan oluşur:
umulan [ gönderilen [ umulan [ gönderilen ] ] ...]Bu UUCP L.sys dosyasında kullanılan umulan/gönderilen dizilimine benzer. Tek farkı, 'gönderilen' dizilimine özdevinimli olarak satırbaşı karakteri eklenmemesidir.. Şayet bir satırbaşı karakteri eklenmesini istiyorsanız, bunu '\r' ile açıkça göstermelisiniz.
getty, umulan alanında, UUCP'deki gibi alt alanları destekler:
umulan[-gönderilen-umulan]...İSTEM İKAMELERİ bölümünde belirtilen bütün tersbölülü önceleme karakterleri umulan ve gönderilen alanları için de geçerlidir. Bunlara ek olarak, aşağıdaki önceleme karakterleri de geçerlidir:
Bu ilave önceleme karakterleri için, gerçekte karakter gönderilmediğini unutmayın.
getty düzgün kurulmuş bir bağlantı sağlamak için bir uzlaşmaya girişir. Bu özelliğinin en iyi kullanımı modem tarafından gönderilen CONNECT iletisine bakmak ve hat hızını bu iletide belirtilen hıza ayarlamaktır (örneğin 2400).
Bağlantı uzlaşması için gereken betik, aşağıdaki ek dışında INIT betiği ile tamamen aynıdır (HATTIN İLKLENDİRİLMESİ bölümüne bakınız):
Hızın özdevinimli ayarlanması 0 değeri ile etkinleştirilir.
CONNECT=CONNECT\s\AYukarıdaki satır CONNECT 1200 dizgesi ile eşleşirse, getty'nin bağlantı hızını 1200 baud'a ayarlamasına sebep olur. Bu işlem şu adımları takip eder:
uugetty, getty'ye benzer ama UUCP ailesi (uucp(1), cu(1) ve diğerleri) tarafından kullanılan kilit dosyalarını oluşturmak ve kullanmak için tasarlanmıştır. Bu sayede iki veya daha fazla sürecin aynı tty hattını kullanması önlenir.
uugetty başladığı zaman, kullanmaya niyetlendiği hatta bir kilit dosyası görürse, bu hattaki kilit dosyasının sahibi olan bir süreç olup olmadığını tespit etmek için, kilit dosyasının süreç numarasını kullanır. Şayet bu kilit dosyası bir sürece ait değilse, uugetty bu dosyası siler ve işleme devam eder. Şayet bu dosyanın kontrolünü elinde tutan, geçerli bir süreç varsa, uugetty, o süreç bu kilit dosyasını serbest bırakana kadar uyur ve daha sonra init(1)'in yeni bir uugetty başlatmasını sağlayıp kendini sonlandırır. Çakışan süreç ortadan kalkınca, uugetty kendi kilit dosyasını oluşturarak bağlantı ekranını çalıştırır. Bu sayede diğer süreçlerin aynı hattı kullanması önlenmiş olur.
uugetty normalde sadece üzerinde çalıştığı hattın adını kilitler. Aynı porta işaret eden iki ayrı aygıt isminin bulunduğu sistemlerde (bir tanesi modemi kontrol eden, diğeri etmeyen iki aygıt bulunması durumu gibi) aşağıdaki gibi bir hat öntanımlı dosyaya yerleştirilir:
ALTLOCK=hatÖrneğin; eğer uugetty'nin /dev/tty1a üzerinde ise ve ilaveten /dev/tty1A'nın kilitlenmesini istiyorsanız, öntanımlı dosyaya şu satırı girin: ALTLOCK=tty1A.
Taşıyıcı tespiti için beklerken, uugetty her 30 saniyede bir kilit dosyalarını kontrol eder. Eğer kilit dosyaları bulursa, uugetty çıkar ve init yeni bir getty başlatır. Böylece, modem başka bir süreç tarafından kullanılmadan önce tekrar ilklendirilmiş olur.
init(1), login(1), uucp(1), ioctl(2), uname(3), gettydefs(5), utmp(5), termio(7).
Şu an ki şeytani Getty_ps:
Kris Gleason <gleasokr (at) boulder.colorado.edu>
Orjinal getty_ps:
Paul Sutcliffe, Jr. <paul (at) devon.lns.pa.us>
UUCP: ...!rutgers!devon!paul
Autobauding rutinleri Mark Keating <...!utzoo!censor!markk> tarafından önerilen kodlardan alınmıştır.
Yalçın Kolukısa <yalcink01 (at) yahoo.com>, Mart 2004
2 Kasım 1995 | Sürüm 2.0.7h |