Compile Linux Kernel 3.X di Slackware64 13.37

Akhirnya saya merasakan menjalankan sistem operasi di atas kernel 3 haha. Setelah berapa lama tuh ya rilisnya. Biasa… sibuk ini itu ihik ihik haha. Di kesempatan kali ini saya cuma ingin berbagi cerita yang saya alami selama melakukan upgrade kernel. Karena kalau cerita cara compilenya, di situs resmi dokumentasi Slackware juga ada kok, apalagi kalau googling, ngapain ditulis lagi hahaha. Inilah saya dan si Slackware, pasti selalu ada kejadian aneh dan memiliki cerita hahaha..

1. Compile Kernel Error: make: *** [vmlinux] Error 1

Bermula dari mendownload source kernel versi 3.8.13 dari situs kernel.org (beruntungnya saya menggunakan Slackware yang menggunakan kernel vanilla!). Saya memilih versi 3.8.13 karena pada saat blog ini ditulis, ini adalah versi End Of Life (EOL) terakhirnya. Dan…. tahap pertama jalanin niat sudah menemukan error…. Apesnya lagi, errornya saat making image vmlinux nya. Bagi yang udah pernah compile kernel, pasti tau kalau making vmlinux bzImage itu berada di tahap akhir kompilasi atau dengan kata lain error ini terjadi setelah 1.5 jam standby bego nunggin kernel di kompile! Hahahaha… Lumayan emosi dan kecewa juga. Nah, begitu melihat error nya:

fs/built-in.o: In function `gfs2_lock’:
file.c:(.text+0x402910): undefined reference to `dlm_posix_lock’
file.c:(.text+0x402948): undefined reference to `dlm_posix_unlock’
file.c:(.text+0x402978): undefined reference to `dlm_posix_get’
fs/built-in.o: In function `gdlm_cancel’:
lock_dlm.c:(.text+0x4166d5): undefined reference to `dlm_unlock’
fs/built-in.o: In function `gdlm_lock’:
lock_dlm.c:(.text+0x4168e8): undefined reference to `dlm_lock’
fs/built-in.o: In function `gdlm_unmount’:
lock_dlm.c:(.text+0x416e4e): undefined reference to `dlm_release_lockspace’
fs/built-in.o: In function `control_unlock’:
lock_dlm.c:(.text+0x41701d): undefined reference to `dlm_unlock’
fs/built-in.o: In function `sync_lock’:
lock_dlm.c:(.text+0x417160): undefined reference to `dlm_lock’
fs/built-in.o: In function `gdlm_put_lock’:
lock_dlm.c:(.text+0x417a67): undefined reference to `dlm_unlock’
fs/built-in.o: In function `gdlm_mount’:
lock_dlm.c:(.text+0x417e24): undefined reference to `dlm_new_lockspace’
lock_dlm.c:(.text+0x4180e1): undefined reference to `dlm_unlock’
lock_dlm.c:(.text+0x418149): undefined reference to `dlm_release_lockspace’
make: *** [vmlinux] Error 1

Coba diperhatikan baik-baik, ternyata errornya ketika kompile filesystem GFS2 GDLM. Beruntungnya, filesystem ini tidak saya gunakan. Jadi saya berencana untuk hapus aja dan berharap semoga proses kompilasi percobaan ke-2 gak stuck disini lagi. Saya pun kemudian masuk ke menu konfigurasi kernel, ke bagian filesystem, uncheck GFS2, pastikan benar2 tidak akan disupport baik built-in maupun modules. Mumpung lagi ngoprek konfig, saya aktifkan pula JBD2 (ext4) debugging support yang lupa dicentang, agar saya tidak perlu buat initramdisk untuk system boot pertama kali (saya menggunakan filesystem ext4).

Akhirnya kernel berhasil di compile sampai beres. Tinggal apply ke system, kemudian reboot. Disnilah pertama kali system saya running di Linux kernel 3.X hahahaha. Tapi cerita belum berhenti disini…

2. Muncul “Local time zone must be set” di Output Command ‘uname’

Hal ini cukup mengganggu bagi saya. Karena sewaktu saya ingin melakukan verifikasi kernel yang running dengan perintah uname -a, salah satu yang keluar di output adalah seperti itu. Selengkapnya outputnya begini:

Linux eniac 3.8.13 #4 SMP Local time zone must be set x86_64 AMD Turion(tm) 64 X2 Mobile Technology TL-52 AuthenticAMD GNU/Linux

