İSİM
initrd - önyükleyici ilklendirmeli RAM disk
/dev/initrd aygıtı salt-okunur olup
büyük aygıt numarası 1,
küçük aygıt numarası 250’dir.
/dev/initrd genellikle 0400 izinleriyle (sadece root için
okuma izni) root:disk sahipliğinde bir dosyadır. Linux
sisteminde /dev/initrd aygıtı yoksa şu
komutlarla oluşturulabilir:
mknod -m 400 /dev/initrd b 1 250
chown root:disk /dev/initrd
Ayrıca, /dev/initrd aygıtının
kullanılabilmesi için Linux çekirdeği hem
"RAM disk" ve hem de "Initial RAM disk" desteğini
gömülü olarak içermelidir (yani çekirdek
CONFIG_BLK_DEV_RAM=y ve CONFIG_BLK_DEV_INITRD=y
seçenekleri ile derlenmiş olmalıdır).
/dev/initrd aygıtı kullanılırken RAM disk
sürücüsü modül olarak yüklenemez.
/dev/initrd özel dosyası 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çılış işlemi
initrd ile açılış
sırasında sistem şöyle yüklenir:
- 1.
- Önyükleyici çekirdeği ve
/dev/initrd’nin içeriğini belleğe
yükler.
- 2.
- Çekirdek çalışmaya başlayınca,
çekirdek /dev/initrd aygıtının
sıkıştırmasını
çözüp 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’ı oku-yaz erişimiyle
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ı betik
veya 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
geçerli davranışı için EK
BİLGİ bölümüne
bakınız.)
- 7.
- Normal kök dosya sisteminde /initrd dizini varsa,
/dev/ram0, / dizininden /initrd dizinine
taşınır. Aksi takdirde, /initrd dizini yoksa,
/dev/ram0 sistemden ayrılır. (/dev/ram0,
/ dizininden /initrd dizinine
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 /linuxrc
sonlandığı zaman /dev/ram0 üzerinde
hala çalışan süreçler varsa
çekirdeğin davranışı
BELİRSİZDİR. (Çekirdeğin
geçerli davranışı için EK
BİLGİ 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:
- 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
gzipli dosya sistemi imgesidir.
- noinitrd
- Bu önyükleme seçeneği iki dönemli
açılış işlemini 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 imgesi
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ı belirler. 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
Documentation/filesystems/nfs/nfsroot.txt (Linux 2.6.33
öncesinde Documentation/filesystems/nfsroot.txt)
dosyasına bakılabilir. Kök dosya sistemi
ayarları ile ilgili daha fazla bilgi edinmek için bkz:
LILO ve LOADLIN belgeleri.
Ayrıca normal kök dosya sistemine
geçiş /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. Bu kullanıcıya sorularak, sondalanarak veya
ikisini de kullanarak yapılabilir.
- 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 ilk
dosya sisteminden gerekli çekirdek modüllerini
yükler.
- 4.
- /linuxrc çalıştırılabiliri
kök dosya sistemini oluşturur ve içini doldurarak
kullanıma hazırlar (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ında değişiklik yapılabilir, sonra
sistemden ayrılıp son olarak /dev/ram0
içindeki imge 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 olası
sağlamlık sınamasından sonra otomatik
algılama ya da kullanıcıya sorma kullanabilir.
Son ama en çok kullanılan senaryo 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.
İLGİLİ DOSYALAR
/dev/initrd
/dev/ram0
/linuxrc
/initrd
- 1.
- /dev/ram0, / dizininden /initrd dizinine
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ıda
belirtilen davranışa bağımlı
olmamalıdır. Bu davranış
çekirdeğin gelecekteki sürümlerinde
değişebilir.
İLGİLİ BELGELER
chown(1), mknod(1), ram(4),
freeramdisk(8), rdev(8)
Çekirdek paketinin 4.10 sürümü
öncesinde Documentation/initrd.txt, sonrasında
Documentation/admin-guide/initrd.rst dosyası, LILO belgeleri,
LOADLIN belgeleri, SYSLINUX belgeleri.
initrd aygıtının çekirdek kodu
Werner Almesberger ve Hans Lermen 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
© 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.