August 14, 2010

Extract file initrd.img

Menurunkan sebuah distro, tidak sesulit seperti yang kebanyakan orang bayangkan. Beberapa ilmu yang perlu diketahui antara lain, packaging, init script, scripting, dan melakukan patching serta kompilasi program dari source code. Jika malas, cukup hapus paket yang tidak diperlukan, atau tambah paket yang diperlukan. Pada tingkat lanjutan, tentunya sudah menjamah (modifikasi) script-script yang ada pada distro master-nya. Diantaranya boot-script, init-script dan install script. Lebih expert lagi adalah builder yang mau membuat atau menambahkan script-script buatannya sendiri.

Hal tersebut diatas adalah di-sisi distronya. Dan bagaimana di sisi pengembangan? menurut saya, seorang builder yang baik, yang ingin terus mengembangkan distro turunannya dengan versi-versi yang akan datang, tentu memiliki atau membuat script yang dapat digunakan untuk otomatisasi pembuatan paket atau blok file pada pengembangan berikutnya. Sehingga tidak perlu dilakukan secara manual (by hand). Sebagai contoh, pada Slackware tentunya ada master script, dimana untuk proses ekstraksi, kompilasi, pemaketan program, hingga pembuatan file iso distro menjadi siap rilis, dapat dilakukan hanya dengan memanggil satu script utama.

Tidak pernah ada kata terlambat untuk memulai, untuk membuat custom installer, hal pertama yang perlu dilakukan adalah memodifikasi file initrd.img dari CD/DVD installer. Sebelum dimodifikasi, tentunya perlu ekstraksi. Berikut adalah file script yang saya buat untuk melakukan ekstraksi file initrd.img (extract-initrd.sh):

#!/bin/bash
extract_initrd()
{
    echo "extracting initrd.img.."
    mkdir initrd
    cd initrd
    gzip -dc ../initrd.img | cpio -id
    cd ../
    echo "done!"
}

if [ -f initrd.img ]
then
    if [ -d ./initrd ]
    then
        echo "removing old initrd directory.."
        rm -Rf ./initrd/
    fi
    extract_initrd
else
    echo -e "\E[31;40minitrd.img file not found!"; tput sgr0
fi

Script diatas akan membuat direktori initrd, didalamnya adalah hasil ekstraksi dari file initrd.img. Direktori hasil ekstraksi memiliki struktur sistem file yang sama dengan root filesystem, pada saat CD installer dijalankan.

Referensi: OpenVz