Birinci bölümde busybox ve linux çekirdeğini derlemiştik. Bu bölümde ise initramfs imajını oluşturacağız.

Initramfs oluşturma

Initramfs sistem açılırken belleğe ilk önce yüklenen dosyadır. Bu dosyanın içerisinde bulunan /init dosyası çekirdeğimiz tarafından çalıştırılarak açılış işlemi başlatılır. Bir önceki örnekte static olarak derlemiş olduğumuz busybox dosyasını kullanarak bir initramfs imajı oluşturalım.

Bunun için yeni bir dizin açarak içerisine busybox dosyamızı kopyalayalım. ardından init dosyamızı aşağıdaki gibi yazalım.

#!/busybox ash
/busybox mkdir -p /bin
/busybox --install -s /bin
export PATH=/bin
exec /bin/ash

Burada ilk satır shebang satırıdır ve dosyanın ne ile çalıştırılması gerektiğini belirtir.

İkinci satır /bin dizini oluşturmak için kullanılır.

Üçüncü satır busybox dosyasını /bin içerisine sembolik bağ atarak kurmak için kullanılır.

Dördüncü satırda PATH çevresel değişkeni ayarlanır. Bu sayede busybox komutlarını nerede arayacağını belirtmiş oluruz.

Son satırda mevcut süreci yeni bir ash kabuğu ile değiştirmek için yazdık.

Initramfs paketleme

init dosyamızı çalıştırılabilir hale getirelim ve aşağıdaki komut ile initramfs imajımızı üretelim.

find ./ | cpio -H newc -o > ../initrd.img

Eğer istersek initramfs imajımızın boyutunu düşürmek için sıkıştırabiliriz.

gzip -9 initrd.img

Initramfs ve çekirdeğin test edilmesi

Çekirdeğimiz ve initramfs imajımızı qemu kullanarak aşağıdaki komutla test edebiliriz.

qemu-system-x86_64 --enable-kvm -kernel bzImage -initrd initrd.img -append "quiet" -m 1024 

Eğer herhangi bir sorun yoksa karşınıza terminal ekranı çıkacaktır ve busybox komutlarını kullanabilirsiniz.

Minimal dağıtımın test edilmesi

Bir sonraki bölümde basit C kodundan kendi minimal rootfs sistemimizi oluşturma anlatılacaktır.