Pada umumnya distro Linux menggunakan glibc sebagai pustaka C. Namun, ada juga yang menetapkan musl sebagai pustaka C, misalnya Void GNU/Linux. Distro ini yang saya gunakan sekarang.

Ketika saya ingin compile kernel, saya mendapat masalah seperti di gambar.

img

Saya bingung apakah ada yang salah, apakah karena saya memakai clang, apakah ada config yang harus diaktifkan, atau apakah harus menggunakan GCC? Setelah saya bertanya di grup Telegram Void Linux, mereka berkata bahwa dibutuhkan patch tambahan agar compile bisa berjalan di distro berpustaka C musl. Ketika saya pasang patch, compile dapat dilanjutkan.

Compile Kernel Linux Musl

Yang pertama kita unduh file Kernel Linux di https://kernel.org.

# cd /usr/src/
# wget https://git.kernel.org/torvalds/t/linux-6.1-rc7.tar.gz

Ekstrak file kernel tersebut.

# tar -xf linux-6.1-rc7.tar.gz

Agar tersusun rapi, buat folder khusus patch.

# cd linux-6.1-rc7
# mkdir tambal

Setelah itu, ubah direktori ke tambal dan unduh patch - patchnya.

# cd tambal/
# wget https://notabug.org/Marcoapc/voidxanmodK/raw/master/linux-clang/linux6.0-xanmod/patches/fix-musl-objtool.patch
# cd ../linux-6.1-rc7

Aplikasikan file patch ke file kernel linux. Pastikan kamu berada di folder Kernel Linux.

# patch -p1 < tambal/fix-musl-objtool.patch

Selesai, kamu tidak akan menemukan lagi error ketika compile di distro GNU/Linux yang menggunakan pustaka C musl.