Jun 28, 2009

Linux Kernel Upgrade

-
Well, it's time to hack.

Setelah iseng-iseng ngcek http://kernel.org, ternyata kernel linux sudah sampai pada release 2.6.30. Terakhir saya upgrade kernel di versi 2.6.28. Kemudian saya berfikir sekarang saatnya hacking system linux saya. Berharap bahwa kernel 2.6.30 bisa membuat webcam Genius Eye 312 yang teronggok di meja komputer bisa saya fungsikan. Beberapa bulan lalu saya membeli webcam itu untuk pengerjaan Tugas Akhir, tapi ternyata sayang, kala itu kernel linux 2.6.28 belum mendukung hardware webcam tersebut dan saya memutuskan untuk membeli webcam lain yang didukung kernel 2.6.28.


Setelah proses download selesai, saya pun segera pulang dari warnet yang memiliki koneksi lambat itu dan berharap sempat mengupgrade kernel linux saya. Selang satu hari kemudian saya baru sempat melakukan upgrade kernel tersebut.

Pertama, saya bongkar tarball source code kernel itu dan saya arahkan ke direktori "/usr/src", perintahnya sebagai beikut


akhyari@nix:~$ sudo tar -xvf linux-2.6.30.tar.bz2 -C /usr/src/


berikutnya saya langsung menuju direktori dokumentasi pada "/usr/src/linux-2.6.30/Documentation/", selanjutnya saya mencari daftar webcam yang disupport kernel ini. Oh, ternyata ada di "video4linux/gspca.txt". OK, saya lihat file tersebut dan ternyata benar, kernel ini mendukung webcam saya, terlihat pada baris

...
pac7311        093a:2620    Apollo AC-905
pac7311        093a:2621    PAC731x
pac7311        093a:2622    Genius Eye 312
pac7311        093a:2624    PAC7302
pac7311        093a:2626    Labtec 2200
...



Tapi, apa benar webcam saya ini? Langsung saja saya hubungkan kabel webcam saya ke salah satu port USB dan saya buka Konsole dan masuk sebagai #root dan selanjutnya saya jalankan perintah "lsusb", berkut hasilnya..



akhyari@nix:~$ su
Password:
root@nix:/home/akhyari# lsusb
Bus 001 Device 003: ID 0951:1613 Kingston Technology
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 002: ID 093a:2622 Pixart Imaging, Inc.
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial PortBus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hubBus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub...


Hey, benar. Hardware ID yang muncul sama persis dengan daftar gspca. Sekarang saatnya konfigurasi kernel, untuk amannya saya gunakan file konfigurasi kernel sebelumnya yang telah saya simpan. Saya copykan file tersebut ke direktori source code kernel baru saya.


root@nix:/home/akhyari# cp /boot/config-vmlinuz-smp-2.6.28 /usr/src/linux-2.6.30/.config

OK, sekarang saatnya menambahkan konfigurasi agar webcam saya dikenali.


root@nix:/home/akhyari# exit
exit
akhyari@nix:~$ cd /usr/src/linux-2.6.30/
akhyari@nix:/usr/src/linux-2.6.30$ sudo make xconfig



Setelah muncul jendela konfigurasi kernel, saya cari bagian yang menunjukkan video4linux driver gspca dengan CTRL+F, langsung saya tandai semua opsi disana. Semua merk camera saya tandai agar driver webcam-webcam tersebut dicompile sebagai modul. Kalau ingin menambahkan dukungan hardware lain bisa ditambahkan. Kernel 2.6.30 ini juga telah mendukung modem 3G Sierra yang sekarang sedang naik daun.

Well, setelah konfigurasi selesai saya simpan, saatnya kompilasi kernel.


akhyari@nix:/usr/src/linux-2.6.30$ su
Password:
akhyari@nix:/usr/src/linux-2.6.30# make


Seperti biasanya, kompilasi kernel memakan waktu yang tidak sebentar sekalipun komputer yang saya gunakan ini bisa dibilang lumayan. Saat saya menulis tulisan ini, saya masih menunggu proses kompilasi kernel.

