İ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