Jumat, 06 November 2009

Membangun kernel

Perkenalan

Kernel Linux secara singkat dibahas pada Bagian 2.1, “Apa itu Linux?”. Salah satu keunggulan dari Linux adalah ketersediaan dari kode sumbernya (seperti pada sistem Slackware Linux). Hal ini berarti Anda bisa mengkompilasi ulang kernel. Terdapat banyak situasi dimana mengkompilasi ulang kernel menjadi berguna. Sebagai contoh:

  • Membuat kernel lebih ringkas: Anda dapat menonaktifkan beberapa fungsionalitas dari kernel, untuk mengurangi ukurannya. Hal ini menjadi penting pada lingkungan dimana memori sangat terbatas.

  • Mengoptimalkan kernel: dimungkinkan untuk mengoptimalkan kernel. Sebagai contoh, dengan mengkompilasinya untuk jenis prosesor yang spesifik.

  • Dukungan perangkat keras: Dukungan untuk beberapa perangkat keras tidak diaktifkan secara default pada kernel Linux yang disediakan oleh Slackware Linux. Contoh sederhana adalah dukungan untuk sistem SMP.

  • Menggunakan perbaikan khusus: Terdapat banyak perbaikan tidak resmi untuk kernel Linux. Secara umum merupakan ide bagus untuk menghindari perbaikan tidak resmi. Tetapi beberapa perangkat lunak pihak ketiga, seperti Win4Lin, memaksa Anda menginstall perbaikan kernel tambahan.

  • Membuat header dan infrastruktur pembangunan yang benar untuk membangun modul pihak ketiga.

Bab ini berfokus pada seri kernel default yang digunakan pada Slackware Linux 12.0, Linux 2.6. Mengkompilasi ulang kernel tidaklah susah, asalkan Anda membuat salinan kernel yang bisa Anda gunakan ketika terjadi masalah. Kompilasi Linux melibatkan langkah-langkah berikut:

  • Mengkonfigurasi kernel.

  • Membangun kernel.

  • Membangun modul-modul.

  • Menginstall kernel dan modul-modul.

  • Mengupdate konfigurasi LILO.

Pada bab ini, kami mengasumsikan bahwa kode sumber kernel tersedia pada /usr/src/linux. Jika Anda telah menginstall paket kernel-sources dari set disk “k”, kode sumber kernel tersedia pada /usr/src/linux-versikernel, dan /usr/src/linux adalah link simbolis pada direktori kode sumber kernel yang sebenarnya. Jadi, jika Anda menggunakan paket kernel standar dari Slackware Linux, Anda sudah siap.

Berbeda dengan versi kernel yang lama, tidak lagi diperlukan untuk menggunakan link simbolik /usr/src/linux. Jika Anda telah menguraikan kode sumber kernel y ang baru pada /usr/src, Anda bisa membangun kernel pada /usr/src/linux-, dan menggunakan direktori tersebut pada contoh di bab ini.

18.2. Konfigurasi

Seperti yang dijelaskan diatas, langkah pertama adalah mengkonfigurasi kode sumber kernel. Untuk mempermudah konfigurasi kernel, merupakan ide yang bagus untuk menyalin konfigurasi kernel default Slackware Linux ke kode sumber kernel. Berkas konfigurasi kernel standar Slackware Linux disimpan pada media distribusi sebagai kernels//config. Misalkan Anda hendak menggunakan konfigurasi kernel hugesmp.s sebagai awal (yang merupakan kernel default), dan Anda telah memiliki CD-ROM Slackware Linux yang sudah di-mount pada /mnt/cdrom, Anda bisa menyalin konfigurasi kernel Slackware Linux dengan :

# cp /mnt/cdrom/kernels/hugesmp.s/config /usr/src/linux/.config

Konfigurasi kernel yang berjalan juga bisa didapatkan pada /proc/config.gz jika kernel dikompilasi dengan opsi CONFIG_IKCONFIG dan CONFIG_IKCONFIG_PROC. Kernel default Slackware Linux sudah mengaktifkan opsi tersebut. Jadi, jika Anda hendak menggunakan konfigurasi dari kernel yang berjalan, Anda bisa menjalankan:

# zcat /proc/config.gz > /usr/src/linux/.config

Jika Anda menggunakan berkas konfigurasi untuk versi kernel lain yang hendak Anda kompilasi, pada biasanya kedua versi kernel tidak memiliki opsi yang sama. Opsi baru ditambahkan (misalnya driver baru ditambahkan), dan terkadang beberapa komponen kernel dihapus. Anda bisa mengkonfigurasikan opsi baru (dan menghapus opsi yang tidak dipakai) dengan perintah make oldconfig :

