Compile dan Optimasi Kernel Linux

Hehehe.. sesuai saran temen2.. ni tutorial dari mas Trias Mukti Kuncoro makasih mas.. =))

Mengikuti diskusi yang sedang berkembang, ijin share dikit tentang compile dan optimalisasi kernel.
Pertama adalah mendapatkan kernel source, bisa langsung dari http://kernel.org/ atau dari repo distro yang anda pakai, umumnya letaknya di /usr/src/ Jika anda menggunakan kernel vanila dari kernel.org, letakkan di folder tersebut dan perlu diingat pastikan free space di partisi tersebut cukup longgar untuk melakukan kompilasi, jika opsi debugging enabled ketika compile kernel, ruang yang dibutuhkan mencapai 3 GB. Hal ini bisa disiasati jika partisi anda memang sudah mepet, gunakan static link, caranya? Cari sendiri gan.. :p Ya prinsipnya kernel source tadi anda letakkan di partisi lain misal /home/ baru kemudian buat static link dari /usr/src/ ke folder kernel source tersebu, jangan lupa file kernel yang udah didownload diekstrak dulu, jangan tanya lagi gimana caranya.. :p lewat GUI aja beres kok.. ;)
Oke setelah terekstrak dan tempat sudah beres, kemudian masuk ke folder kernel source tersebut. Oiya jangan lupa kita lakukan ini via console dan biar tambah mulus bertindak sebagai root, meskipun yang butuh akses root cuma tahap tertentu aja, tapi ga salah juga toh jika dari awal sudah sebagai root? :)

Dan jangan lupa tools2 yang dibutuhkan, intinya bagian development tools, lebih tepatnya kernel development. Jika manual 1 per 1:
-> gcc
-> make
-> binutils
-> ncurses-devel
beberapa distro membuat binutils menjadi 1 dengan gcc.
Oke setelah pemanasan dan persiapan sudah cukup, berikutnya adalah step by step mulai dari konfigurasi hingga compile dan install kernel. Dan perlu digaris-bawahi, asumsi adalah posisi kita di folder source kernel, jadi perintah2 yang ada berikut ada yang menggunakan relative path, mohon diperhatikan.


1) Ambil dahulu file konfigurasi kernel yang bersangkutan, bisa dicek di /proc/config.gz dengan perintah zcat:
   # zcat /proc/config.gz > .config 
perhatikan baik2 ya, itu file [dot]config, ada karakter titik. Cara lain jika configurasi kernel anda tidak mengijinkan mengambil config dari kernel, bisa ambil dari /boot/ biasanya di sana juga diletakkan konfigurasi kernel yang sedang dipakai, filenya diawali dengan config, copy-kan ke folder source dengan nama .config
2) Konfigurasi kernel, jalankan:
   # make menuconfig 
Langsung keluar dan simpan tanpa konfigurasi juga tak mengapa, misalkan hanya ingin mencoba kernel vanila dan konfigurasi disesuaikan dengan config kernel dari distro. Untuk konfigurasi dibahas di komentar.
3) Compile kernel, perintahnya sederhana saja dan ini berlaku hampir di semua distro kecuali beberapa seperti slackware berbeda.  
   Saya memakai cara ini untuk compile kernel di opensuse, fedora, mandriva dan turunannya, untuk debian based saya sendiri belum 
   nyoba, mungkin bisa googling. Atau dicoba saja langkah yang sama dengan yang biasa saya pakai, karena langkah2 ini saya baca 
   dari dokumentasi kernel.
  # make 
  # make modules_install
  # make install
  bisa juga disambung supaya dieksekusi berurutan jadi:
  # make && make modules_install && make install
Jika anda melakukan compile kedua dstnya di source yang sama, ada baiknya anda jalankan
  # make clean 
terlebih dahulu, supaya bersih dan proses compile kernel berjalan lebih cepat.

Khusus slackware:
  # make bzImage
  # make modules
  # mv /boot/vmlinuz /boot/vmlinuz.old
  # cat arch/i386/boot/bzImage > /boot/vmlinuz
  # mv /boot/System.map /boot/System.map.old
  # cp System.map /boot/System.map
  # make modules_install

tambahkan entry kernel yang lama di /etc/lilo.conf untuk jaga2 jika kernel baru gagal. Tentu saja dari perintah pada slackware itu anda bisa menebak mana file kernel image-nya untuk ditambahkan di lilo.. :) kemudian jangan lupa jalankan:
  # lilo
untuk mengeksekusi konfigurasi lilo.conf tadi

jika tidak ada pesan error dan output terlihat bahwa kernel terinstall di boot-loader, maka selamat anda telah sukses meng-compile dan meng-install kernel

Tips n trik compile kernel:
Jika processor anda multi-core atau SMP (Symetric Multi Processor), manfaatkan semua core untuk mempercepat proses kompilasi, yaitu dengan opsi -jn dengan n=2,3,4,... yang artinya menjalankan multiple job sebanyak n.


