04 September 2008

apa sih initramfs itu?

Mekanisme initramfs telah dimasukkan ke dalam kernel 2.5.46. Dengan initramfs, sistem berkas(file system) dapat dibuat selama proses boot. Sistem ini agak berbeda dengan initrd dimana sebelum sistem berkas dibuat, initrd perlu mengaitkan(mount) hard disk terlebih dahulu, menemukan partisi yang cocok dan mencari berkas image untuk kemudian dikaitkan kembali menjadi sistem berkas yang siap dipergunakan sebelum proses boot dilanjutkan. Sedangkan initramfs ini bisa dijalankan jauh sebelum kernel melakukan pengaitan disk. Lalu initrd, proses ini inheren dengan kernel. Misalnya untuk mencari image initrd, mengaitkan dan bekerja dengan ramdisk, semuanya dilakukan oleh kernel. Padahal ini semua harusnya tugas program di user space. Selain itu juga, ramdisk menyalin tree yang ada di image, kedalam memory, sedangkan ramfs tidak tergantung pada block device sama sekali.
Patch initramfs yang pertama kali diposting di tahun 2002 ini, secara teknis dapat didefinisikan memiliki keuntungan sebagaimana berikut:

- Kustomisasi selama proses booting akan menjadi lebih mudah. Selama ini perubahan di proses boot, membutuhkan patch ke kernel, dengan adanya ini, tidak perlu lagi. Kustomisasi bisa dilakukan dengan code terpisah, dan berjalan di user space (di atas kernel, tidak inheren di kernel/kernel space).

- Memindahkan kode inisialisasi pada saat booting akan memudahkan para pengembang. Disana dapat dibuat beberapa set pustaka dalam C, proteksi memori dan kemudahan program di user space lainnya.

- initramfs ini akan membuat kernel lebih ramping, karena proses yang dibutuhkan oleh inisialisasi saat booting, akan dipindahkan ke user space, dan berinteraksi kepada kernel cukup dengan system call saja.

Initramfs ini diperkirakan akan meningkat penggunaannya, karena bisa menjalankan beberapa proses saat boot. Misalnya menset perangkat keras yang kompleks, percakapan antar jaringan (seperti DHCP atau pertukaran kunci kriptograf). Selama ini penggunaan initramfs sangat terbatas, mengingat semua kode programnya menyatu dengan kernel. Namun baru-baru ini diposting oleh H Peter Anvin, dalam set Klibc. Dalam patch klibc terbaru ini, telah menghapus banyak fungsi dalam klibc yang merupakan wrapper kepada system call. Klibc juga memungkinkan untuk menjalankan shell bernama 'dash' yang bisa melakukan mount sistem berkas, set IP, DHCP dan sebagainya. Semua program/proses ini dijadikan kinit. Mirip dengan program initrd (initial ramdisk), namun dengan perbedaan teknis sebagaimana disebutkan di atas. Jadi sekenario jalannya, patch klibc akan dimasukkan ke dalam kernel, lalu ada program kinit yang berjalan di user space.

Tapi dengan adanya patch dan seperangkat pustaka yang terpisah dari kernel, lalu apakah keduanya terpisah atau klibc dan kinit merupakan bagian dari kernel? Jika terpisah, maka kernel sangat tergantung pada kinit untuk bisa inisialisasi. Berbeda dengan initrd yang dijalankan semua prosesnya oleh kernel. Dia hanya menyediakan sistem berkas, dan modul/driver yang dibutuhkan untuk dimuat langsung oleh kernel. Jika kinit dan kernel nggak sinkron, bisa dipastikan sistem tidak akan jalan.

Mungkin nanti dalam implementasinya kernel dan kinit akan dijadikan satu paket oleh distributor Linux. Isu lain yang muncul dari keputusan ini adalah kualitas kinit yang berbeda-beda dari tiap distro, akan membuat pengguna lebih ruwet lagi, bahkan bisa terkunci kepada satu distro. Theodore T'so sendiri menyarankan agar kinit dijadikan satu dengan kernel dan menjadi tanggung jawab developer kernel untuk menyusunnya, dan bukan dibebankan pada pembuat distro.

Topik ini masih menjadi isu, dan mungkin akan didiskusikan dalam konferensi Linux mendatang.

Tidak ada komentar:

Posting Komentar

hindari menggunakan kata-kata yang tidak sopan,atau menyinggung SARA

apa sih initramfs itu?

Mekanisme initramfs telah dimasukkan ke dalam kernel 2.5.46. Dengan initramfs, sistem berkas(file system) dapat dibuat selama proses boot. S...