# cd /usr/src/linux ; make oldconfig

Hal ini akan menanyakan Anda tentang opsi-opsi, apakah Anda hendak mengkompilasinya secara penuh (Y), mengkompilasi sebagai modul (M), atau tidak menyertakannya (N). Sebagai contoh:

IBM ThinkPad Laptop Extras (ACPI_IBM) [N/m/y/?] (NEW)

Seperti yang Anda lihat, opsi yang mungkin ditampilkan, dengan pilihan default dengan huruf kapital. Jika Anda menekan , maka opsi yang berhuruf besar akan digunakan. Jika Anda hendak melihat informasi tentang sebuah opsi, Anda bisa masukkan tanda tanya (?):

    IBM ThinkPad Laptop Extras (ACPI_IBM) [N/m/y/?] (NEW) ?

This is a Linux ACPI driver for the IBM ThinkPad laptops. It adds
support for Fn-Fx key combinations, Bluetooth control, video
output switching, ThinkLight control, UltraBay eject and more.
For more information about this driver see
and .

If you have an IBM ThinkPad laptop, say Y or M here.

IBM ThinkPad Laptop Extras (ACPI_IBM) [N/m/y/?] (NEW)

Hasil keluaran dari perintah ini bisa cukup panjang, karena opsi yang digunakan pada berkas konfigurasi, dan yang tersedia pada kernel yang berjalan juga ditampilkan, tetapi konfigurasinya akan diisi sesuai dengan berkas konfigurasi.

Pada tahap ini, Anda bisa mulai mengkonfigurasi kernel secara detail. Terdapat tiga cara untuk mengkonfigurasi kernel. Pertama adalah config, yang hanya menanyakan kepada Anda apa yang hendak Anda lakukan untuk setiap opsi kernel. Hal ini memakan waktu sangat lama. Jadi biasanya ini bukan cara yang baik untuk mengkonfigurasi kernel. Cara yang lebih ramah adalah dengan menuconfig, yang menggunakan sistem berbasis menu yang bisa Anda gunakan untuk mengkonfigurasi kernel. Terdapat sistem berbasis X, yang bernama xconfig. Anda bisa menjalankannya dengan berpindah ke direktori kode sumber kernel, dan menjalankan make . Sebagai contoh, untuk mengkonfigurasi kernel dengan tampilan berbasis menu, Anda bisa menggunakan perintah berikut:

# cd /usr/src/linux
# make menuconfig

Tentu saja, jika Anda suka, Anda bisa mengedit berkas .config secara langsung dengan editor teks Anda.

Seperti yang kita lihat sebelumnya, pada konfigurasi kernel terdapat tiga opsi untuk setiap pilihan: “n” menonaktifkan fungsionalitas, “y” mengaktifkan fungsionalitas, dan “m” mengkompilasi fungsionalitas sebagai modul. Konfigurasi default kernel pada Slackware Linux adalah konfigurasi yang sangat bagus, ia menyertakan dukungan untuk semua pengontrol disk dan sistem berkas yang umum, dan sisanya dikompilasi sebagai modul. Apapun pilihan Anda, Anda harus memastikan bahwa driver untuk pengontrol disk dan dukungan untuk sistem berkas yang berisi sistem berkas root Anda harus disertakan. Jika tidak, kernel tidak akan bisa me-mount sistem berkas root, dan kernel akan panik karena tidak bisa menyerahkan inisialisasi pada program init.

[Catatan] Catatan

Selalu merupakan ide bagus untuk menyimpan kernel lama Anda, jika terjadi kesalahan pada saat konfigurasi. Jika kernel yang hendak dikompilasi memiliki nomor versi yang sama dengan kernel yang berjalan, Anda harus dengan serius mempertimbangkan untuk memodifikasi opsi CONFIG_LOCALVERSION. String yang ditentukan pada opsi ini ditambahkan pada nama versi. Sebagai contoh, jika kernel memiliki versi 2.6.21.6, dan CONFIG_LOCALVERSION diisi dengan "-smp-ddk", versi kernel akan menjadi 2.6.21.6-smp-ddk.

Jika Anda tidak memodifikasi versi dengan cara ini, installasi dari modul kernel baru akan menimpa modul dari kernel yang berjalan. Hal ini tentunya tidak baik jika Anda harus kembali ke kernel lama.