Oke, kita coba dengan timeconfig. Lakukan setup date & timezone komputer saya. Alamak ternyata pas saya lihat tanggal system saya salah hahaha. Kemungkinan berakibat ke kernel yang dikompilasi di system time yang salah. Saya coba compile ulang kernel yang mentahannya masih ada di “wajan” /usr/src/linux. Kompilasi seharusnya tidak lama. Benar saja banyak message yang muncul ketika kompilasi mengingatkan time berubah. Tidak lama kemudian, kernel baru pun jadi. Saya copy-kan ke /boot seperti biasa. Kemudian restart system… Terjadilah masalah baru..

3. Loading LinuxEBDA is big; kernel setup stack overlaps LILO second stage

Waduh, baru juga ngerasaan kernel 3, si Slackware udah ngadat boot. Kenapa ini.. sepertinya kernel yang di-recompile korup kah? Padahal tadi sewaktu ngompile sepertinya baik-baik saja. Ini sudah benar-benar system ga bisa jalan nih. Karena pesan itu saya dapat dari LILO (Linux Loader) atau dengan kata lain, tidak ada kata lain (haha) selain stuck bhahahah. Saya pun kemudian melakukan Googling, setelah lama dan nyasar di forum, ada seseorang yang memposting komentar pada sebuah pertanyaan yang memberi saya clue. Dia mengatakan “after copy your new kernel, don’t forget to setup and run ‘lilo’ command”. Wahahahah, sepertinya sistem stuck karena kernel yang diload dengan informasi pada lilo mismatch. Karena setelah copy kernel baru ke /boot tadi, saya tidak melakukan command ‘lilo’.

Sekarang saya harus menjalankan command ‘lilo’ di system Slackware yang sebenarnya baik-baik saja ini. Sekarang bagaimana masuk ke system nya? Beruntung ada rekan yang memiliki live CD Ubuntu. Saya berencana running lewat Ubuntu untuk kemudian mount partisi harddisk Linux saya, terus chroot kesitu. Kemudian terjadi masalah lagi…

4. chroot: failed to run command `/bin/bash’: Exec format error

Slackware saya belum di recover, udah ada masalah lagi nih.. Kira-kira apalagi ini. Mulai lah mencari inspirasi di Google. Butuh waktu cukup lama lagi untuk mengetahui penyebabnya apa. Seperti biasa, terkadang jawabannya nyempil di pertanyaan yang ga nyambung. Ada seseorang yang bertanya di forum tersebut seperti yang saya alami, bedanya di pertanyaannya dia menyebutkan bahwa dia running di system 64 bit. Hahaha.. *tepokjidat*… ya ini pasti karena system host tidak bisa eksekusi /bin/bash di Slackware saya yang berformat binary 64bit, tanpa melihat jawabannya, saya langsung muter otak nyari system 64bit. Karena saya tidak punya live CD sistem operasi yang 64 bit, terpaksa saya download dan burn lagi ISO Slackware64 bit *tepokjidat*. Setelah itu boot lewat CD tersebut, chroot ke partisi yang di mount, dan setelah berhasil di chroot, hanya untuk mengetikkan command ‘lilo’ saja *jegermembahana*. Setelah itu reboot. System kembali bisa masuk ke proses boot normal. Huahhhhhh…

5. WiFi Not Detected di Kernel Baru

Setelah semua sudah adem ayem, ternyata saya menemukan masalah baru, yaitu kernel tidak support perangkat WiFi saya. Aaaa.. masih ada aja masalah. Balik lagi saya ke “wajan” /usr/src/linux untuk kemudian masuk ke menu config. Mengaktifkan support untuk driver ath5k, anehnya, device lain seperti Broadcom, Intel, dsb sudah di centang, kok ini yang gak di centang (ath5k) pas banget dengan device wifi di laptop saya. Setelah support ath5k di konfigurasi dan kernel di compile ulang, beberapa waktu kemudian jadilah image kernel baru. Saya copy-kan lagi ke /boot. Tapi sekarang tidak lupa jalankan command ‘lilo’ lagi. Hahaha. Setelah restart si Slackware, saya akhirnya bisa browsingan lewat WiFi.

This is my Slackware story, dude. What’s yours?

Slackware64 13.37 on Linux Kernel 3.8.13
Slackware64 13.37 on Linux Kernel 3.8.13

One thought on “Compile Linux Kernel 3.X di Slackware64 13.37

Leave a Reply

Your email address will not be published. Required fields are marked *