Sambil menunggu proses kompilasi, saya ingin menjelaskan beberapa istilah yang mungkin bagi beberapa pembaca masih asing.

  1. Kernel, adalah jantung dari sebuah sistem operasi. Kernel bertugas mengatur kerja hardware, I/O (input/output) dan tugas-tugas lainnya.
  2. Modul, pada sistem operasi Linux, driver-driver hardware dapat dikompilasi menjadi satu kedalam kernel, yang akan berdampak kernel menjadi besar, atau driver-driver dikompilasi menjadi modul, sehingga kernel menjadi lebih kecil. modul-modul ini nanti baru akan dipanggil saat dibutuhkan. Misal ketika saya menancapkan kabel usb webcam saya, maka kernel akan memanggil modul driver yang dibutuhkan.

Ternyata, belum selesai juga proses kompilasi kernel. Jadi, setelah proses kompilasi kernel selesai, maka yang harus dilakukan adalah instalasi modul yang selesai dikompilasikan bersama kernel. Cara melakukannya sebagai berikut


root@nix:/home/akhyari# make modules_install


Setelah selesai instalasi modul selesai, yang terakhir adalah melakukan konfigurasi LiLo (linux-loader), konfigurasi dilakukan dengan mengedit file /etc/lilo.conf. Namun sebelumnya kernel hasil kompilasi harus dipindahkan ke direktori "/boot"


akhyari@nix:/usr/src/linux-2.6.30# cp /usr/src/linux-2.6.30/arch/x86/boot/bzImage /boot/vmlinuz-smp-2.6.30
akhyari@nix:/usr/src/linux-2.6.30# vi /etc/lilo.conf<
...
# Linux bootable partition config begins
image = /boot/vmlinuz-smp-2.6.28
  root = /dev/hdb1
  label = Linux-2.6.28
  initrd = /boot/initrd
  read-only
# Linux bootable partition config ends

# Linux bootable partition config begins
image = /boot/vmlinuz-smp-2.6.30
  root = /dev/hdb1
  label = Linux-2.6.30
  read-only
# Linux bootable partition config ends

# Windows bootable partition config begins
other = /dev/hda1
  label = Windows
  table = /dev/hda
# Windows bootable partition config ends
...


Di sini, terdapat 3 sistem operasi:
    - Linux dengan kernel 2.6.28
    - Linux dengan kernel 2.6.30, yang baru saja saya tambahkan
    - Windows

Sehingga, ketika booting maka akan disodorkan pilihan sistem operasi mana yang akan digunakan. untuk konfigurasi lilo.conf tersebut, saya hanya menambahkan 6 baris konfigurasi kernel 2.6.30. Jangan mengubah baris lainnya, kecuali mengerti apa yang dilakukan.

OK, langkah terakhir adalah menginstall ulang bootloader LiLo dengan perintah


root@nix:/usr/src/linux-2.6.30# lilo
Added Linux-2.6.28 *
Added Linux-2.6.30
Added Windows
root@nix:/usr/src/linux-2.6.30#


Ada baiknya file konfigurasi kernel ini disimpan atau dibackup, supaya ketika akan melakukan kompilasi ulang atau upgrade kernel bisa menghemat waktu. File konfigurasi terdapat pada "/usr/src/linux-2.6.30/.config".


root@nix:/usr/src/linux-2.6.30# cp /usr/src/linux-2.6.30/.config /boot/config-vmlinuz-smp-2.6.30


Pada tulisaan saya selanjutnya (entah kapan) akan saya tunjukksn patching kernel tersebut dari kernel (2.6.x) akan dihasilkan kernel (2.6.x.y), dan juga akan saya lakukan patching untuk dukungan bootsplash. Apa itu bootsplash? pada tulisan nanti akan saya jelaskan.

Happy hacking! ;)

Note: Semua dilakukan di atas distro Slackware 12.1

2 comments:

  1. Baru hari ini saya temukan blog ini. Menarik sekali pada saat semuda itu akang sudah melakukan ini.

    Ayo tahun ini menulis lagi artikel soal hacking seperti ini!

    ReplyDelete
    Replies
    1. terima kasih telah berkenan mampir di halaman blog tak terurus saya,
      waktu itu masih pengangguran mas..jadi ada banyak waktu buat ngoprek linux..sekarang kalau ada waktu lebih milih tidur dibanding ngurus blog dan ngoprek.. hehe :)

      Delete

Thank you for reading this post. I would appreciate it if you are willing to leave a comment.