Sunday, February 25

Recompile kernel, do you really need it? (openbsd point of view)

Sebagian besar artikel ini berasal dari chapter 12 building custom kernel, buku Absolute OpenBSD, UNIX for practical paranoid.

OpenBSD membuat kernel operating system yang berkualitas tinggi sehingga tidak memerlukan tweaking/tuning selain setting alokasi IRQ, memory address, atau instance driver. Kernel yang di produksi dapat bekerja sempurna pada hampir semua kondisi. tentu saja pada kondisi extrem, anda juga dapat mengcompile custom kernel dari source. dengan mengetahui cara mem-build kernel, pemahaman anda tentang operating system akan lebih meningkat.

Budaya recompile kernel

Recompile dan rebuild kernel adalah kegiatan yang sudah mendarah-daging dalam dunia open-source. jika anda menjalankan UNIX-like OS seperti *BSD & linux, anda biasanya akan me-recompile kernel anda. saran dari mailing list juga ramai mengatakan bahwa anda perlu me-modify, compile, dan tuning kernel anda. sehingga seakan-akan recompile kernel adalah jawaban dari segala persoalan. wajar sih, jika kita punya source codenya, kenapa tidak dipakai? jika anda belum tahu cara compile kernel, maka sudah ada banyak orang yang membantu anda menyediakan tutorial untuk compile kernel.

Well, jika anda datang dengan background seperti paragraf diatas, OpenBSD akan membuat anda shock. rebuiling kernel di OpenBSD adalah dilarang dan sangat TIDAK direkomendasikan. komunitas OpenBSD memandang bahwa recompile kernel adalah bukan hal yang krusial, dan rebuilding kernel bukan solusi dari masalah. anda akan sangat-sangat jarang melihat bahwa developer OpenBSD mensarankan untuk recompile kernel, kecuali memang ada masalah serius di kernel. Orang yang melakukan recompile kernel biasanya adalah para ahli platform (hardware) atau newbie yang suka coba2. sedangkan untuk para ahli OpenBSD, justru melakukan hal sebaliknya.

Anda tidak pernah recompile kernel pada UNIX komersial seperti HP-UX, Solaris, AIX toh? simply because kernel mereka adalah ready to run. anda dapat mentuning kernel tersebut, tapi anda tidak punya hak untuk me-replace kernel toh? microsoft windows juga punya kernel loh, tapi para admin windows tidak berniat untuk men-tweak kernel tersebut. paling mereka cuman main2 di registry. Kernel OpenBSD didesign seperti kernel OS commercial, sehingga kernel bawaan adalah cukup untuk production.

Anggap anda membeli microsoft windows dan me-recompile kernelnya untuk menambah beberapa feature disana, kemudian complain ke customer service bahwa OS anda bermasalah sejak anda recompile kernel windows. tentu saja anda akan benar2 ditertawakan mereka, dan akan disuruh untuk menginstall ulang windows dengan menggunakan kernel bawaan. mirip dengan anda beli iphone, anda utak-atik itu iphone, dan complain ke apple bahwa iphone anda bermasalah setelah anda utak-atik. tidak ada yang anda dapatkan selain jawaban: beli iphone baru!

hal yang sama juga terjadi di OpenBSD. para developer OpenBSD sama sekali tidak punya kewajiban untuk membantu orang dengan custom kernel. ketika anda me-recompile kernel, artinya apapun yang terjadi adalah tanggung jawab anda. jika system anda crash setelah recompile kernel, maka mereka tidak akan peduli. mengubah opsi kernel atau mengubah baris kernel kliatannya adalah hal yang sepele bagi newbie, namun baris tersebut bisa jadi berpengaruh besar pada ribuan baris kode lainnya tanpa anda sadari.

Project OpenBSD sangat ramah terhadap newbie yang butuh bantuan, in a sense that they are using shipped kernel. tentu saja para orang-orang disana akan memberikan source code kernel dan menjelaskan kepada anda cara compile kernel. tapi anda harus ingat bahwa proses compile kernel dan efek yang ditimbulkannya adalah murni tanggung jawab anda. Para developer OpenBSD akan sangat antusias mentroubleshoot problem yang terjadi pada system dengan kernel bawaan, karena mereka sangat peduli dengan kualitas produk mereka.

Ubuntu, RHEL, Suse Enterprise juga tidak merekomendasikan recompile kernel. di ubuntu, penggunaan kernel bawaan saja selalu di ikuti dengan term “use at your own risk” artinya canonical tidak bertanggung jawab jika ubuntu mereka merusak system anda. kernel bawaan aja selalu diikuti term tersebut, gimana kalo customized kernel coba? jika anda pengen BISA komplain ke canonical, RedHat, atau SuSE enterprise, maka anda harus beli jasa/support mereka. ┬ádan mereka tentu saja akan mendefinisikan kondisi environment yang diperlukan untuk menjalankan OS mereka.

