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.
Bir sonraki bölümde basit C kodundan kendi minimal rootfs sistemimizi oluşturma anlatılacaktır.