Tekil Mesaj gösterimi
Alt 06-09-2008, 01:57   #3
Constantin
ยŦยк
 
Constantin - ait Kullanıcı Resmi (Avatar)
 

INIT İşlemi

Init işleminin asıl görevi, sistem diskindeki /etc/inittab file’ indaki tanımları kullanarak ilgili işlemleri yaratmaktır. Inıt işlemi çeşitli çalışma seviyelerinde çalışabilir. (0-6,s,S,q,Q gibi)
Inıt, kernel tarafından başlatıldığında ilk olarak /etc/inittab dosyasına bakar. Eğer bu dosya yok ise, default olarak “S” ya da “s” modda (tek kullanıcılı mod) çalışır. Eğer dosya var ise bu durumda dosyada “initdefault” tanımını arar. Eğer bu tanım yok ise bu durumda sistem konsoldan çalışma seviyesinin (run -level) girilmesini bekler. Eğer “s” girilirse, bu durumda tek kullanıcı mod da çalışır ve /etc/inittab ile ilişkisi kalmaz. Eğer initdefault tanımı var ise, o zaman buradaki çalışma seviyesi değerini alır ve bu seviyede çalışmaya başlar. Daha sonra ise ilgili çalışma seviyesinde çalışması gereken diğer işlemleri de başlatır.
Örneğin, /etc/inittab de aşağıdaki tanımlamalar var ise;
is:2:initdefault
.
co:1234respawn:/etc/getty console console ....1
01:2:respawn:/etc/ getty tty01 9600 ....2
02:2:respawn:/etc/ getty tty02 9600 ....3

Bu durum da çalışma seviyesi 2 dir. Ve 1,2,3 üncü satırlar işleme alınır. Yani getty işlemi console,tty01,tty02 de çalıştırılır.(çok kullanıcılı) Her bir getty işlemi init tarafından yaratılır. Getty işlemleri yaratıldıktan sonra init beklemeye başlar. Eğer getty işlemlerinden birisinin sonlandığına ilişkin bir sinyal alınırsa bu durumda /etc/utmp ve etc/wtmp dosyalarını düzenler











/etc/inittab Dosyası
Init işlemi yardımıyla okunabilen /etc/inittab dosyası, aşağıdaki gibi tanımlanmıştır.
tanım no: çalışma düzeyi: durumu: işlem:
Tanım nohttp://www.supermp3.org/images/smilies/biggrin.gifosyanın herbir satırını belirten aynı olmayan ve en fazla dört karakterli bir koddur.
Çalışma düzeyi:Belirlenen işlemin çalışma düzeyini belirler. 2 ile 6 arasındaki kodlar kullanıcı tarafından tanımlanmıştır. Çok kullanıcılı çalışma düzeyi genellikle 2 dir. Tek kullanıcı için s veya S kullanılabilir.
Durumu : Dosya içinde işlemin durumunu tanımlamaya yarayan bazı tanımlar vardır. Bunlar: off, respawn, wait, initdefault
boot, bootwait, powerfail
powerwait, once,ondemand,sysinit
gibi durumlardır.
Bu durumlar ayrıntılı olarak aşagıda ele alınmıştır.
İşlem(Process): Çalıştırılacak işlem burada tanımlanır.
/etc/inittab dosya yapısı

/etc/inittab dosyasının her bir satırı aşağıdaki biçimdedir:
id:rstate:action:respwn
Satırlar yeni satır karakteri ile sonlandırılır. Eğer yeni satır karakterinden önce “ters slash” karakteri yazılırsa, bu bir sonraki satıra devam edileceğini bildirir. Dosyanın satırdaki komutlarını bilmemiz gerek;
id : 1 veya 2 karakter uzunlukta olabilir ilgili tanımı belirler.
Rstate : Tanımlanan işlemin hangi çalışma seviyeleri için geçerli olduğunu belirler.(örneğin çalışma seviyesi “1” ise, rstate kısmında “1” yazan işlemler çalıştırılır.) Rstate 0-6 arasında bir rakam olabilir. Bunlar gerçek çalışma seviyeleri değildir yalnızca özel olarak çalıştırılabilirler ve çalışma seviyesi değişse bile sonlandırılamazlar. Bu tür işlemlerin sonlandırılabilmeleri için init in tek kullanıcı moda girmesi gerekir.