Misal ingin multiple job 4, maka perintah compile menjadi:
  # make -j4 && make modules_install -j4 && make install
Adapun angka n, idealnya disesuaikan dengan jumlah core processor anda, misal Core i3 yaitu 2 core maka dicoba -j2, meskipun bisa saja -j4 atau lebih. Hanya saja perlu dipertimbangkan ketika compile kernel disambi aktivitas di desktop misal browsing, ya tidak perlu sampai berlebihan seperti itu.. :)


General Setup --> Local version...:
Berguna untuk penamaan kernel, string akan mengikuti versi kernel, misal anda ingin namakan kernel dengan tambahan -PAE, isikan saja di entry tersebut string "-PAE" Nanti di nama kernel akan ada tambahan "-PAE"


General Setup --> Kernel Compression Mode:
hanya mode/algoritma kompresi kernel


General Setup --> Control Group Support:
Sejak kernel 2.6.37 atau 2.6.38 ada baiknya enable saja. Ini pernah dibahas yaitu sebuah patch kode kernel yang kata om Linuz meningkatkan performa Linux secara ajaib, signifikan, terutama ketika multi-tasking


Processor Type and Feature --> Processor family:
optimalisasi processor berdasarkan typenya. Jika berminat, sesuakan dengan processor anda. Misal Turion X2 bisa mencoba optimalisasi K8/Athlon/Opteron, Core 2 Duo juga ada sendiri. Tapi jika ragu biarkan saja defaultnya, umumnya distro sekarang ngeset di Pentium Pro (686)


Processor Type and Feature --> Preemption model:
model manajemen proses, apakah diijinkan menginterupsi kode2 kernel atau tidak, atau disediakan poin2 tambahan untuk interupsi kode kernel.
 1) Server mode: Sama sekali tidak diijinkan untuk interupsi kode2 kernel.
 2) Desktop: Disediakan point untuk interupsi kode kernel, mengijinkan desktop lebih responsif tapi tidak mengganggu kode kernel 
    yang kritis. 
 3) Low-latency desktop: Jika latency dan responsif adalah segalanya. Tidak disarankan jika core processor terlampau banyak, 
    misal 4 ke atas. Justru menurunkan performa. All around ada opsi nomor 2, bagus untuk semua kondisi dan spek kompi

Processor Type and Feature --> High Memory Support:
Di sinilah letaknya yang dimaksud PAE, yaitu fitur yang memungkinkan arsitektur 32 bit mengalamatkan memori lebih dari 4 GB (efektif 3GB), yaitu hingga 64 GB. Jika anda tidak berniat memakai RAM besar 4 GB lebih, baiknya pilih opsi di 4 GB saja, karena kode PAE sendiri secara teori overhead performa kernel meskipun tidak signifikan. Selain itu kode PAE menyebabkan penggunaan memori pada mesin 32 bit sedikit lebih boros

Processor Type and Feature --> Timer Frequency:
Ada pilihan 100 Hz, 250 Hz, 300 Hz, 1000 Hz. Belum tentu 1 setingan bagus di kompi yang lain. Dan juga tergantung kebutuhan aplikasinya. Jika kompi anda tipikal server atau desktop dengan coreyang ekstra banyak (4 atau bahkan lebih), setngan timer yang terlalu tinggi justru menurunkan performa secara signifikan, saya merasakan di processor 4 core jika timer 1000 Hz justru ngelag dan performa menurun, tapi menjadi perkasa ketika timer 300 Hz, 250 Hz atau 100 Hz (tested) :)


Tapi jika anda sering bermain di aplikasi video dan audio editing, seting minimal 300 Hz atau bahkan 1000 Hz, karena aplikasi itu butuh banyak poin interupsi untuk akurasi mengolah suara dan video. Bahkan aplikasi DCC tertentu tidak mengijinkan running jika timer terlalu rendah misal 100 Hz.

Iinsya Allah dilanjut kapan2, mo keluar gan.. :) Jika mau dicopas monggo ga perlu ijin dan ga wajib mencantumkan nama saya, toh yang saya pelajari dan dapat juga tidak mencantumkan sumber karena sumbernya macem2 dan banyak, aye lupa gan dari mana aja, ada dari dokumentasi, forum dll.. :D. Dan tentu saja mohon koreksinya jika ada yang keliru.

Oke sekian, untuk opsi tweak n tune di komentar, jika ada salah dan keliru mohon maaf dan mohon koreksinya dari agan2 semua.. ^__^

THX TO Trias Mukti Kuncoro.. Kalo mau lanjut lagi.. terusin comment di bawah doc ini ya... hehehe..

0 Response to "Compile dan Optimasi Kernel Linux"

Posting Komentar