OS: Compile Kernel Linux Ubuntu 24.04
BAB 7. Compile Kernel Linux (Ubuntu 24.04) Mengapa Mahasiswa Perlu Compile Kernel Sendiri? Pada kebanyakan distribusi Linux modern, termasuk Ubuntu 24.04, kernel disediakan dalam bentuk precompiled binary. Pendekatan ini memang praktis, namun menyembunyikan banyak konsep inti sistem operasi. Dengan melakukan compile kernel sendiri, mahasiswa diajak untuk membongkar “mesin utama” sistem operasi, memahami bagaimana kernel dibangun, dikonfigurasi, dan dioptimalkan sesuai kebutuhan sistem. Secara pedagogis, praktik ini sejalan dengan filosofi yang ditekankan oleh Onno W. Purbo, bahwa sistem operasi bukanlah “kotak hitam”, melainkan karya manusia yang dapat dipelajari, dimodifikasi, dan dibuat ulang oleh mahasiswa Indonesia . Melalui bab ini, mahasiswa tidak hanya mengerti, tetapi mampu membangun kernel Linux sendiri. Kernel Source Terbaru Memahami Source Tree Kernel Linux Kernel Linux dikembangkan secara terbuka dan terdistribusi melalui kernel.org. Source code kernel memiliki struktur direktori yang konsisten sejak lama, sebagaimana dijelaskan pada bab Compile Kernel di buku rujukan . Beberapa direktori penting: arch/ → kode spesifik arsitektur CPU (x86_64, ARM, dsb.) drivers/ → device driver (network, storage, USB, dll.) fs/ → implementasi filesystem net/ → network stack mm/ → memory management kernel/ → scheduler, process management security/ → SELinux, LSM Mahasiswa tidak dituntut memahami seluruh isi, tetapi perlu memahami peta besar agar tidak “tersesat” saat konfigurasi.
Persiapan Lingkungan Build (Ubuntu 24.04) Langkah awal adalah memastikan sistem memiliki toolchain yang lengkap. sudo apt update sudo apt install -y \
build-essential \ libncurses-dev \ bison \ flex \ libssl-dev \ libelf-dev \ dwarves \ bc \ git
Penjelasan singkat: build-essential → compiler GCC & make libncurses-dev → antarmuka menu konfigurasi (menuconfig) libssl-dev → dukungan kriptografi kernel libelf-dev & dwarves → debug symbol (BTF) Catatan penting: Kernel modern Ubuntu mewajibkan BTF, sehingga paket dwarves tidak boleh dilewatkan. Mengambil Kernel Source Mahasiswa dapat memilih dua pendekatan: A. Kernel resmi dari kernel.org (disarankan untuk belajar) mkdir -p ~/kernel cd ~/kernel wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.tar.xz tar -xvf linux-6.8.tar.xz cd linux-6.8
B. Kernel Ubuntu (lebih dekat ke production Ubuntu) Biasanya digunakan pada level lanjut, sehingga opsi A cukup untuk praktikum awal.
Konfigurasi Kernel Filosofi Konfigurasi Kernel Konfigurasi kernel menentukan: Fitur apa yang diaktifkan Driver apa yang disertakan Apakah driver dibangun built-in (=y) atau module (=m) Dalam konteks pembelajaran, kesalahan konfigurasi bukan kegagalan, melainkan alat belajar utama. Menggunakan Konfigurasi Kernel Ubuntu Agar lebih aman, kita memulai dari konfigurasi kernel Ubuntu yang sedang berjalan: cp /boot/config-$(uname -r) .config Kemudian sinkronisasi dengan source kernel: make oldconfig Perintah ini akan: Menyesuaikan konfigurasi lama dengan kernel baru Menanyakan opsi baru (bisa tekan Enter untuk default) Menuconfig (Eksplorasi Visual)
make menuconfig Di sini mahasiswa dapat bereksperimen langsung, misalnya: Mengaktifkan / menonaktifkan filesystem Mengatur scheduler Menonaktifkan driver yang tidak dibutuhkan VM Contoh eksperimen aman: Nonaktifkan driver sound Aktifkan debug info Pastikan EXT4 filesystem = enabled Prinsip belajar: ubah sedikit, build, boot, observasi.
Build & Install Kernel Custom Proses Compile Kernel
make -j$(nproc) Perintah ini: Menjalankan parallel build sesuai jumlah CPU Membutuhkan waktu 10–40 menit (tergantung VM) Jika terjadi error, jangan panik — ini bagian dari pembelajaran. Install Module & Kernel
sudo make modules_install sudo make install Hasil utama: Kernel → /boot/vmlinuz-* Initramfs → otomatis dibuat GRUB → otomatis terupdate Boot ke Kernel Baru Reboot system: sudo reboot Saat boot: Masuk menu GRUB Pilih kernel versi baru Verifikasi: uname -r Jika versi kernel berubah → berhasil Troubleshooting (Bagian Terpenting Belajar) Kernel Tidak Muncul di GRUB Solusi: sudo update-grub
Gagal Boot (Black Screen / Panic) Langkah penyelamatan: Pilih kernel lama di GRUB Login normal Perbaiki konfigurasi kernel Compile ulang Inilah alasan kernel lama tidak boleh dihapus. Error saat Compile Contoh error umum: missing BTF openssl header not found ncurses error Solusi: sudo apt install dwarves libssl-dev libncurses-dev Refleksi Akademik & OBE Setelah menyelesaikan bab ini, mahasiswa mencapai CPL penting: System Builder → mampu membangun kernel Kernel Tinkerer → memahami konfigurasi & dependensi Problem Solver → terbiasa menghadapi error low-level Sebagaimana ditegaskan dalam buku rujukan, kepercayaan diri mahasiswa tumbuh ketika mereka menyadari bahwa kernel Linux bisa mereka bangun sendiri, bukan