İSİM¶
init - süreç kontrol başlangıcı
telinit - çalışma seviyesini değiştirir
KULLANIM¶
/sbin/init [ -a ] [ -s ] [ -b ] [ -z xxx] [ 0123456Ss ]
/sbin/telinit [ -t saniye ] [ 0123456sSQqabcUu ]
AÇIKLAMA¶
init, bütün süreçlerin
atasıdır.
init'in birincil görevi
/etc/inittab içinde saklı betikten süreçler
oluşturmaktır (ayrıntılar için
inittab(5)'a bakınız). Bu dosyada,
init'in
çeşitli hatlar üzerinden
kullanıcıların bağlanmasını
sağlamak üzere
getty(1) süreçleri
oluşturmasını sağlayan girdiler vardır.
Ayrıca belirli sistemler tarafından ihtiyaç duyulan
özerk süreçleri de kontrol eder.
ÇALIŞMA SEVİYELERݶ
Çalışma seviyesi, sistemde varolan
süreçlerden belirtilmiş olanların
çalışmasını sağlayan
yazılım yapılandırmasına verilen
addır. Her bir çalışma seviyesi için,
init tarafından başlatılan süreçler
/etc/inittab dosyası içinde
tanımlıdır.
init sekiz değişik
çalışma seviyesinden birinde olabilir:
0-6,
S veya
s. Çalışma seviyesi
telinit
kullanılarak yetkili bir kullanıcı tarafından,
init'e uygun bir sinyal gönderilerek değiştirilir.
Çalışma seviyeleri
0,
1 ve
6
ayrılmış seviyelerdir.
0 sistemi durdurmak
için,
6 tekrar başlatmak için ve
1 ise tek
kullanıcılı kipe döndürmek için
kullanılır.
S seviyesi doğrudan
kullanıcı ile alakalı değildir, daha çok
çalışma seviyesi
1'e girerken
çalıştırılan betikleri ifade eder. Bu
konuda daha fazla bilgi için
shutdown(8) ve
inittab(5)'a
bakınız.
7-9 arası çalışma seviyeleri de geçerlidir
ama bu seviyeler hakkında belgelendirme
yapılmamıştır. Çünkü
"geleneksel" Unix türevleri bu seviyeleri kullanmazlar.
Sırf merakınız gidermek için belirteyim ki
S ve
s aynıdır ve aynı
çalışma seviyesini belirtirler.
SİSTEM AÇILIŞI¶
Çekirdek açılış töreninin son
halkası olarak
init
çalıştırıldığı zaman,
içinde öntanımlı çalışma
seviyesi girdisi olup olmadığını kontrol etmek
için
/etc/inittab dosyasına bakılır
(bakınız
inittab(5)). Bu öntanımlı
çalışma seviyesi, sistem
açılışı sonrası
düşülecek çalışma seviyesini
belirtir. Bu tür bir girdi yok ise veya
/etc/inittab
dosyası yok ise, konsoldan bir çalışma seviyesi
girilmesi gerekir.
Çalışma seviyeleri
S veya
s, sistemi tek
kullanıcı kipe sokar ve
/etc/initab dosyasına
ihtiyaç duymazlar. Tek kullanıcılı kipte,
/dev/console üzerinde bir root kullanıcı
kabuğu açılır.
Tek kullanıcılı kipine girilince,
init konsolun
ioctl(2) durumunu
/etc/ioctl.save dosyasında okur.
Şayet bu dosya yok ise,
init hattı
9600 baud ve
CLOCAL ile ilklendirir.
init tek
kullanıcılı kipi terk ederken konsolun
ioctl
ayarlarını bu dosyaya kaydeder. Böylece tekrar tek
kullanıcılı kipe geçildiği zaman bu
ayarları kullanabilir.
Çok kullanıcılı kipe ilk sefer girişte,
kullanıcılar bağlanmadan önce dosya sisteminin
bağlanmasını sağlayabilmek için
boot
ve
bootwait girdileri
init tarafından
çalıştırılır. Daha sonra
çalışma seviyesi ile eşleşen
bütün girdiler
çalıştırılır.
Yeni bir süreç başlatılırken,
init ilk
olarak /etc/initscript dosyasının var olup
olmadığını kontrol eder. Şayet var ise, bu
dosyada bulunan betikler süreci başlatmak için
kullanılır.
Bir alt süreç her sonlandığında, bunun sebebi
init tarafından
/var/run/utmp ve
/var/log/wtmp
içine yazılır (bu dosyaların mevcut olup
olmadığı önce kontrol edilir).
ÇALIŞMA SEVİYELERİNİN DEĞİŞTİRİLMESݶ
Belirtilen bütün süreçler
çalıştırıldıktan sonra
init;
kendi oluşturduğu bir sürecin
sonlandırılmasını, bir enerji kesme sinyalinin
veya
telinit tarafından gönderilen bir
çalışma seviyesi değiştirme sinyalinin
gelmesini bekler. Bu üç durumdan biri
gerçekleşirse,
/etc/inittab dosyasını
tekrar kontrol eder. Bu dosyaya yeni girdiler eklenmiş olabilir.
Bununla birlikte,
init bunlardan birinin gerçekleşmesini
bekler. Durumlara anında tepki verebilmek için,
telinit'in
Q veya
q komutu ile
init'in
/etc/inittab dosyasını tekrar kontrol etmesi
sağlanabilir. Şayet
init tek
kullanıcılı kipte değilse ve bir enerji kesme
sinyali alırsa (SIGPWR), gidip
/etc/powerstatus
dosyasını okur. Daha sonra bu dosyanın
içeriğine bağlı olarak şu komutlardan
birini uygular:
- F(AIL)
- Enerji KGK tarafından sağlanıyordur ve bir
süre sonra enerji kesilecektir. powerwait ve
powerfail girdileri
çalıştırılır.
- O(K)
- Enerji tekrar gelmiştir. powerokwait girdisi
çalıştırılır.
- L(OW)
- KGK'nın akülerindeki enerji azalmaktadır ve enerji
kesilecektir. Powerfailnow girdisi
çalıştırılır.
Şayet /etc/powerstatus yok ise veya
F,
O veya
L
harflerinden farklı bir şey ihtiva ediyorsa,
init,
F harfini okuduğunu kabul eder ve ona göre
davranır.
SIGPWR ve
/etc/powerstatus kullanımı tavsiye
edilmez.
init ile etkileşimli kipe geçmek isteyen
birisinin
/dev/initctl'yi kullanması daha uygun olur. Bu konuda
daha ayrıntılı bilgi için
sysvinit
paketinin kaynak kodundaki belgelere bakınız.
Çalışma seviyesi değiştirme isteği
init'e iletilince;
init yeni seviyede
tanımlanmamış olan bütün
süreçlere
SIGTERM sinyali gönderir. Daha sonra bu
süreçleri sonlandırmadan önce 5 saniye bekler. 5
saniye sonra
SIGKILL sinyali gönderir. NOT:
init
bütün süreçlerin ve onların alt
süreçlerinin aynı süreç grubu içinde
kaldığını varsayar. Şayet herhangi bir
süreç, süreç grubunu üyeliğini
değiştirmiş ise, o süreç bu
sonlandırma sinyalini almaz. Bu tür süreçlerin
ayrıca sonlandırılması gerekir.
TELINIT¶
/sbin/telinit, /sbin/init'e bir bağdır. Tek karakterlik
argümanlar ve sinyalleri kabul eder. Aşağıdaki
argümanlar
telinit'e talimat olarak verilebilir:
- 0,1,2,3,4,5 veya 6
- init'in, belirtilen çalışma seviyesine
geçmesi istenir.
- a,b veya c
- init'in, sadece a,b veya c
çalışma seviyesi için verilmiş olan
/etc/inittab dosyası girdilerini
çalıştırması istenir.
- Q veya q
- init'in, /etc/inittab dosyasını tekrar kontrol
etmesi istenir.
- S veya s
- init'in tek kullanıcılı kipe geçmesi
istenir.
- U veya u
- init'in, durumunu koruyarak, kendini tekrar
başlatması istenir. /etc/inittab dosyası
tekrar okunmaz. Çalışma seviyeleri Ss12345'den
birisi olmalıdır. Aksi taktirde istek sessizce yok
sayılır. Herhangi bir hata dönmez.
Ayrıca
telinit,
init'e SIGTERM ve SIGKILL sinyalleri
arasında ne kadar beklemesi gerektiğini de söyleyebilir.
Öntanımlı değer 5 saniyedir fakat
-t
seçeneği kullanılarak bu değer
değiştirilebilir.
telinit, sadece uygun yetkiye sahip
kullanıcılar tarafından kullanılabilir.
init çalıştırılabiliri, kendinin
init mi yoksa
telinit mi olduğunu anlamak için
süreç numarasını kontrol eder, gerçek
init'in süreç numarası daima
1'dir.
Buradan,
telinit kullanmak yerine,
init'in kısa yol
olarak kullanılabileceği de ortaya çıkar.
ORTAM DEĞİŞKENLERݶ
init, çalıştırdığı alt
süreçler için aşağıdaki ortam
değişkenlerini ayarlar:
- PATH
- /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
- INIT_VERSION
- init sürüm numarası. Bir betiğin
doğrudan init tarafından
çalıştırıp
çalıştırmadığını
anlamak açısından faydalıdır.
- RUNLEVEL
- Geçerli sistem çalışma seviyesi.
- PREVLEVEL
- Bir önceki sistem çalışma seviyesi.
Çalışma seviyesinin değiştirilmesi
durumunda, öncekini tespit etme açısından
faydalıdır.
- CONSOLE
- Sistem konsolu. Gerçekte çekirdekten miras
alınır. Şayet bu seçenek ayarlanmaz ise,
init tarafından öntanımlı olarak
/dev/console kullanılır.
AÇILIŞ SEÇENEKLERݶ
Açılış esnasında
init'e
seçenekler girilebilir (LILO içinden).
init şu
seçenekleri kabul eder:
- -s, S, single
- Tek kullanıcı kipinde açılış. Bu
kipte /etc/inittab dosyası incelenir ve
açılış rc betikleri, tek
kullanıcılı kip kabuğu
başlatılmadan önce
çalıştırılır.
- 1-5
- Açılış sonrası girilecek
çalışma seviyesini belirtir.
- -b, emergency
- Herhangi bir açılış betiğini
çalıştırmadan doğrudan tek
kullanıcılı kip kabuğuna düşer.
- -a, auto
- Çekirdek, kullanıcının müdahalesine
gerek kalmadan öntanımlı komut satırı
ile yüklenmişse, LILO önyükleyicisi komut
satırına "auto"
sözcüğünü ekler. Şayet bu
bulunursa, init AUTOBOOT ortam değişkenine
"yes" değerini atar. Bunu bir güvenlik
ölçüsü olarak
kullanamayacağınızı unutmayın,
çünkü kullanıcı komut
satırını kendi de tanımlayabilir.
- -z xxx
- -z'ye verilen argüman yok sayılır. Bu
seçeneği komut satırını biraz daha
genişletmek için kullanabilirsiniz, böylece
yığıt içinde daha fazla yer kaplaması
sağlanmış olur. init komut
satırını büyük bir ustalıkla
yönetir, böylece ps(1) geçerli
çalışma seviyesini gösterebilir.
ARAYÜZ¶
init iletiler için; /dev içindeki /dev/initctl fifosunu
dinler. Arayüz tam olarak bitmemiş ve belgeleme işlemleri
de bitirilmemiştir. İlgilenenler /src dizinindeki
init
kaynak kodlarının tar arşivindeki initreq.h
dosyasına bakabilirler.
SİNYALLER¶
init çeşitli sinyallere tepki verir:
- SIGHUP
- init /etc/initrunlvl ve /var/log/initrunlvl
dosyalarını arar. Şayet bu dosyalardan birisi var ise
ve bir ASCII çalışma seviyesi içeriyorsa,
init bu çalışma seviyesine geçer. Bu
sadece geçmişe uyum için konulmuştur. Normal
durumlarda (dosyanın olmadığı durumlarda)
init, telinit'in -q seçeneği ile
çalıştırıldığını
kabul eder ve buna göre davranır.
- SIGUSR1
- Bu sinyali alınca, init kendi denetim fifosu olan
/dev/initctl'u kapatır ve tekrar açar. /dev dizinin
tekrar bağlandığı zamanlarda,
açılış betikleri için oldukça
faydalıdır.
- SIGINT
- CTRL-ALT-DEL üçlemesine
basıldığı durumlarda, çekirdek
init'e bu sinyali gönderir. O da ctrlaltdel eylemini
etkinleştirir.
- SIGWINCH
- KeyboardSignal tuşuna basıldığı
durumlarda, çekirdek init'e bu sinyali gönderir. O da
kbrequest eylemini etkinleştirir.
UYUM¶
init, System V init ile uyumludur. /etc/init.d ve
/etc/rc{çalışmaseviyesi}.d dizinleri içindeki
betikler ile birlikte uyum içinde çalışır.
Eğer sisteminiz geleneksel yapıya uyuyorsa, /etc/init.d
içinde bu betiklerin nasıl
çalıştığını
açıklayan bir README dosyası bulacaksınız.
İLGİLİ DOSYALAR¶
/etc/inittab
/etc/initscript
/dev/console
/etc/ioctl.save
/var/run/utmp
/var/log/wtmp
/dev/initctl
UYARILAR¶
init, süreçlerin ve bu süreçlerin soyundan
gelen diğer süreçlerin orijinal süreç
grupları içinde kaldıklarını varsayar.
Şayet bir süreç, süreç grubunu
değiştirirse,
init bu süreci
öldüremez ve aynı uçbirim hattında iki
süreç ile karşılaşabilirsiniz.
TANI KOYMA¶
Şayet bir girdi 2 dakika içinde 10 kereden fazla
çoğaltılıyorsa,
init, bu girdi
satırında bir hata olduğunu
düşünecek, sistem konsolundan bir hata iletisi verecek ve
5 dakika geçmeden veya bir sinyal almadan bu girdinin tekrar
çoğalmasına izin vermeyecektir. Buradaki amaç,
/etc/inittab içinde hatalı bir girdinin sistem
kaynaklarını yok etmesini önlemektir.
YAZAN¶
Miquel van Smoorenburg <miquels (at) cistron.nl> tarafından
yazılmıştır, ilk kılavuz sayfası
Michael Haardt <u31b3hs (at) pool.informatik.rwthaachen.de>
tarafından yazılmıştır.
İLGİLİ BELGELER¶
bash(1),
getty(1),
kill(1),
login(1),
initscript(5),
inittab(5),
utmp(5),
runlevel(8),
shutdown(8).
ÇEVİREN¶
Yalçın Kolukısa <yalcink01 (at) yahoo.com>,
Şubat 2004