Kenapa membuat custom kernel?

  • Tentu saja jika anda kernel developer, anda akan sering recompile kernel.
  • Jika anda ingin mencoba experimental feature OpenBSD. misal feature RAID untuk hardware tertentu
  • Memperbaiki celah security dan perbaikan ini memerlukan patch kernel, sehingga harus recompile kernel. lagian dengan system repo seperti sekarang, kernel patch dapat dilakukan tanpa harus recompile kernel.
  • Alasan terakhir untuk compile kernel biasanya terkait dengan memory. Namun ini adalah alasan klasik yang dapat anda ignore dengan situasi sekarang. kernel OpenBSD makan memory sekitar 5MB, coba bandingkan dengan RAM 1GB anda. Yah kecuali anda menjalankan OpenBSD di komputer pada saat indonesia belum reformasi.

Problem yang mungkin terjadi pada proses mem-build kernel

  • interdependency antar modul kernel adalah cukup kompleks dan kadang tidak terdokumentasi. contoh, kadang modul A memerlukan modul B agar dapat dicompile, tapi informasi ini tidak ditulis di prosedur recompile kernel, melainkan ada di komentar source code kernel. jika anda tidak membaca source code, maka proses kompile anda akan dijamin error. para developer OpenBSD mengasumsikan bahwa anda dapat membaca source code dengan baik.
  • Design cross-platform OpenBSD dapat menjadi hal yang komplex. different system akan menggunakan different bus, IRQ, etc. jika parameter ini tidak sesuai, proses kompilasi anda tidak akan sesuai.
  • error ketika compile bisa jadi karena corrupt di source codenya. bisa jadi dikarenakan anda salah meng-apply patch, salah edit, salah copy, salah delete, etc.
  • jika anda dapat trouble ketika compile kernel, anda dapat meminta bantuan. tentu saja anda harus dapat menyediakan deskripsi problem sejelas-jelasnya (spec hardware, kernel source code, konfigurasi hardware, dst). namun ingat, bahwa mereka tidak punya kewajiban untuk membantu anda. malah mungkin anda akan dibalas dengan partanyaan: kenapa anda compile kernel? apa yang salah dengan kernel bawaan?

Problem yang mungkin terjadi ketika menjalankan custom kernel

  • custom kernel dapat menyebabkan beberapa problem: beberapa program tidak berjalan sempurna, system tidak mau boot, konfigurasi hardware berubah, dan yang dapat menyebabkan system crash baik itu frequently atau tidak, reproducible atau tidak.
  • ketika anda menjalankan custom kernel, maka anda harus tahu bahwa anda tidak dapat mengharapkan support dari developer kernel. karena para developer itu lebih tertarik untuk mentroubleshoot problem yang terjadi pada kernel standard.
  • jika ada problem yang terjadi pada custom kernel, dan dapat di reproducible pada kernel standard (GENERIC), maka para developer akan senang hati membantu anda. tentu saja mereka meminta anda untuk merestart system anda untuk me-load standard kernel.
  • sebagai contoh, ada sebuah mesin OpenBSD dengan spec Pentium 166 with 80MB of RAM. didalamnya dijalankan custom kernel agar dapat menghemat memory. saat ini belum ada problem, tapi bisa saja crash suatu hari. jika anda dapat me-reproduce kejadian crash ini dengan kernel GENERIC (standard) disertai data system yang memadai, maka developer OpenBSD akan sangat senang membantu anda.

semoga berguna bagi pembaca
Versi pendek URL: http://bit.ly/fQv6Jb

2 Comments

  • Artikel yang menarik dan cukup sering di bahas di milis2 luar, tapi buat saya dengan secuil pengetahuan hardware dan *nix saya senang sekali menghabiskan waktu dengan recompile OBSD kernel. tujuan saya biasanya, remove driver dan kernel feature yang tidak dibutuhkan, lebih mendekatkan diri dengan si OBSD, ngabisin waktu nungguin error muncul pada saat recompile kernel dan mendapatkan kepuasan pada saat berhasil mendiet-kan si OBSD kernel,..

    Ref: http://yusufhadiwinata.com/~bin_pwd/?p=139

  • @yusuf:
    saya dulu juga begitu mas, seenng banget kompile ini dan itu.
    cuman setelah kerja di dunia professional, disana waktu adalah uang. dan diperusahaan besar, yang penting adalah support. yang penting system running well dan dalam waktu yang tidak lama, dan kalo ada apa-apa, harus jelas menghubungi siapa.

    menurut saya nih, secanggih apapun seorang admin, dia hanyalah seorang admin, tukang suruhan (disuruh install, disuruh config, disuruh delete, dll).

    kalo alasannya untuk mendietkan kernel, bukankah sekarang kernel itu modular?
    tinggal di load aja modul yang perlu.

    kalo alasannya lebih cepat, apakah signifikan peningkatan kecepatannya? jika ada ada mobil A 11km/jam, mobil B 12km/jam, ya tentu saja mobil B lebih cepat. tapi apakah signifikan bedanya?

    terlalu berharga waktu yang dibuang untuk kompile. tapi kalo alasannya untuk belajar, ya saya setuju sekali mas.

    beda ceritanya kalo admin sekaligus developer kernel. kita bisa bikin produk yang berbasis kernel tsb. kompile sana-sini biar produk kita unik.

    hehehe

    anyway, terima kasih telah berkunjung mas.

Leave a Reply

Your email address will not be published. Required fields are marked *