OS: Compile Kernel Linux Ubuntu 24.04

From OnnoWiki
Revision as of 07:13, 14 February 2026 by Onnowpurbo (talk | contribs)
Jump to navigation Jump to search

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 hanya dipakai .

Challenge Mandiri (Opsional & Fun)

  • Compile kernel tanpa sound driver
  • Compile kernel khusus VM
  • Bandingkan boot time kernel default vs custom
  • Catat ukuran kernel sebelum & sesudah optimasi