İSİM¶
initrd - önyükleyici ilklendirmeli RAM disk
AÇIKLAMA¶
/dev/initrd özel dosyası bir salt-okunur blok
aygıtıdır.
/dev/initrd aygıtı
çekirdek başlatılmadan önce ön
yükleyici tarafından ilklendirilen (yüklenen) bir RAM
disktir. Çekirdek iki dönemden oluşan
açılış süreci için
/dev/initrd blok aygıtının içeriğini
kullanabilir.
Açılış işleminin ilk döneminde
çekirdek çalışır ve
/dev/initrd
(önyükleyici tarafından ilklendirilmiş RAM disk)
içeriğinden başlangıç kök dosya
sistemini bağlar. İkinci dönemde ise bu
başlangıç kök dosya sisteminin
içeriğinden ek sürücüler veya diğer
modüller yüklenir. Ek modüller yüklendikten sonra
yeni bir kök dosya sistemi (yani, normal kök dosya sistemi)
farklı bir aygıttan bağlanır.
AÇILIŞ İŞLEMݶ
initrd ile açılış sırasında
açılış süreci şöyle
gelişir:
- 1.
- Önyükleyici çekirdeği ve
/dev/initrd'nin içeriğini belleğe
yükler.
- 2.
- Çekirdek çalışmaya başlayınca,
çekirdek kendinin
sıkıştırmasını
çözüp /dev/initrd
aygıtının içeriğini /dev/ram0
aygıtına kopyaladıktan sonra /dev/initrd
tarafından kullanılan belleği serbest
bırakır.
- 3.
- Çekirdek, başlangıç kök dosya sistemi
olarak /dev/ram0'ı okunabilir-yazılabilir
bağlar.
- 4.
- İstenen normal kök dosya sistemi zaten
başlangıç kök dosya sistemi ise (yani
/dev/ram0) çekirdek son açılış
adımına atlar.
- 5.
- Başlangıç kök dosya sisteminde /linuxrc
çalıştırılabilir dosyası varsa,
/linuxrc 0 kullanıcı kimliği ile
çalıştırılır. ( /linuxrc
dosyası çalıştırılabilirlik
iznine sahip olmalıdır. /linuxrc dosyası bir
betik ya da geçerli
çalıştırılabilir bir dosya olabilir.)
- 6.
- /linuxrc çalıştırılmazsa ya da
/linuxrc sonlandığı zaman normal kök
dosya sistemi bağlanır. (Başlangıç
kök dosya sistemine bağlanmış dosya
sistemleriyle /linuxrc çıkış yaparsa
çekirdeğin davranışı
BELİRSİZDİR. (Çekirdeğin mevcut
davranışı için NOTLAR
bölümüne bakınız.)
- 7.
- Normal kök dosya sisteminde /initrd dizini varsa,
/dev/ram0, / den /initrd'ye
taşınır. Aksi takdirde, /initrd dizini yoksa,
/dev/ram0 sistemden ayrılır. (/dev/ram0,
/ den /initrd'ye
taşındığı zaman sistemden
ayrılmaz ve böylece /dev/ram0 üzerinde
çalışmakta olan süreçler
çalışmaya devam edebilir.) Normal kök dosya
sisteminde /initrd dizini yoksa ve /dev/ram0 üzerinde
hala çalışan süreçler varsa
çekirdeğin davranışı
BELİRSİZDİR. (Çekirdeğin mevcut
davranışı için NOTLAR
bölümüne bakınız.)
- 8.
- Normal kök dosya sistemi üzerinde olağan
açılış işlemi (yani /sbin/init
çağrısı) uygulanır.
SEÇENEKLER¶
Aşağıdaki önyükleyici seçenekleri
initrd ile kullanıldığı zaman
çekirdeğin açılış işlemi
etkilenir:
- initrd=dosya-ismi
- /dev/initrd'nin içeriği olarak yüklenecek
dosyayı belirtmek içindir. LOADLIN için bu bir komut
satırı seçeneğidir. LILO için bunu
/etc/lilo.conf dosyasında kullanabilirsiniz. Bu seçenekle
belirtilen dosya ismi genellikle gzip'li dosya sistemi eşlemi
olacaktır.
- noinitrd
- Bu önyükleme seçeneği
açılış işleminin iki dönemini
iptal eder. Çekirdek, /dev/initrd ilklendirilmemiş
gibi olağan açılışı
gerçekleştirir. Bu seçenekle,
önyükleyici tarafından belleğe yüklenen
/dev/initrd'nin içeriği korunur. Bu seçenek
/dev/initrd'nin içeriğinin herhangi bir veri
olmasına izin verir, dosya sistemi eşlemi olması
gerekmez. Bu durumda /dev/initrd aygıtı salt
okunurdur ve sistem açıldıktan sonra da salt okunur
olarak kalabilir.
- root=aygıt-ismi
- Normal kök dosya sistemi olarak kullanılacak aygıt
ismi belirtilir. LOADLIN için bu bir komut
satırı seçeneğidir. LILO için
bunu /etc/lilo.conf dosyasında kullanabilirsiniz. Bu
seçenekle belirtilecek aygıt, kök dosya sistemi
olarak elverişli ve bağlanabilir bir aygıt
olmalıdır.
NORMAL KÖK DOSYA SİSTEMİNİN DEĞİŞTİRİLMESݶ
Öntanımlı olarak, normal kök dosya sistemi
için, çekirdeğin ayarları (
rdev ile
çekirdek dosyasında yapılan ayarlar ya da çekirdek
dosyası içinde derlenmiş ayarlar) ya da
önyükleyici seçenekleri ile yapılan ayarlar
kullanılır. Bir NFS üzerinden bağlı normal
kök dosya sistemi için,
nfs_root_name ve
nfs_root_addrs önyükleyici seçenekleri NFS
ayarları olarak kullanılır. Bir NFS üzerinden
bağlı normal kök dosya sistemi ile ilgili daha fazla
bilgi edinmek için çekirdek belgeleri arasında bulunan
nfs-root.txt dosyasına bakınız. Kök dosya sistemi
ayarları ile ilgili daha fazla bilgi edinmek için ise
LILO ve
LOADLIN belgelerine bakınız.
Ayrıca normal kök dosya sisteminin değiştirilmesi
/linuxrc çalıştırılabiliri ile de
mümkündür. Bunun için
/proc
bağlanmış olmalıdır.
/proc
bağlandıktan sonra
/linuxrc,
/proc/sys/kernel/real-root-dev,
/proc/sys/kernel/nfs-root-name
ve
/proc/sys/kernel/nfs-root-addrs proc dosyalarına yazarak
normal kök aygıtını değiştirir. Bir
fiziksel kök aygıtı,
/linuxrc tarafından
yeni kök dosya sisteminin aygıt numarası
/proc/sys/kernel/real-root-dev içine yazılarak
değiştirilir. Bir NFS kök dosya sistemi ise,
/linuxrc tarafından yeni kök dosya sisteminin NFS
ayarları
/proc/sys/kernel/nfs-root-name ve
/proc/sys/kernel/nfs-root-addrs dosyalarına
yazıldıktan sonra
/proc/sys/kernel/real-root-dev
dosyasına 0xff (sanal NFS aygıt numarası)
yazılarak değiştirilir. Örneğin
aşağıdaki kabuk komutu normal kök
aygıtını
/dev/hdb1 olarak
değiştirecektir:
echo 0x365 >/proc/sys/kernel/real-root-dev
Bir NFS örneği olarak, IP numarası 193.8.232.7 ve ismi
`idefix' olan bir sistem için 193.8.232.7 IP numarasıyla bir
yerel ağlı NFS sunucusu üzerindeki
/var/nfsroot
NFS dizinini normal kök dosya sistemi olarak değiştirecek
kabuk komutu:
echo /var/nfsroot >/proc/sys/kernel/nfs-root-name
echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \
>/proc/sys/kernel/nfs-root-addrs
echo 255 >/proc/sys/kernel/real-root-dev
KULLANIM¶
initrd'nin esas oluşturulma sebebi sistem kurulumunda modüler
çekirdek yapılandırmasını
mümkün kılmaktı.
Olası bir sistem kurulum senaryosu şöyle olabilir:
- 1.
- Önyükleyici uygulaması disketten ya da başka
bir ortamdan mümkün en küçük
çekirdekle (yani sadece /dev/ram, /dev/initrd ve ext2
dosya sistemi desteğiyle) başlar ve
başlangıç dosya sisteminin gzipli
sürümü ile /dev/initrd'yi yükler.
- 2.
- /linuxrc çalıştırılabiliri
normal kök dosya sistemini (1) ve dağıtım
ortamını (2) (CD-ROM, ağ, teyp, vs.) bağlamak
için gerekenleri (aygıt türü, aygıt
sürücüsü, dosya sistemi gibi) saptar.
- 3.
- /linuxrc çalıştırılabiliri
başlangıç dosya sisteminden gerekli çekirdek
modüllerini yükler.
- 4.
- /linuxrc çalıştırılabiliri
kök dosya sistemini oluşturur ve kullanıma sokar (Bu
adımda normal kök dosya sistemi henüz eksiksiz bir
sistem değildir).
- 5.
- /linuxrc çalıştırılabiliri
/proc/sys/kernel/real-root-dev dosyasına gerekli
değeri yazar ve /proc sistemden ayrılır,
normal kök dosya sistemi ve diğer dosya sistemleri
bağlı kalır ve /linuxrc
çalışmasını sonlandırır.
- 6.
- Bundan sonra çekirdek normal kök dosya sistemini
bağlar.
- 7.
- Artık normal kök dosya sistemi kullanıma
hazırdır, yani önyükleyici kurulabilir.
- 8.
- Sistemi açmak için kullanılacak modüllerle
birlikte bir dosya sistemini /dev/initrd'ye yükleyecek
önyükleyici yapılandırılır
(Yani, /dev/ram0 aygıtı
değiştirilebilir, sonra sistemden ayrılıp son
olarak /dev/ram0 içindeki eşlem bir dosyaya
yazılabilir).
- 9.
- Sistem artık açılabilir hale gelmiştir ve ek
kurulum işlemlerine devam edilebilir.
Yukarıdaki senaryoda
/dev/initrd'ye düşen anahtar
rol, çekirdeği yeniden derlemeden, büyük bir
çekirdek kullanmak zorunda kalmadan hatta bir
başlangıç çekirdeği seçilmesi bile
gerekmeden normal sistem işlemleri sırasında
kullanılan yapılandırma verilerinin yeniden
kullanılabilirliğini sağlamaktır.
Bir ikinci senaryo da tek bir yönetim ağında farklı
donanım yapılandırmalı sistemler üzerinde
çalışan Linux kurulumları içindir.
Böyle durumlarda, küçük bir çekirdek ailesi
(ideal olarak bir çekirdek) kullanılması ve
yapılandırmaya ilişkin sisteme özel
yapılandırmaların mümkün olduğu
kadar küçük tutulması istenebilir. Bu durumda,
ihtiyaç duyulan tüm modülleri içeren bir dosya
oluşturulur. Bundan sonra sadece
/linuxrc dosyası veya
/linuxrc tarafından
çalıştırılan bir dosya farklı
olabilirdi.
Bir üçüncü senaryo kurtarma diskleri için
daha elverişlidir. Kök dosya sisteminin disk
bölümünün yeri gibi bilgiler
önyükleme sırasında gerekli
olmadığından bunun için,
/dev/initrd'de
yüklü sistem bir olası sağlamlık
sınamasından sonra özdevimli algılama ya da bir
diyalog kullanabilir.
Son ama en az kullanılanlardan biri olmayan bir senaryo da CD-ROM'dan
kolay kurulum için
initrd kullanan CD-ROM'lu Linux
dağıtımlarının
kullandığı senaryodur. Dağıtım,
herhangi bir disket kullanmadan
/dev/initrd'yi doğrudan
yüklemek için LOADLIN'i kullanabilir.
Dağıtım ayrıca, bir
açılış disketinden LILO kullanıp,
/dev/initrd üzerinden CD-ROM'daki daha büyük bir
ram disk'i yükleyebilir.
YAPILANDIRMA¶
/dev/initrd ana numarası 1, alt numarası 250 olan bir salt
okunur blok aygıtıdır.
/dev/initrd genellikle 0400
izinleriyle (sadece root için okuma izni) root.disk
sahipliğindeki bir dosyadır. Linux sisteminde
oluşturulmuş bir
/dev/initrd yoksa,
aşağıdaki komutlarla oluşturulabilir:
mknod -m 400 /dev/initrd b 1 250
chown root:disk /dev/initrd
Ayrıca, "RAM disk" ve "başlangıç RAM
diski" desteği için destek,
/dev/initrd kullanacak
çekirdeğe gömülü olarak (
CONFIG_BLK_DEV_RAM=y ve
CONFIG_BLK_DEV_INITRD=y)
derlenmiş olmalıdır.
/dev/initrd
kullanılırken RAM disk bir modül olarak
yüklenemez.
İLGİLİ DOSYALAR¶
/dev/initrd
/dev/ram0
/linuxrc
/initrd
İLGİLİ BELGELER¶
chown(1),
mknod(1),
ram(4),
freeramdisk(8),
rdev(8), çekirdek paketindeki initrd.txt dosyası, LILO
belgeleri, LOADLIN belgeleri, SYSLINUX belgeleri.
NOTLAR¶
- 1.
- /dev/ram0, / dan /initrd ye
taşınırken bağlı kalan dosya sistemleri
kullanılmakta olan çekirdekle erişilebilir olmaya
devam eder. Buna rağmen /proc/mounts girdileri
güncellenmez.
- 2.
- /initrd dizini yoksa, kullanılmakta olan çekirdekle,
/dev/ram0 hala bir süreç tarafından
kullanılıyorsa ya da üzerinde bağlı bir
dosya sistemi varsa, /dev/ram0 sistemden tamamen ayrılmaz.
/dev/ram0 sistemden tamamen ayrılamamışsa
bellekte kalacaktır.
- 3.
- /dev/initrd kullanıcıları yukarıdaki
notlarda belirtilen davranışa bağımlı
olmamalıdır. Bu davranış
çekirdeğin gelecekteki sürümlerinde
değişebilir.
YAZAN¶
initrd aygıtının çekirdek kodu Werner
Almesberger <almesber (at) lrc.epfl.ch> ve Hans Lermen <lermen (at)
elserv.ffm.fgan.de> tarafından
yazılmıştır.
initrd kodu Linux
çekirdeğinin geliştirme sürümlerinden
1.3.73 sürümünde çekirdek kaynak koduna dahil
edilmiştir.
ÇEVİREN¶
Nilgün Belma Bugüner <nilgun (at)
belgeler·gen·tr>, Kasım 2003