Sistem Açılış Dosyaları
Önceki Linux Sistem Yönetimi Sonraki
Sistem Açılış Dosyaları
Linux makinası açılırken onlarca dosyayı okur. Birkaç dakika içinde çekirdeği hafızaya yükler, belirli dizinlerin altındaki programları arkaplanda çalıştırır. Sistem uyanırken hatırı sayılır nicelikte yapılandırma dosyası elden geçer. Açık bir işletim sistemini diğerlerinden ayıran bir özellik de kullanıcının büyük bir kolaylıkla bu yapılandırma dosyalarını değiştirebilmesidir. Sistem açılış dosyalarında, özellikle ağ temelli dosyalarda değişiklik yapabilmek için TCP/IP konusunda basit temelleri anlayabilmiş olmanız gerekir.
Açılış dosyalarında, tek bir kullanıcı için veya sistemde hesabı olan herkese yönelik olarak değişiklik yapmak mümkündür. Pek çok kullanıcı bu açılış dosyalarıyla oynayarak Linux'u daha yakından öğrenme imkanına sahip olur.
İnternet servisi veren bir makina bu servisini daemon'lar aracılığıyla yapar. Bir daemon, her makina tarafından bilinen bir port numarasını açar ve dinlemeye koyulur. Eğer sorumlu olduğu port adresine istek gelirse bu isteğe cevap vererek servise başlar.
Bash kabuğunun anlatıldığı konu içinde sisteme girerken okunan dosyaları anlatmıştım. Sistemde yeralan önemli dizinler de dosya sistemi yapısı konusunda ayrıntılı olarak belirtilmişti. Bu bölümde daemonlardan kısaca bahsedip açılış anında çalıştırılan programlara ve bunların yapılandırma dosyalarına kısa bir giriş yapılacaktır.
inetd ve /etc/inetd.conf
inetd, en ağır görevleri üstlenen ve en önemli İnternet servislerindendir. Bu program sistem açılırken arkaplanda çalışmaya bırakılır. inetd'nin görevi belirli portları dinleyerek bu portlara yapılan bağlantıları denetlemektir. Bir bağlantı yapıldığı anda inetd bu portla ilgilenecek olan programı çalıştırır. Örnek olarak Linux'a ftp isteği geldiği anda inetd, ftp isteğine cevap verecek olan wu.ftpd programını uyandırır ve geri kalanını bu programa bırakır.
inetd olmasaydı her standart port numarası için bu portu dinleyecek olan bir program arkaplanda çalışıyor olacaktı. Bu da sisteme normalden daha fazla yükün binmesi demektir. inetd'nin kullandığı yapılandırma dosyası /etc/inetd.conf'tur. Bu dosyadan bir bölüm aşağıda yeralmaktadır:
# "kill -HUP <pid of inetd>".
# The inetd will re-read this file whenever it gets that signal.
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
time    stream  tcp     nowait  root    internal
time    dgram   udp     wait    root    internal
ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  wu.ftpd
telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
#nntp   stream  tcp     nowait  root    /usr/sbin/tcpd  in.nntpd
shell   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd -L
login   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind
ntalk   dgram   udp     wait    root    /usr/sbin/tcpd  in.talkd
pop3    stream  tcp     nowait  root    /usr/sbin/tcpd  in.pop3d
imap2   stream  tcp     nowait  root    /usr/sbin/tcpd  imapd
finger  stream  tcp     nowait  nobody  /usr/sbin/tcpd  in.fingerd -w
systat  stream  tcp     nowait  nobody  /usr/sbin/tcpd  /bin/ps -auwwx
netstat stream  tcp     nowait  root    /usr/sbin/tcpd  /bin/netstat    -a
# End of inetd.conf.
/etc altında bir yapılandırma dosyasını değiştirmek isterseniz, o dosyayı okuyan ve arkaplanda çalışıyor durumda bulunan süreçleri bundan haberdar etmelisiniz. Çünkü bu dizindeki bazı dosyalar sadece açılışta okunur. inetd, yukarıdaki inetd.conf dosyasını sistem açılırken okuyacaktır. Değişiklik yaptıktan sonra inetd'nin bu değişiklikten tekrar haberinin olması için bu sürecin PID numarasını ps -aux komutu ile bir kenara not edin ve şunları yazın.
# kill -HUP <PID-inetd>
PID-inetd yerine not ettiğiniz süreç numarasını girmelisiniz. Bu sayede inetd kendisine ait olan inetd.conf dosyasını tekrar okuyacak ve değişiklikler işleme konacaktır.
Her bilgisayar tarafından bilinen servislerin isimleri ve hangi portları (portları) kullandıkları /etc/services dosyasında tutulur.
syslogd ve /etc/syslog.conf
syslogd programı Linux'taki çeşitli olayların kayıtlarını tutar. Bunlar genellikle hata mesajları veya çekirdek mesajları gibi kayıtlardır. syslogd sistem açılırken arkaplanda işlemeye bırakılır.
/etc/syslog.conf, syslogd programının yapılandırılması için kullanılır. Normal olarak sistem kayıtları /usr/adm/messages dosyasının sonuna eklenir. Bu dosyanın yapısı biraz karışık olmasına rağmen eğer sistem yöneticiyseniz syslogd sizin en büyük yardımcınız olabilir.
Örnek bir syslog.conf dosyası aşağıda yeralıyor.
*.info;*.notice                                 /usr/adm/messages
*.debug                                         /usr/adm/debug
*.warn                                          /usr/adm/syslog
*.emerg;*.alert;*.crit                          /dev/tty8
mail.*                                          /dev/tty9
kern.*                                          /dev/tty10
Bu dosyanın en solunda yeralan ve nokta ile ayrılmış olan iki kelimeden ilki, kaydı yapılan program grubudur. Bu kısma kern (çekirdek mesajları), mail (sendmail mesajları), login (sisteme giriş veya sistemden çıkış mesajları), auth, authpriv veya security (güvenlik mesajları), cron (cron mesajları), daemon (deamon'lardan gelen mesajlar),lpr (yazıcı mesajları), news (haber grubu mesajları), user (kullanıcı mesajları) veya uucp (uucp mesajları) yazılabilir. Noktanın sağındaki kelime ise kaydı yapılan program grubunun mesaj önem sırasını belirler. Bu kısımda önem sırasına göre debug, info, notice, warning, err, crit, alert ve emerg bulunur.
Dosyanın sağında yeralan kısımda ise bu mesajların hangi dosyaya yazılacağı vardır. Yukarıda verilen örnekte, syslogd'den gelen mesajlar sanal konsollardan kullanılmayanlara yönlendirilmiştir. Böylece sistem yöneticisi F8, F9 ve F10 tuşlarını kullanarak sistem kayıtlarına anında ulaşabilir.
Başka bir makinaya kayıt tutturmak da mümkündür. Uzak makinanın ismi syslog.conf dosyasının sağ bölümüne yazılır. Böylece diğer makina yerel olarak sistem kayıtlarını tutacaktır.
mail.err                     @ordek.cclub.metu.edu.tr
Bazı kritik ve sistemin düzgün çalışmadığını haber verebilecek mesajların konsola yönlendirilmesinde fayda vardır.
kern.crit                    /dev/console
Sisteme bağlanmış olan kullanıcılar hakkında bilgiyi ise
/var/adm/wtmp
dosyası tutar. Bu dosya ASCII olmadığından doğrudan okunamaz, last komutu ile içeriği incelenebilir. Buna ek olarak çeşitli paketler çalıştırılıyorsa onların yarattığı kayıt dosyaları da incelenmelidir. Örneğin ftp çalışıyorsa /var/adm/xferlog kimin ftp ile hangi dosyaları aktardığını gösterir. Bu tür dosyalar içerisinde elde edilebilecek ipuçları ile sistemin çalışma performansı artırılabilir, kendisini pek belli etmeyen hatalar bulunabilir.
init ve /etc/inittab
init, sistemde ilk çalışan programdır. Neredeyse sistemin tüm açılış yükünü elinde tutar. init sayesinde açılış anında hangi programların çalışacağı belirlenir. Bu programları da /etc/inittab dosyasından öğrenir.
Burada /etc/inittab dosyasından alınan birkaç örnek satır yeralıyor. Her satırın sonunda çalıştırılacak olan dosyalar var.
# Default runlevel.
id:3:initdefault:

# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S

# Script to run when going single user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K

# Script to run when going multi user.
rc:23456:wait:/etc/rc.d/rc.M

# What to do at the "Three Finger Salute".
ca::ctrlaltdel:/sbin/shutdown -t5 -rfn now

# Runlevel 0 halts the system.
l0:0:wait:/etc/rc.d/rc.0

# Runlevel 6 reboots the system.
l6:6:wait:/etc/rc.d/rc.6

# What to do when power fails (shutdown to single user).
pf::powerfail:/sbin/shutdown -f +5 "THE POWER IS FAILING"

# If power is back before shutdown, cancel the running shutdown.
pg:0123456:powerokwait:/sbin/shutdown -c "THE POWER IS BACK"

# If power comes back in single user mode, return to multi user mode.
ps:S:powerokwait:/sbin/init 5

c1:1235:respawn:/sbin/agetty 38400 tty1 linux
c2:1235:respawn:/sbin/agetty 38400 tty2 linux
c3:1235:respawn:/sbin/agetty 38400 tty3 linux
c4:1235:respawn:/sbin/agetty 38400 tty4 linux
c5:1235:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

# Serial lines
#s1:12345:respawn:/sbin/agetty 19200 ttyS0 vt100
#s2:12345:respawn:/sbin/agetty 19200 ttyS1 vt100

# Dialup lines
#d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100
#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100

x1:4:wait:/etc/rc.d/rc.4
Bir Linux makinasının birkaç tane çalışma düzeni vardır. Bunlardan birkaçı 3 (çok kullanıcılı konum), 1 (tek kullanıcılı konum) ve 4 (X Pencere konumu)'tür. Her konum, bir sayı veya bu sayılara karşılık gelen tek harften oluşur. Bir konum altında çalışırken diğerine geçebilmek için init veya telinit komutu kullanılır.
/etc/inittab'da yeralan dosya isimleri değiştirilebilir veya kullanıcının isteği doğrultusunda her çalışma modu için farklı dosyalar çalıştırilabilir.

# init 1
Switching to runlevel 1
Sending all processes the TERM signal
Waiting for processes to terminate........
Turning off quota..
Single user mode.
init komutundan sonra açmak istediğiniz çalışma düzenine ait olan sayıyı yazabilirsiniz. Örneğin init 0 komutu sistemi kapatacaktır. Yukarıdaki komut çalıştıktan sonra /etc/inittab dosyasında bu konuma ait olan /etc/rc.d/rc.K dosyası çalıştırılır. Bu dosya çalıştıktan sonra dışarıdan yapılan bağlantılara izin verilmez.
/etc/inittab dosyasında yapılacak her değişikliğin ardından
# init q
komutunu vererek init programının inittab dosyasını tekrar okuyup değişikliklerden haberdar olmmasını sağlamalısınız. O an sistemin hangi konumda çalıştığını bulabilmek için runlevel komutunu kullanın:
$ runlevel
N 3
Sistem, yukarıdaki bilgilere göre 3 numaralı konumda (çok kullanıcılı konum) çalışıyor.
/etc/rc.d/* Dosyaları
İşte sistemin kalbinin attığı yer. Ne yaparsanız yapın ama bu dosyaları gözünüz gibi koruyun. Sistem açılırken arkaplanda çalışmaya başlayan programlar burada yazılıdır. Tüm bu dosyalar Slackware dağıtımına özgüdür.
rc.0
Bu dosya, 0 (halt) çalışma düzenine geçerken okunur. Sistemin shutdown veya halt komutları ile kapatılmak istenirse bu program çalıştırılır. Önce sistemdeki tüm süreçler öldürülür, ardından sistemin kapandığını belirten bazı satırları kayıt dosyalarına atar. Tüm dosya sistemlerini umount işleminden geçirdikten sonra da sistemi dondurur.
rc.K
Bu dosya, init tarafından 1 numaralı çalışma düzenine (tek kullanıcılı konum) geçilirken çalıştırılır. Tüm süreçler öldürülür ve sistem sadece konsoldan giriş yapılacak şekilde tekrar açılır.
rc.cdrom
Bu dosya, bulduğu CDROM sürücüsünü /cdrom dizini altına mount yardımıyla ekler.
rc.local
Çok kullanıcılı açılış anında çalıştırılan bu dosyaya istediğiniz programları ekleyebilirsiniz.
rc.4
4 numaralı çalışma düzenine geçilirken bu dosya çağırılır. Tüm sanal konsollara vt100 terminalleri yerine grafik tabanlı bir program kullanılarak girilir.
rc.M
init tarafından çok kullanıcılı konuma geçmek için kullanılır.
rc.S
Sistem açılırken bu dosya mutlaka çalıştırılır. Takas alanı açılır, dosya sisteminde hata olması halinde bunu gidermeye çalışır. Bazı kontrollerden sonra kontrolü diğer rc programlarına bırakır.
Önceki Üst Ana Başlık Sonraki
Yeni Yazılımların Yüklenmesi Başlangıç Çekirdek Mesajları
Bir Linux Kitaplığı Sayfası