18.3. Kompilasi

Kompilasi kernel dahulu terdiri dari beberapa langkah, tetapi kernel Linux 2.6 bisa dikompilasi dengan menjalankan make pada direktori kode sumber kernel. Perintah ini akan menghitung ketergantungan, membangun kernel, dan membangun dan menghubungkan modul kernel.

# cd /usr/src/linux
# make

Setelah kompilasi selesai, pohon yang berisi modul yang sudah dikompilasi, dan citra kernel yang terkompresi bernama bzImage akan berada pada /usr/src/linux/arch/i386/boot. Anda bisa melanjutkan dengan installasi dari kernel dan modulnya.

18.4. Installasi

18.4.1. Menginstall kernel

Langkah berikutnya adalah untuk menginstall kernel dan modul kernel. Kita akan mulai dengan menginstall modul kernel, karena hal ini bisa dilakukan dengan satu perintah dari pohon kode sumber kernel:

# make modules_install

Hal ini akan menginstall modul pada /lib/modules/. Jika Anda mengganti kernel dengan nomor versi yang sama, maka merupakan ide bagus untuk menghapus modul lama sebelum menginstall yang baru. Misalnya:

# rm -rf /lib/modules/2.6.21.5-smp

Anda bisa “menginstall” kernel dengan menyalinnya pada direktori /boot. Anda bisa memberikan nama sesuai selera Anda, tetapi alangkah baiknya menggunakan konvensi nama. Misalnya vmlinuz-versi. Sebagai contoh, jika Anda menamainya vmlinuz-2.6.21.5-smp-ddk, Anda bisa menyalinnya dari pohon kode sumber kernel dengan:

# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.21.5-smp-ddk

Pada tahap ini, Anda sudah hampir selesai. Langkah terakhir adalah menambahkan kernel baru pada konfigurasi Linux boot loader (LILO).

18.4.2. Configuring LILO

LILO (Linux Loader) adalah boot loader default yang digunakan Slackware Linux. Konfigurasi dari LILO bekerja dalam dua langkah; langkah pertama adalah mengubah konfigurasi LILO pada /etc/lilo.conf. Langkah kedua adalah menjalankan lilo, yang akan menulis konfigurasi LILO pada boot loader. Konfigurasi LILO sudah memiliki informasi untuk kernel aktual yang Anda gunakan. Merupakan ide bagus untuk mempertahankan informasi ini, sebagai opsi kembali jika kernel baru Anda tidak bekerja. Jika Anda melihat akhir dari /etc/lilo.conf Anda akan melihat informasi yang serupa dengan ini:

# Linux bootable partition config begins
image = /boot/vmlinuz
root = /dev/hda5
label = Slack
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
# Linux bootable partition config ends

Cara termudah untuk menambahkan kernel baru adalah menduplikasi informasi yang ada, lalu mengedit informasi pertama, mengubah opsi image, dan label. Setelah mengubah, contoh diatas menjadi :

# Linux bootable partition config begins
image = /boot/vmlinuz-2.6.21.5-smp-ddk
root = /dev/hda5
label = Slack
read-only # Non-UMSDOS filesystems should be mounted read-only for checking

image = /boot/vmlinuz
root = /dev/hda5
label = SlackOld
read-only # Non-UMSDOS filesystems should be mounted read-only for checking
# Linux bootable partition config ends

Seperti yang Anda lihat, informasi image pertama mengarah pada kernel baru, dan label dari informasi kedua diganti ke “SlackOld”. LILO akan secara otomatis boot ke yang pertama. Anda sekarang bisa menginstall konfigurasi LILO baru dengan perintah lilo :

# lilo
Added Slack *
Added SlackOld

Pada saat Anda boot berikutnya, kedua informasi akan tersedia, dan bagian “Slack” akan dipakai sebagai default.

[Catatan] Catatan

Jika Anda hendak LILO menampilkan menu dengan informasi yang dikonfigurasikan pada lilo.conf pada setiap kali boot, pastikan Anda menambahkan baris yang berisi

prompt

pada lilo.conf. Jika tidak, LILO akan mem-boot informasi default yang ditentukan dengan default=, atau informasi pertama ketika tidak ada kernel default yang ditentukan. Anda bisa mengakses menu kapan saja dengan menekan kunci ketika LILO dijalankan.

0 komentar:

Posting Komentar

Mohon maaf bila dalam mempublikasikan entry ini kurang memuaskan, baru belajar coy...

 

agnatu © 2008. Design By: SkinCorner