Busybox ile Minimal Dağıtım Oluşturma¶
Busybox tek bir ikili dosya olarak temel linux komutlarını içerisinde barındıran bir dosyadır. Bu dosya ve kernel olduğu zaman sistemimiz açılıçacak temel komutları kullabileceğimiz bir linux elde etmiş oluruz.
İlk olarak busyboxu çalışma dizinimize kopyalayalım. Busyboxun static olarak derlenmiş olduğundan emin olalım.
$ mkdir distro
$ cd distro
$ install /bin/busybox ./busybox
$ ldd ./busybox
-> özdevimli bir çalıştırılabilir değil
Ardından initramfs için init dosyamızı aşağıdaki gibi oluşturalım.
#!/busybox ash
PATH=/bin
/busybox mkdir /bin
/busybox --install -s /bin
exec /busybox ash
initramfs dosyamızı paketleyelim.
$ chmod +x init
$ find ./ | cpio -H newc -o > initrd.img
# isterseniz initrd.img sıkıştırabilirsiniz.
$ gzip -9 initrd.img
Bu aşamada isterseniz initd.img dosyasını sıkıştırabilirsiniz.
Sıra initrd.img ve kernelin birleştirilmesine geldi. Bunun için aşağıdaki gibi dizin yapısına dosyalarımızı kopyalayalım. vmlinuz dosyamızı kendi sistemimizdeki /boot içinden alabiliriz.
iso/vmlinuz
iso/initrd.img
iso/boot/grub/grub.cfg
Burada grub.cfg dosyamız bootloader komutlarını içerir. İçerisine aşağıdaki gibi olmalıdır.
linux /vmlinuz
initrd /initrd.img
boot
Son olarak iso dosyamızı paketleyelim.
$ grub-mkrescue iso/ -o distro.iso
Minimal sistemimiz hazır. Test etmek için qemu kullanabilirsiniz.
$ qemu-system-x86_64 -cdrom distro.iso -m 1G
Burada busybox yerine isterseniz static olarak derlenmiş herhangi bir C dosyasını kullanabilirsiniz. Yapmanız gereken init dosyası yerine bu dosyayı kullanmaktır.