Difference between revisions of "OS: Compile Kernel Linux Ubuntu 24.04"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
| Line 139: | Line 139: | ||
* Bandingkan boot time kernel default vs custom | * Bandingkan boot time kernel default vs custom | ||
* Catat ukuran kernel sebelum & sesudah optimasi | * Catat ukuran kernel sebelum & sesudah optimasi | ||
| + | |||
| + | ==Pranala Menarik== | ||
| + | |||
| + | * [[Sistem operasi]] | ||
Latest revision as of 07:13, 14 February 2026
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