/etc/inittab Dosyasının Yapısı

Action : Bu bilgi alanı, init le ilgili işlemin nasıl çalıştırılacağına ilişkin bilgi verir. Şu değerlerden herhangi biri olabilir.
-respawn: Eğer işlem çalışır durumda değilse işlemi başlatır ve kendisi /etc/ inittab ı taramaya devam eder. Eğer ilgili işlem çalışır durumda ise /etc/inittab ı tarama işini sürdürür.
-wait : İşlemi başlatır ve bitinceye kadar bekler.
-once :İşlemi başlatır ve bitmesini beklemez. İşlem yalnızca bir kez başlatılır. Bitince tekrar başlamaz.
-boot : İnit işleminin belleğe boot edilmesi sırasında başlatılır. Bitmesi beklenmez. Bittiğinde yeniden başlatılmaz.
-bootwait : İnit işleminin belleğe boot edilmesi sırasında başlatılır. Bitmesi belenir. Bittiğinde yeniden başlatılmaz.
-powerfail :İnit e power fail sinyali geldiğinde başlatılır ve bitmesi beklenir.
-off : İlgili işlem çalışır durumda ise önce uyarı sinyali gönderilir ve 20 sn. beklendikten sonra kill sinyali gönderilir. İlgili işlem çalışır durumda değilse bu işlem tanımı göz önüne alınmaz.
-ondemand : Fonksiyon olarak respawn ın aynısıdır. Yalnızca çalışma seviyelerden ayırmak için rstate alanına a,b,c gibi değerler yazılır.
-initdefault : İnit in hangi çalışma seviyesi ile çalışacağı burada tanımlı olan rstate de herhangi bir şey belirtilmemişse o zaman sistem konsolundan init in hangi çalışma seviyesinde çalışacağı sorulur.
-sysinit : Bu alan yalnızca init in kullanılacağı konsolun initialize işlemini yapar
Process : Geçerli bir shell komutu olmalıdır. Burada yazılı olan komut; fork system call ı ile yaratılan shell e bildirilir ve başına “exec” konarak aşağıdaki biçimde çalıştırılır.
sh - ‘exec komut’
(-c : komutun strıng den okunacağını belirtir.)






Getty İşlemi
Bu işlem /etc/inittab, /etc/gettydefs, /etc/ttytype gibi dosyalardan aldığı bilgilere göre terminallere login promtunu getirir.
Örnek olarak aşağıdaki /etc/inittab dosyasını alalım :
is :2:initdefault
.
co:1234:respawn:/etc/getty console console
01:2:respawn:/etc/getty tty01 9600
02:2:respawn:/etc/getty tty02 9600
Burada co,01,02 ile belirtilmiş satırlarda getty işlemi başlatılır. İşlemin hangi hatlarda çalışacağı console, tty01, tty02 ile belirtilmiştir. Bunlardan her birisi /dev altında device a karşılık gelir. Yine aynı satırdaki console, 9600 tanımları ise /etc/gettydefs dosyasında bir etikete karşılık gelir. Getty işlemi bu etiketlerdeki tanımları kullanır. /etc/gettydefs dosyasında hattın iletişim hızı login mesajının ne olacağı, terminal özellikleri belirtilir. Bir /etc/gettydefs dosyasında kullanılan tanımlar şu formata uygun olmalıdır.
Label initial-flags login-promt next label
Label : Getty işlemi hangi tanımı kullanarak terminali set edeceğini buradan anlar. Genellikle kullanacağı değer hattın iletişim hızıdır.
İnitial-flags: Eğer terminal tipi getty komutunda verilmişse, bu durumda buradaki değerler ile terminal set edilir.
Final-flags : Login başladığında kullanılan değerlerdir.
Login-promt: Terminallere gelen login satırını belirtir.
Next label :Terminalden “break” karakteri gelirse, bir sonraki tanımın ne olacağını belirtir.
Constantin Ofline   Alıntı ile Cevapla