20230704 05h09m34s grim

Kulak-Kulik Kernel : Kompil Kernel Slackware dengan Clang.

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.

  1. Kode sumber kernel, saya menggunakan versi 6.4.0.
  2. Clang, sudah tersedia di repo Slackware. Saya menggunakan versi 16.0.6.
  3. Konfigurasi kernel (.config).
  4. Kesabaran.
20230704 05h39m54s grim

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.

20230704 02h53m28s grim

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
20230704 03h17m10s grim

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
modul

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
20230704 03h48m45s grim

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
20230704 03h50m22s grim

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 
20230704 03h52m05s grim

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

20230704 05h09m34s grim

Dan setelah saya cek lewat perintah dmesg, ada informasi kalau kernel yang saya boot memang dikompil dengan clang.

20230704 05h56m06s grim

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.

  1. Panduan kompilasi kernel dengan Clang dari laman The Linux Kernel .
  2. Panduan kompilasi kernel Slackware oleh Ederson Corbari .
  3. 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 !

Artikel Terkait

Leave a Reply

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