Ubuntu Manpages

/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.

Aþaðýdaki önyükleyici seçenekleri initrd ile kullanýldýðý zaman çekirdeðin açýlýþ iþlemi etkilenir:

/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.

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.

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.

Ö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

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.

/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.

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.

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