boot(7)

İSİM
boot - genel olarak açılış işlemleri

AÇIKLAMA
Açılış işlemleri sistemden sisteme değişiklik gösterirse de genellikle beş adımda incelenebilir: (i) donanımsal açılış, (ii) önyükleme, (iii) çekirdeğin yüklenmesi, (iv) init ve inittab, (v) açılış betikleri. Bunları aşağıda daha ayrıntılı olarak açıklayacağız.

  Donanım açılışı
Makinayı açıldıktan veya yeniden başlatıldıktan sonra denetim salt okunur bellekte bulunan (genellikle bu bir PROM'dur) bir yazılıma devredilir. PC'lerde bu yazılım genellikle BIOS (bayos okunur) olarak bilinir.

Bu yazılım makina üzerinde bir temel sınama yaptıktan sonra gerekli parametreleri okumak için oynak olmayan (non-volatile) belleğe erişir. Bu bellek PC'lerde pille beslenen bir CMOS bellektir ve CMOS (simos okunur) adıyla bilinir. PC dünyası dışında ise genellikle nvram (non-volatile ram) olarak bilinir.

nvram üzerinde saklanan parametreler sistemden sisteme değişiklik gösterir, fakat en azından donanım açılış yazılımı, açılışın yapılacağı aygıtı ya da algılanması gereken olası açılış aygıtlarını bilmek zorundadır.

Donanım açılış adımı ile açılış aygıtına erişildikten sonra, işletim sistemini yükleyecek olan önyükleyici yazılımı yüklenir. Bu yazılım açılış aygıtının belli bir yerinde bulunur ve denetim bu yazılıma aktarılır.

Bilgi:
    Burada ağdan açılış adımlarını açıklamayacağız. Bu konu ile ilgileniyorsanız arama sözcükleriniz şunlar olabilir: DHCP, TFTP, PXE, Etherboot.

  Önyükleyici
PC'lerde önyükleyici açılış aygıtının ilk sektöründe bulunur. Bu sektör Asıl Önyükleme Kaydı (MBR - Master Boot Record) olarak bilinir.

Çoğu sistemde bazı kısıtlamalardan dolayı bu önyükleyici çok sınırlanır. PC dışındaki sistemlerde bile boyut ve önyükleyicinin karmaşıklığıyla ilgili sınırlamalar vardır. Fakat PC'lerde MBR'ın boyutu (512 bayttır ve disk bölümleme tablosu da buradadır) önyükleyicinin bu alana deyim yerindeyse tıkıştırılmasını gerektirir.

Diğer yandan, çoğu işletim sistemi birincil önyükleyicinin disk bölümünün belli bir yerinde bulunan bir ikincil önyükleyiciyi çalıştırır.

Linux işletim sisteminin önyükleyicisi normalde lilo(8) ya da grub(8)'dır. Her ikisi de ya ikincil yükleyiciyle (DOS çalıştırmak gibi) ya da bir parçası MBR içinde diğer parçası kök disk bölümünde bulunan iki parçalı bir önyükleyici olarak kurulur.

Önyükleyicinin asıl görevi disk üzerinde çekirdeğin yerini belirlemek, onu yükleyip çalıştırmaktır. Çoğu önyükleyici başka çekirdeklerin belirtilmesine (son derlediğiniz çekirdek çalışmazsa öncekinin yüklenmesini sağlayabilirsiniz) ve bu çekirdeklere isteğe bağlı parametrelerin aktarılmasına imkan veren etkileşimli bir arayüze sahiptir.

  Çekirdeğin başlatılması
Çekirdek yüklendiğinde aygıtları (sürücüleri üzerinden) ilklendirir, takas alanını etkinleştirir (günümüz çekirdeklerinde kswapd olarak bilinen bir çekirdek sürecidir) ve kök dosya sistemini (/) bağlar.

Çekirdeğe bu etkinliklerle ilgili olarak bazı parametreler aktarılabilir (örneğin kök dosya sistemi olarak başka bir disk bölümünü belirtebilirsiniz). Bu tür Linux parametreleri ile ilgili daha ayrıntılı bilgi için bootparam(7) kılavuzuna bakınız.

Bundan sonra çekirdek sadece, numarası 1 olan ilk süreci (kullanıcı tarafı) çalıştırır. Bu süreç kendisine verilmiş parametrelerden işine yaramayanları aktararak /sbin/init yazılımını çalıştırır.

  init ve inittab
init çalışmaya başladığında ilk olarak /etc/inittab dosyasında bulunan yönergeleri okur. Bu dosya farklı çalışma seviyeleri ile bu çalışma seviyelerinde çalıştırılacak komutlara ilişkin bilgiler içerir.

Bu, sistem yöneticisine belli servislerin ilişkilendirilebildiği farklı çalışma seviyeleri ile (örn: S tek kullanıcılı kiptir, ağ servisleri için 2 gibi) kolayca yönetilebilen bir şema sunar. Sistem yöneticisi çalışma seviyesini init(8) ile değiştirebilir ve o anki çalışma seviyesini runlevel(8) ile sorgulayabilir.

Servislerin başlatılması ve durdurulması bu dosyayı düzenleyerek yapılmaz. Bu dosya içindeki veriler, belirli çalışma seviyelerinde çalıştırılacak ya da durdurulacak servislerin betiklerinin bulunduğu yere denetimi aktarmakta kullanılır.

  Açılış betikleri
Bilgi:
    Aşağıdaki açıklamalar sadece SYSV-R4 temelli sistemlere uygulanır. Bunlar ticari Unix'ler (Solaris, HPUX, Irix, Tru64) ile bazı Linux dağıtımlarıdır (Red Hat, Fedora, Debian, Mandrake, Suse, Caldera). Bazı sistemler (Slackware Linux, FreeBSD, OpenBSD) açılış betiklerinin düzenlenmesinde biraz daha farklı şemalar kullanırlar.

Yönetilen her servis (posta sunucusu, nfs sunucusu, cron, vs.) için belirli bir dizinde (çoğu Linux sürümünde /etc/init.d dizinidir) bulunan tek bir betik vardır. Bu betiklerin herbiri ya sadece 'start' (servisin başlatılmasını sağlar) ya da genel olarak üzerinde "anlaşma sağlanmış" sözcükleri argüman kabul ederler (örneğin, 'restart' servisi durdurur ve tekrar başlatır, 'status' servisin durmu hakkında bilgi döndürür). Betikler argümansız çalıştırıldığında kullanılabilecek argümanların listesini gösterir.

  Çalışma seviyelerine özel dizinler
Servislerin belirli çalışma seviyelerinde çalıştırılması, durdurulması ve çalıştırılma sıralarının belirlenmesi için özel dizinler vardır. Bunlar normalde /etc/rc[0-6S].d dizinleridir. Bu dizinlerin her birinde /etc/init.d dizininde bulunan betiklere sembolik bağlar bulunur.

Bir birincil betik (genellikle /etc/rc) inittab(5)'dan çağrılır ve bu betik çalışma seviyesi dizinlerindeki sembolik bağlar üzerinden servis betiklerini çalıştırır. Betiklerin sembolik bağ isimlerinden 'S' ile başlayanlar 'start' argümanı ile (servisi başlatmak için), 'K' ile başlayanlar ise 'stop' argümanı ile (servisi durdurmak için) çalıştırılır.

Aynı çalışma seviyesinde betiklerin hangi sırada çalıştırılacaklarını belirlemek için sembolik bağ isimleri sıra numaraları içerir. Bu numaradan sonra da çalıştırılacak servisin ismi gelir. Örneğin, /etc/rc2.d/S80sendmail ile sendmail 2. çalışma seviyesinde başlatılır. Ancak bu, /etc/rc2.d/S12syslog'dan sonra ve /etc/rc2.d/S90xfs'den önce çalıştırılır.

Çalışma seviyelerini ve açılış sırasını bu bağlar sayesinde kolayca yönetibiliriz. Bir çok Linux dağıtımı bu işlemi daha da kolaylaştıran araçlarla gelir (örn, chkconfig(8).

  Sistemin açılışta yapılandırılması
Artalanda başlatılan süreçler genellikle isteğe bağlı bazı parametreler ve komut satırı seçenekleri kabul ederler. Sistem yöneticilerinin bu parametreleri betiklere dokunmadan daha kolay düzenleyebilmeleri için süreçlerin kendilerine ait yapılandırma dosyaları vardır. Bunların yerleri dağıtımlara göre değişir. Örneğin Red Hat için bu dosyalar /etc/sysconfig dizininde bulunur.

Eski Unix'lerde bunlar komut satırı seçenekleri iken günümüz Linux sistemlerinde (ve HPUX'de) bu dosyalar kabuk değişkenlerini içerir. /etc/init.d dizininde bulunan betikler bu değişkenlerin değerlerini kullanır.

İLGİLİ DOSYALAR
/etc/init.d/, /etc/rc[S0-6].d/, /etc/sysconfig/

İLGİLİ BELGELER
inittab(5), bootparam(7), init(8), runlevel(8), shutdown(8).

ÇEVİREN
Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Aralık 2003