Segmen KKK
atau Kulak-Kulik Kernel
sudah masuk episode 4. Jika pada 3 episode sebelumnya (KKK episode 1,2,3) kita membahas penambahan support pada kernel, kali ini kita akan membahas tentang kompilasi. Pada 3 episode sebelumnya kita mengkompil kernel dengan GCC
dan untuk kali ini kita akan menggunakan Clang
.
Selain berbeda dari sisi compiler, episode kali ini juga menyasar pada distro spesifik, yaitu Slackware
.
Mengapa memilih compiler Clang dan Slackware ?
Clang.
Kalau boleh jujur, tidak ada alasan yang cukup khusus kenapa saya memilih menggunakan Clang
. Saya hanya ingin mencoba satu hal yang berbeda saja dengan memilih Clang
. Saya pernah mendengar kalau Clang
akan lebih populer sebagai compiler di masa mendatang. Kalau itu memang benar, rasanya akan sedikit bagus jika saya memilih Clang
sebagai salah satu bahan bahasan segmen KKK
kali ini.
Slackware.
Distro Slackware memiliki langkah kompilasi kernel yang agak berbeda dari distro yang lain. Jika distro lain hanya terdiri dari beberapa perintah berikut :
$ make menuconfig
$ make
$ sudo make modules_install
$ sudo make install
Slackware memiliki langkah yang cukup berbeda (akan kita paparkan di bawah). Oleh karena itu, mungkin akan menjadi bahasan yang berbeda dari distro yang lain.
Persiapan sebelum kompilasi.
Berikut ini beberapa hal yang perlu dipersiapkan sebelum melakukan kompilasi.
- Kode sumber kernel, saya menggunakan versi
6.4.0
. - Clang, sudah tersedia di repo
Slackware
. Saya menggunakan versi16.0.6
. - Konfigurasi kernel (.config).
- Kesabaran.
Clang Versi 16.0.6
Langkah-langkah kompilasi.
Berikut ini adalah beberapa langkah kompilasi yang bisa dijalankan.
1. Masuk ke direktori kode sumber kernel !
Pastikan sudah menyalin file konfigurasi kernel.
2. Masuk ke jendela konfigurasi, atur, simpan dan keluar !
Kita bisa masuk jendela konfigurasi dengan perintah berikut.
$ make CC=clang menuconfig
Jika biasanya kita hanya menjalankan make menuconfig
, kita perlu menambahkan variabel CC=clang
karena kita sekarang menggunakan Clang
sebagai compiler.
Setelah masuk jendela konfigurasi, atur seperlunya lalu simpan dan keluar.
3. Generate image kernel.
Kita perlu meng-generate image / citra kernel (bzImage
) yang digunakan untuk boot.
$ make CC=clang bzImage
Untuk proses yang lebih cepat, bisa juga menggunakan opsi -jN
sesuai jumlah core yang dimiliki.
$ make CC=clang -j4 bzImage
Image Kernel bzImage terkompilasi dan siap
4. Generate modul kernel.
Kita perlu meng-generate modul kernel lalu memasangnya.
$ make CC=clang -j4 modules
$ sudo make CC=clang modules_install
5. Salin berkas image kernel, .config, System.map !
Tidak seperti distro yang lain, kita perlu menyalin berkas image kernel, .config, System.map ke tempat masing-masing secara manual.
$ sudo cp arch/x86/boot/bzImage /boot/vmlinuz-generic-6.4.0
$ sudo cp .config /boot/config-generic-6.4.0
$ sudo cp System.map /boot/System.map-generic-6.4.0
6. Generate ramdisk image.
Kita perlu meng-generate ramdisk image untuk memuat modul saat boot. Biasanya Slackware
menggunakan tool mkinitrd
, tapi saya menggunakan dracut
agar lebih mudah. Bahasan tentang dracut bisa dilihat di sini.
$ sudo dracut -f --kver 6.4.0
Generate initramfs dengan dracut.
7. Update GRUB.
Kita perlu meng-update GRUB
agar kernel baru yang terpasang bisa tampil saat kita reboot.
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
8. Reboot.
Untuk mengetes apakah kernel yang kita kompil memang bisa digunakan atau tidak, alangkah baiknya kita melakukan reboot.
Berikut adalah tangkapan layar setelah reboot
Dan setelah saya cek lewat perintah dmesg
, ada informasi kalau kernel yang saya boot memang dikompil dengan clang.
Lantas, apa bedanya kernel yang dikompil dengan Clang ?
Jujur jika dilihat dari performa, terasa sama saja. Mungkin salah satu perbedaan yang saya temukan adalah durasi kompilasi. Kompilasi kernel menggunakan Clang
memakan waktu yang lebih daripada saat menggunakan GCC
. Ketika menggunakan Clang
total waktu yang saya gunakan sekitar 43 menit (Generate image kernel dan modul kernel), sedangkan dengan GCC
hanya sekitar 30 menit. Untuk yang lain, mungkin akan saya gali terlebih dahulu.
Referensi dan kredit.
Berikut ini adalah beberapa referensi dan kredit untuk bahasan kita kali ini.
- Panduan kompilasi kernel dengan Clang dari laman The Linux Kernel .
- Panduan kompilasi kernel Slackware oleh Ederson Corbari .
- Segmen
Kulak-Kulik Kernel
blog Situsali.
Penutup.
Demikian tadi, segmen KKK
kali ini. Semoga bisa menjadi satu referensi yang berguna, khususnya untuk pengguna Slackware
. Terima kasih dan sampai berjumpa pada segmen KKK selanjutnya !
Leave a Reply