Belajar Kernel Linux Untuk Pemula (Bag 1)

Selamat siang sobat find4something. Pada siang ini, saya akan share tentang Kernel Linux untuk pemula.
imgsrc: wikipedia
Mengubah kernel adalah suatu kebutuhan yang wajib di dalam pengembangan sebuah operating system. Beruntung kita sistem GNU/Linux hadir dengan kernel dengan sumber terbuka, bukan hanya kernel saja, akan tetapi semua aplikasi yang kita pakai adalah aplikasi sumber terbuka. Hal ini memungkinkan kita untuk mengubah perilaku sistem sesuai dengan kehendak kita sendiri.
Keterbukaan ini juga mendorong pengembangan perangkat lunak pendukung bagi perangkat keras baru, sehingga banyak sekali kemudahan yang didapat oleh pengguna awam. Seperti yang telah disebut di atas, Linux kernel (linux adalah sebutan untuk kernel, sedangkan untuk sistem utuh disebut GNU/Linux) juga termasuk dalam perangkat lunak kode sumber terbuka.
Kita bebas untuk mengubah, menambah, mengurangi isi dari Linux sehingga kita dapat memperoleh kinerja sistem sesuai dengan keinginan kita. Tulisan ini akan membahas langkah-langkah untuk membentuk (compile) sebuah Linux kernel. Langkah-langkah yang tertulis di sini dapat diikuti dengan mudah.
Linux kernel disediakan secara bebas, setiap orang bisa mengunduh dan bisa berkontribusi dalam pengembangannya. Untuk memperolehnya, gunakan peramban favorit anda ke: Arsip Kernel maka anda akan menjumpai versi kernel pilihan anda. Selanjutnya mari kita bahas langkah-langkah berikut satu per satu.
    1. Persiapan Lingkungan Kerja
Untuk membentuk sebuah kernel, kita membutuhkan perangkat lunak (minimal) sebagai berikut:
1. Compiler
Linux kernel dibuat dengan bahasa C dan beberapa baris assembly di beberapa bagian. Untuk membentuk sebuah kernel, kita harus menggunakan gcc C compiler.
Biasanya, pada sebuah desktop yang baru terinstall, gcc sudah tersedia.
$ gcc --version
2. Linker
Selain C compiler, gcc masih membutuhkan beberapa alat tambahan yang dinamakan binutils untuk menjalankan proses `linking’ dan `assembling’. binutils juga biasanya sudah tersedia di dalam sebuah distribusi Linux. Paket yang tersedia
bernama binutils ;-)
$ ld -v
Anda bisa memperoleh binutils di: http://www.gnu.org/software/binutils
3. make
make adalah sebuah alat untuk membuat. Sesuai dengan deskripsi harfiahnya, make adalah perintah untuk membuat. Alat ini yang menentukan bagian mana dari
source code kernel yang akan dibuat, memerintahkan compiler dan alat-alat pendukungnya untuk membuat sebuah kernel.
$ make --version
    1. Memperoleh Linux Kernel
Sebelum versi 2.6, kernel dibagi menjadi dua tree yaitu development dan stable. Development kernel ditandai dengan angka ganjil, sedangkan stable kernel ditandai dengan angka genap pada versinya. Misalkan, kernel versi 2.5.25 adalah versi development, sedangkan 2.4.25 adalah versistable.
Di versi 2.6, semua versi kernel adalah stable. Untuk membedakan mana versi yang stable dan mana yang masih dalam pengembangan, kernel developer memberikan sufix -rc dalam setiap releasenya. Misal 2.6.17 adalah versi stable, versi developmentnya adalah 2.6.17-rc1 (sebelum release), atau 2.6.18-rc1 (sesudah release), pada akhirnya 2.6.18 adalah versi stable.
Kita dapat memperoleh kode sumber kernel dari http://www.kernel.org lalu pilih release paling akhir (atau pilihan anda sendiri). Kita dapat memilih versi-versi kernel terdahulu dihttp://www.us.kernel.org/pub/linux/kernel/v2.6/
Berikut adalah contoh untuk mengunduh kode sumber kernel:
wget:
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
--13:48:17--  http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.34.tar.bz2
=> `linux-2.6.34.tar.bz2'
Resolving www.kernel.org... 199.6.1.164, 204.152.191.37, 130.239.17.4, ...
Connecting to www.kernel.org|199.6.1.164|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 67,633,622 (64M) [application/x-bzip2]

100%[==================>] 67,633,622    89.71K/s    ETA 00:00

14:00:13 (92.52 KB/s)
- `linux-2.6.34.tar.bz2' saved [67633622/67633622]
curl:
curl http://www.kernel.org/pub/linux/kernel/v2.6/
linux-2.6.34.tar.bz2 -o linux-2.6.34.tar.bz2
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
1 64.5M    1 1188k    0     0  59026      0  0:19:05  0:00:20  0:18:45 52347
Setelah kode sumber berhasil kita unduh, sekarang saatnya untuk membuka dan mengetahui isinya. Mari buat satu direktori baru tempat kita akan mengoprek kernel.
$ cd ~
$ mkdir linux
$ cp /path/to/linux-2.6.34.tar.bz2 ~/linux
$ tar xjvf linux-2.6.34.tar.bz2
Sekarang kita telah memiliki kode sumber Linux kernel. Mari kita lanjutkan ke langkah selanjutnya.
Konfigurasi
  1. Pengaturan dari kosong
Ini adalah cara pengaturan bagian-bagian kernel secara manual. Setiap feature kernel kita pilih satu per satu dengan menjawab setiap pertanyaan pada saat konfigurasi. Untuk lebih sederhana, tinggal tekan “ENTER” untuk menjawab dengan jawaban default.
$ make config
*
* Linux Kernel Configuration
*
*
* General setup
*
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [Y/n/?]
Local version - append to kernel release (LOCALVERSION) []
Automatically append version information to the version string (LOCALVERSION_AUTO) [N/y/?]
:
:
y: untuk menjawab iya; fitur akan dikompile secara built-in
n: untuk menolak; fitur tidak akan dikompile
m: module, fitur akan dikompile sebagai kernel module, nantinya akan dipasang ke kernel pada waktu runtime
?: untuk melihat keterangan pada fitur
  1. Pengaturan default
Pilihan ini berarti kernel akan dikonfigurasi dengan aturan standar. Artinya, fitur-fitur yang akan di-compile adalah fitur yang dipilih oleh maintainer.  Biasanya ini adalah pilihan yang paling sederhana pada sebuah kernel.
$ make defconfig
  1. Pengubahan pengaturan
Seperti yang telah disebutkan di atas, ada kalanya sebuah kernel butuh diubah dengan tujuan tertentu. Kadang kita temui kendala untuk menggunakan LCD laptop dengan resolusi tinggi, dengan instalasi standard, laptop hanya mampu menampilkan gambar dengan resolusi VGA saja. Setelah mencari tahu, ternyata kita temui bahwa beberapa driver experimental harus dibangun dan disatukan ke kernel yang sedang berjalan. Pada contoh kasus seperti inilah modifikasi kernel dibutuhkan.
$ make menuconfig
make menuconfig
$ make xconfig
make xconfig
$ make gconfig
make gconfig
gconfig dan xconfig adalah pilihan GUI untuk mengkonfigurasi kernel. gconfig ditulis dengan GTK+, sedangkan xconfig ditulis dengan QT Toolkit.

Comments