By Trias Mukti Kuncoro in AYO BELAJAR LINUX
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 symlink,
caranya? Cari sendiri gan.. :p Ya prinsipnya kernel source tadi anda
letakkan di partisi lain misal /home/ baru kemudian buat symlink dari
/usr/src/ ke folder kernel source tersebut, 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 set 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.
Slackware lama? Versi 12 dan ke bawah? Tentu power management
processor tidak berfungsi. Di sini jawabannya:Power Management and ACPI
options --> CPU Frequency scaling --> default CPU freq
governor:mengatur policy/governor frequency CPU, apakah full speed,
selalu clock tertinggi, efeknya di laptop batre boros dan panas,
conservative/power saving, selalu lowest clock, userspace butuh aplikasi
user namanya cpu-freq, ondemand, menggunakan driver processor yang
sesuai untuk otomatis pengaturan clock dinamis. Seting ke ondemand saja,
dan jangan lupa driver PM processor kita enabled juga atau jadikan
module.
setelah compile kernel image dan module (/lib/modules) membengkak?
Matikan opsi kernel debugging di:Kernel Hacking --> Kernel debugging
set disabled. Selain itu memang kode2 debugging ada overhead performa
Iinsya Allah dilanjut kapan2. 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, mulai dari experimen, ada dari dokumentasi,
forum dll.. :D. Dan tentu saja mohon koreksinya jika ada yang keliru.
Tidak ada komentar:
Posting Komentar