Update kernel di ZeroShell-1.0.Beta12

Zeroshell-1.0.Beta12 dapat dijalankan dengan baik dari USB flash. Dukungan kernel-2.6.25.20 (yang release 15 Nov 2008) sudah mencukupi untuk mengenal device yang ada di motherboard terbaru. Hanya saja, GigaBit ethernet dari RealTek R8169 intermittent, kadang terdeteksi (namun tidak bisa berfungsi) kadang tidak. Device ethernet tersebut menggunakan modul kernel gigabit ethernet r8169, sehingga kemungkinannya adalah masih ada bug atau ada fungsi dari device terbaru yang belum diimplementasikan di modul r8169 ini.

Di sisi lain, dengan menggunakan kernel-2.6.30.5, card ethernet ini berfungsi dengan baik. Hal ini dapat dimaklumi karena driver r8169 ini telah mengalami banyak perbaikan, terutama fitur dan bugfixed. Jadi, agar ethernet (yang mandatory) dan device lain (yang mungkin belum disupport) di Zeroshell versi ini bisa berfungsi dengan baik, kernel harus diupdate. Bagaimana caranya?

Apakah ada solusi lain? Misalnya, kernel tetap sama, hanya driver r8169.c yang direkompile. Tapi sayangnya, struktur net_device_ops sudah berbeda sejak 2008-11-20. Menggunakan driver r8169 di kernel tree versi ini akan lebih susah, karena perubahan struktur ini.

Tidak ada artikel yang menjelaskan langkah-langkah mengupdate kernel di Zeroshell.

Update kernel Linux ini berarti harus mengupdate kernel image (bzImage/vmlinuz) dan kernel modules. Kernel modules ini bisa terletak di initial ramdisk image (initrd.gz) dan root filesystem (di direktori /lib/modules/). Jadi, setidaknya ada 4 langkah yang perlu dilakukan: 1) kompilasi kernel terbaru untuk menghasilkan bzImage dan modul kernel, 2) mengganti bzImage dengan yang baru, 3) mengganti modul kernel di initrd.gz dan 4) mengganti modul-modul kernel di root filesystem. Dan opsional, kalau ada modul kernel eksternal (yang tidak masuk di tree source Linux), maka modul ini harus direkompile dengan referensi kernel source terbaru. Lumayan repot yah…🙂

Yang pertama dilakukan adalah kompilasi kernel. Pekerjaan ini memerlukan 3 komponen, yaitu:

  1. paket-paket devel (kompiler dan linker): gcc, ld, libraries, dan headers. Saya menggunakan Puppy Linux-4.20 dan paket development devx.sfs. Ini tidak menjadi masalah, walaupun beda versi gcc, binutils dan glibc
  2. linux source terbaru: linux-2.6.31.4. Ambil yang terbaru saja
  3. konfigurasi kernel: file .config. Ini diperlukan saat kompilasi kernel, apakah modul-modul kernel akan terinstall dalam kernel atau sebagai modul kernel. Konfigurasi ini hendaknya sama dengan konfigurasi Zeroshell. Dimana mendapatkannya? dari kernel source Zeroshell

Saya menggunakan kernel source original, tanpa patch. Konfigurasi kernel menggunakan konfigurasi ZeroShell. Modul baru yang ada di kernel ini saya install saja. Kemudian kernel dikompile untuk menghasilkan bzImage (dengan ‘make bzImage’) dan modul kernel (dengan ‘make modules’). Image kernel untuk arsitektur x86 yang dihasilkan adalah arch/x86/boot/bzImage. Module akan terinstall ke direktori INSTALL_MOD_PATH dengan ‘make modules_install’.

Setelah image kernel dihasilkan, langkah kedua dilakukan dengan memindahkan bzImage ke direktori root partisi 1 flashdisk. File tersebut perlu direname menjadi vmlinuz, agar comply dengan konfigurasi bootloader grub ZeroShell. Partisi 1 tersebut berformat ext3, rw ini berisi kernel image, initrd dan bootloader grub. Karena modenya rw, maka file yang lama bisa langsung dioverwrite saja dengan ‘cp -f’.

Selanjutnya, initrd.gz perlu diupdate. Yang diupdate adalah hanya modul kernelnya saja, yaitu loopback fs, sata driver, usb host driver, usb-storage driver, dan modul dependensinya. Pertama, initrd.gz diekstrak dengan ‘gunzip initrd.gz’, kemudian di mount loopback ‘mount -o loop,rw initrd /mnt/initrd’. Update kernel modul yang ada di inird tersebut dengan modul yang baru. Kemudian, initrd di-unmount, dikompress dengan gzip dan dikokikan ke flashdisk.

Langkah terakhir ini yang cukup repot. Root filesystem terinstall di partisi 2 dengan format iso9660 yang readonly (seperti format CD). Modul kernel terinstall di sana. Dan besar partisinya sudah fix, yaitu sebesar 160 MB, yang hanya menyisakan sedikit space kosong. Sekarang, bagaimana cara menggantinya dengan modul yang baru dan bagaimana agar bisa cukup masuk ke partisi tersebut?

13 Responses to “Update kernel di ZeroShell-1.0.Beta12”

  1. mohon kelanjutannya pak kami membutuhkan ..makasih

  2. bos udah ga pke ZS lg yah, oh iya ada tambahan materi neeh yg berhubungan dgn ini
    http://www.zeroshell.net/eng/forum/viewtopic.php?t=2290

  3. Sore pak / mas…
    ada yg kurang jelas sedikit niy, tolong bahas detail tntang ini ya ….

    Saya menggunakan kernel source original, tanpa patch. Konfigurasi kernel menggunakan konfigurasi ZeroShell. Modul baru yang ada di kernel ini saya install saja. Kemudian kernel dikompile untuk menghasilkan bzImage (dengan ‘make bzImage’) dan modul kernel (dengan ‘make modules’). Image kernel untuk arsitektur x86 yang dihasilkan adalah arch/x86/boot/bzImage. Module akan terinstall ke direktori INSTALL_MOD_PATH dengan ‘make modules_install’.

    kalo bisa bagi pencerahan’a ke email saya.
    Makasih sebelumnya.

  4. @ pagrank,
    kaya’a udah ada perkembangan yang lebih update lagi bos. coba ck ulang atau googling lagi deh. Pasti banyak info2 terbaru.

  5. gan terima kasih sekali informasinya…

  6. thanks atas sharenya, ditunggu info selanjutnya…..

  7. salam kenal dan sukses selalu, terima kasih atas informasinya yang bermanfaat sekali…

  8. informasi yang sangat bermanfaat sekali….

  9. Menarik banget infonya, jadi tambah pengetahuan nih…..

  10. Pertanyaan sederhana Kenapa Zeroshell tidak pernah mengeluarkan versi Release. Selalu pakai beta, atau RC dsb. Kenapa ya kok seperi itu ?
    Thanks

  11. Keep up the great work, I read few blog posts on this site and I think that your weblog is very interesting and has got bands of great information.

Trackbacks

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: