boot - Genel olarak açılış işlemleri
Açılış işlemleri sistemden sisteme
değişiklik gösterirse de genellikle beş
adımda incelenebilir:
1. donanımsal açılış
2. önyükleme
3. çekirdeğin yüklenmesi
4. init ve inittab
5. açılış betikleri
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 girdileri 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 girdiler 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ü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ı girdilerin
aktarılmasına imkan veren etkileşimli bir arayüze
sahiptir.
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 ardından disk
bölümünün belli bir yerinde bulunan ikincil bir
ö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 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.
Ç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ı girdiler
aktarılabilir (örneğin kök dosya sistemi olarak
başka bir disk bölümünü belirtebilirsiniz).
Bu tür Linux girdileri ile ilgili daha ayrıntılı
bilgi için
bootparam(7) kılavuzuna bakınız.
Bundan sonra çekirdek sadece, süreç kimliği 1 olan
ilk süreci (kullanıcı tarafı)
çalıştırır. Çekirdek kendisine
verilmiş girdilerden işine yaramayanları aktararak
/sbin/init yazılımını
çalıştırır.
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 hizmetlerin
ilişkilendirilebildiği farklı
çalışma seviyeleri ile (örn:
S tek
kullanıcılı kiptir, ağ hizmetleri için
2 gibi) kolayca yönetilebilen bir yapı sunar. Sistem
yöneticisi çalışma seviyesini
init(8) ile
değiştirebilir ve o anki çalışma seviyesini
runlevel(8) ile sorgulayabilir.
Hizmetlerin başlatılması ve durdurulması bu
dosyayı düzenleyerek yapılmaz.
/etc/inittab
içindeki veriler, belirli çalışma seviyelerinde
çalıştırılacak ya da durdurulacak
hizmetlerin betiklerinin bulunduğu yere denetimi aktarmakta
kullanılır.
- Bilgi:
- Aşağıdaki açıklamalar
sadece SYSV-R4 temelli sistemlere uygulanır. Bunlar ticari
Unix’ler ile bazı Linux
dağıtımlarıdır. Bazı sistemler
(Slackware Linux, FreeBSD, OpenBSD) açılış
betiklerinin düzenlenmesinde biraz daha farklı
yapılar kullanır.
Yönetilen her hizmet (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 her biri tek bir girdi kabul eder. Bunlar
genel olarak üzerinde anlaşma sağlanmış
belirli sözcüklerdir. Örneğin
’start’ sözcüğü hizmetin
başlatılmasını, ’stop’ ise
durdurulmasını sağlarken ’restart’ ile
hizmet önce durdurulur ardından başlatılır,
’status’ ile hizmetin durmu hakkında bilgi
alınır. Betikler girdisiz
çalıştırıldığında
kullanılabilecek girdilerin listesini gösterir.
Hizmetlerin 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)
betiğinden çağrılır ve bu betik
çalışma seviyesi dizinlerindeki sembolik bağlar
üzerinden hizmet betiklerini
çalıştırır. Betiklerin sembolik bağ
isimlerinden ’S’ ile başlayanlar ’start’
ile (hizmeti başlatmak için), ’K’ ile
başlayanlar ise ’stop’ ile (hizmeti 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 hizmetin 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 seviyeleri ve açılış
sırası bu bağlar sayesinde kolayca yönetilebilir.
Bir çok Linux dağıtımı bu işlemi
daha da kolaylaştıran araçlarla gelir (örn,
chkconfig(8).
Artalanda başlatılan süreçler genellikle
isteğe bağlı bazı girdiler ve komut
satırı seçenekleri kabul ederler. Sistem
yöneticilerinin bu girdileri 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 eski Red Hat sistemlerinde bu dosyalar
/etc/sysconfig dizininde bulunurdu.
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.
/etc/init.d/,
/etc/rc[S0-6].d/,
/etc/sysconfig/
init(1),
systemd(1),
inittab(5),
bootparam(7),
bootup(7),
runlevel(8),
shutdown(8).
© 2003, 2022 Nilgün Belma Bugüner
Bu çeviri özgür yazılımdır:
Yasaların izin verdiği ölçüde
HİÇBİR GARANTİ YOKTUR.
Lütfen, çeviri ile ilgili bildirimde bulunmak veya çeviri
yapmak için
https://github.com/TLBP/manpages-tr/issues adresinde
"New Issue" düğmesine tıklayıp yeni bir
konu açınız ve isteğinizi belirtiniz.