Dellah Piero


Compiling dan upgrading kernel
June 25, 2007, 3:03 pm
Filed under: About my job

Kernel adalah jantung dari operating system, tanpa kernel, Linux tidak bisa berjalan.  Oleh sebab itu, extra hati-hati diperlukan saat kita membangun kernel. Ketika mengcompile kernel dengan “security and optimized in mind” , yang perlu kita perhatikan adalah: Menjaga agar code yang kita compile benar-benar yang diperlukan oleh mesin.
Ada beberapa alasan mengapa hal ini harus dilakukan:

Kernel akan bekerja lebih cepat, karena code yang dijalankan hanya sedikit.
Saving Memory, kernel parts tidak pernah di swap di virtual memory.
Lebih stabil, karena kernel tidak akan berusaha probing device yang tidak ada.
Lebih secured, karena bagian yang tidak perlu dapat dimanfaatkan oleh attacker untuk meng-akses mesin.
Kernel relatif akan berada dalam kondisi secured apabila anda membangun monolithic kernel. Monolithic kernel adalah sebuah kernel Linux yang tidak mengandung loadable modules, semua modules yang dibutuhkan mesin kita kompile bersama kernel, oleh karenanya, proses membuat monolithic kernel tidak membutuhkan bagian make modules dan make modules_install. Ingat, monolithic kernel artinya hanya menjawab setiap pertanyaan dalam config dengan Y(yes) atau N(no) saja, tidak ada jawaban M(modules). Apabila anda membuat mesin untuk keperluan ip masquerade atau ppp dial up, hal ini tidak dapat dilakukan, karena fungsi dialup dan ip masquerade membutuhkan modules yang terpisah. Bila ini yang anda inginkan, bangunlah sebuah modularized kernel dengan tetap mengikutsertakan pilihan ppp dan masquerade modul.

Langkah-langkah :
Apakah mesin anda mempunyai paket kernel?
[root@die /]# rpm -qa | grep kernel
kernel-headers-2.2.17-25mdk
kernel-2.2.17-25mdk
kernel-source-2.2.17-25mdk
kernelcfg-0.5-5
: paket yang digunakan untuk mengkonfigurasi kernel daemon
Cara Mengcompilenya adalah dengan cara:
make menuconfig  | config (text) |xconfig (grafik)
: memilih paket yang dibutuhkan
make dep
:  menentukan dependency
make clean
: membersihakn kernel source tree dari sisa sisa kompilasi yang tidak dibutuhkan
make bzImage | zImage
:  proses building

Setelah langkah diatas selesai dilakukan, kernel linux yang terkompresi sudah berada di /usr/src/linux/arch/i386/bzImage dan siap di install. Akan tetapi, sebelum melakukan instalasi, apabila anda memilih Yes pada “Enable loadable module support” (CONFIG_MODULES), dan meng-kompilasi beberapa options sebagai modules (misalnya MASQ modules) anda harus melakukan dua langkah lagi untuk mengakhiri proses building
Make modules
:compile module yang dipilih
Make modules_install
: Modules yang sudah anda kompilasi akan di install ke directory /lib/modules/2.2.17-25mdk.

Seperti telah anda ketahui, kernel image yang terkompresi terletak di

/usr/src/linux/arch/i386/boot/bzImage. File ini harus anda copy ke direktori /boot dan berikan nama yang sesuai.Syntax nya adalah:

cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-{kernel-version}

File module-info adalah link file yang menunjuk pada directory modules kernel lama anda, karena dalam artikel ini kita menggunakan monolithic kernel (tidak menggunakan modules), file ini tidak kita perlukan lagi. Begitu juga dengan file initrd-2.2.17-25mdk.img, ini adalah file image yang dibuat pada saat instalasi Mandrake. File ini dapat anda hapus, namun saya menganjurkan untuk menyimpannya sebagai backup. Apabila sudah terbukti kernel yang anda buat dapat bekerja dengan baik, file file ini dapat kita hapus. Apabila anda membangun kernel yang dynamic, dalam artian anda melakukan kompilasi modules, anda perlu membuat initrd image. Initrd image ini berisi informasi mengenai kernel modules yang di load sewaktu proses booting. Biasanya adalah driver SCSI, dan beberapa modules lain yang diperlukan untuk booting mesin. Berikut syntax yang dipakai untuk membuat initrd image.

mkinitrd initrd-{kernel-version).img {kernel-version}

Proses instalasi kernel selesai sampai disini. Selanjutnya adalah melakukan editing /etc/lilo.conf.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=00
default=linux
image=/boot/vmlinuz-2.2.17-25mdk
label=linux
initrd=/boot/initrd-2.2.17-25mdk.img
read-only
root=/dev/hda9

image=/boot/vmlinuz-2.2.16
label=linux-OLD
initrd=/boot/initrd-2.2.16.img
read-only
root=/dev/hda9

patching kernel : upgrading ke lebih baru
[root@die root]# cp /home/echo/2.2.18
/usr/src/linux
[root@die root]# cd
/usr/src/linux
[root@die linux]# patch -p1 < 2.2.18

Setelah itu proses kompilasi dan instalasi seperti langkah diatas.
Kompilasi kernel dengan tarball (tar.gz)

Yang pertama kali adalah uninstall seluruh paket kernel, kemudian ekstrak kernel yang baru di /usr/src, dan lakukan perubahan softlink.Untuk memulai kompilasi,anda harus pastikan bahwa  file  /usr/include/linux,/usr/include/asm dan /usr/include/scsi adalah symboliclink yang mengacu ke source kernel. Kita menghapus dulu link file yang ada, kemudian menambahkan link file yang benar, seperti di bawah ini.
[root@die linux]# cd /usr/include
[root@die include]# rm -f asm linux
scsi
[root@die include]# ln -s
/usr/src/linux/include/asm-i386 asm
[root@die include]# ln -s /usr/src/linux/include/linux linux
[root@die include]# ln -s
/usr/src/linux/include/scsi scsi

 Step ini sangat penting, karena direktori /usr/include berisi kernel
headers yang diperlukan agar anda bisa meng-compile kernel atau program.
Pastikan tidak ada dependency problem dan .o files yang tertinggal.
[root@die include]# cd
/usr/src/linux
[root@die linux]# make mrproper

Advertisement

Leave a Comment so far
Leave a comment



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s



Follow

Get every new post delivered to your Inbox.