Difference between revisions of "OS: Compile Kernel Linux Ubuntu 24.04"
Onnowpurbo (talk | contribs) (Created page with "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 da...") |
Onnowpurbo (talk | contribs) |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
| − | + | ==Mengapa Mahasiswa Perlu Compile Kernel Sendiri?== | |
| − | 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. | 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 . | 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. | Melalui bab ini, mahasiswa tidak hanya mengerti, tetapi mampu membangun kernel Linux sendiri. | ||
| − | Kernel Source Terbaru | + | |
| − | Memahami Source Tree Kernel Linux | + | ==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 . | 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: | Beberapa direktori penting: | ||
| − | arch/ → kode spesifik arsitektur CPU (x86_64, ARM, dsb.) | + | arch/ → kode spesifik arsitektur CPU (x86_64, ARM, dsb.) |
| − | drivers/ → device driver (network, storage, USB, dll.) | + | drivers/ → device driver (network, storage, USB, dll.) |
| − | fs/ → implementasi filesystem | + | fs/ → implementasi filesystem |
| − | net/ → network stack | + | net/ → network stack |
| − | mm/ → memory management | + | mm/ → memory management |
| − | kernel/ → scheduler, process management | + | kernel/ → scheduler, process management |
| − | security/ → SELinux, LSM | + | security/ → SELinux, LSM |
Mahasiswa tidak dituntut memahami seluruh isi, tetapi perlu memahami peta besar agar tidak “tersesat” saat konfigurasi. | Mahasiswa tidak dituntut memahami seluruh isi, tetapi perlu memahami peta besar agar tidak “tersesat” saat konfigurasi. | ||
| − | Persiapan Lingkungan Build (Ubuntu 24.04) | + | ==Persiapan Lingkungan Build (Ubuntu 24.04)== |
Langkah awal adalah memastikan sistem memiliki toolchain yang lengkap. | Langkah awal adalah memastikan sistem memiliki toolchain yang lengkap. | ||
| − | sudo apt update | + | sudo apt update |
| − | sudo apt install -y \ | + | sudo apt install -y \ |
| − | + | build-essential \ | |
| − | + | libncurses-dev \ | |
| − | + | bison \ | |
| − | + | flex \ | |
| − | + | libssl-dev \ | |
| − | + | libelf-dev \ | |
| − | + | dwarves \ | |
| − | + | bc \ | |
| − | + | git | |
Penjelasan singkat: | Penjelasan singkat: | ||
| − | build-essential → compiler GCC & make | + | build-essential → compiler GCC & make |
| − | libncurses-dev → antarmuka menu konfigurasi (menuconfig) | + | libncurses-dev → antarmuka menu konfigurasi (menuconfig) |
| − | libssl-dev → dukungan kriptografi kernel | + | libssl-dev → dukungan kriptografi kernel |
| − | libelf-dev & dwarves → debug symbol (BTF) | + | libelf-dev & dwarves → debug symbol (BTF) |
Catatan penting: Kernel modern Ubuntu mewajibkan BTF, sehingga paket dwarves tidak boleh dilewatkan. | Catatan penting: Kernel modern Ubuntu mewajibkan BTF, sehingga paket dwarves tidak boleh dilewatkan. | ||
| − | Mengambil Kernel Source | + | |
| + | ==Mengambil Kernel Source== | ||
Mahasiswa dapat memilih dua pendekatan: | Mahasiswa dapat memilih dua pendekatan: | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | B. Kernel Ubuntu (lebih dekat ke production Ubuntu) | + | ===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. | Biasanya digunakan pada level lanjut, sehingga opsi A cukup untuk praktikum awal. | ||
| − | Konfigurasi Kernel | + | ==Konfigurasi Kernel== |
| − | Filosofi Konfigurasi Kernel | + | ===Filosofi Konfigurasi Kernel=== |
Konfigurasi kernel menentukan: | Konfigurasi kernel menentukan: | ||
| − | Fitur apa yang diaktifkan | + | * Fitur apa yang diaktifkan |
| − | Driver apa yang disertakan | + | * Driver apa yang disertakan |
| − | Apakah driver dibangun built-in (=y) atau module (=m) | + | * Apakah driver dibangun built-in (=y) atau module (=m) |
Dalam konteks pembelajaran, kesalahan konfigurasi bukan kegagalan, melainkan alat belajar utama. | Dalam konteks pembelajaran, kesalahan konfigurasi bukan kegagalan, melainkan alat belajar utama. | ||
| − | Menggunakan Konfigurasi Kernel Ubuntu | + | |
| + | ===Menggunakan Konfigurasi Kernel Ubuntu=== | ||
Agar lebih aman, kita memulai dari konfigurasi kernel Ubuntu yang sedang berjalan: | Agar lebih aman, kita memulai dari konfigurasi kernel Ubuntu yang sedang berjalan: | ||
| − | cp /boot/config-$(uname -r) .config | + | cp /boot/config-$(uname -r) .config |
Kemudian sinkronisasi dengan source kernel: | Kemudian sinkronisasi dengan source kernel: | ||
| − | make oldconfig | + | make oldconfig |
Perintah ini akan: | Perintah ini akan: | ||
| − | Menyesuaikan konfigurasi lama dengan kernel baru | + | * Menyesuaikan konfigurasi lama dengan kernel baru |
| − | Menanyakan opsi baru (bisa tekan Enter untuk default | + | * Menanyakan opsi baru (bisa tekan Enter untuk default) |
| − | |||
| − | make menuconfig | + | ===Menuconfig (Eksplorasi Visual)=== |
| + | make menuconfig | ||
Di sini mahasiswa dapat bereksperimen langsung, misalnya: | Di sini mahasiswa dapat bereksperimen langsung, misalnya: | ||
| − | Mengaktifkan / menonaktifkan filesystem | + | * Mengaktifkan / menonaktifkan filesystem |
| − | Mengatur scheduler | + | * Mengatur scheduler |
| − | Menonaktifkan driver yang tidak dibutuhkan VM | + | * Menonaktifkan driver yang tidak dibutuhkan VM |
Contoh eksperimen aman: | Contoh eksperimen aman: | ||
| − | Nonaktifkan driver sound | + | * Nonaktifkan driver sound |
| − | Aktifkan debug info | + | * Aktifkan debug info |
| − | Pastikan EXT4 filesystem = enabled | + | * Pastikan EXT4 filesystem = enabled |
Prinsip belajar: ubah sedikit, build, boot, observasi. | Prinsip belajar: ubah sedikit, build, boot, observasi. | ||
| − | Build & Install Kernel Custom | + | ==Build & Install Kernel Custom== |
| − | Proses Compile Kernel | + | ===Proses Compile Kernel=== |
| − | + | make -j$(nproc) | |
| − | make -j$(nproc) | ||
Perintah ini: | Perintah ini: | ||
| − | Menjalankan parallel build sesuai jumlah CPU | + | * Menjalankan parallel build sesuai jumlah CPU |
| − | Membutuhkan waktu 10–40 menit (tergantung VM) | + | * Membutuhkan waktu 10–40 menit (tergantung VM) |
Jika terjadi error, jangan panik — ini bagian dari pembelajaran. | Jika terjadi error, jangan panik — ini bagian dari pembelajaran. | ||
| − | |||
| − | sudo make modules_install | + | ==Install Module & Kernel== |
| − | sudo make install | + | sudo make modules_install |
| + | sudo make install | ||
Hasil utama: | Hasil utama: | ||
| − | Kernel → /boot/vmlinuz-* | + | * Kernel → /boot/vmlinuz-* |
| − | Initramfs → otomatis dibuat | + | * Initramfs → otomatis dibuat |
| − | GRUB → otomatis terupdate | + | * GRUB → otomatis terupdate |
| − | Boot ke Kernel Baru | + | |
| + | ===Boot ke Kernel Baru=== | ||
Reboot system: | Reboot system: | ||
| − | sudo reboot | + | sudo reboot |
Saat boot: | Saat boot: | ||
| − | Masuk menu GRUB | + | * Masuk menu GRUB |
| − | Pilih kernel versi baru | + | * Pilih kernel versi baru |
Verifikasi: | Verifikasi: | ||
| − | uname -r | + | uname -r |
Jika versi kernel berubah → berhasil | Jika versi kernel berubah → berhasil | ||
| − | Troubleshooting (Bagian Terpenting Belajar) | + | |
| − | Kernel Tidak Muncul di GRUB | + | ==Troubleshooting (Bagian Terpenting Belajar)== |
| + | ===Kernel Tidak Muncul di GRUB=== | ||
Solusi: | Solusi: | ||
| − | sudo update-grub | + | sudo update-grub |
| − | |||
Gagal Boot (Black Screen / Panic) | Gagal Boot (Black Screen / Panic) | ||
Langkah penyelamatan: | Langkah penyelamatan: | ||
| − | Pilih kernel lama di GRUB | + | * Pilih kernel lama di GRUB |
| − | Login normal | + | * Login normal |
| − | Perbaiki konfigurasi kernel | + | * Perbaiki konfigurasi kernel |
| − | Compile ulang | + | * Compile ulang |
Inilah alasan kernel lama tidak boleh dihapus. | Inilah alasan kernel lama tidak boleh dihapus. | ||
| − | Error saat Compile | + | |
| + | ===Error saat Compile=== | ||
Contoh error umum: | Contoh error umum: | ||
| − | missing BTF | + | missing BTF |
| − | openssl header not found | + | openssl header not found |
| − | ncurses error | + | ncurses error |
Solusi: | Solusi: | ||
| − | sudo apt install dwarves libssl-dev libncurses-dev | + | sudo apt install dwarves libssl-dev libncurses-dev |
| − | Refleksi Akademik & OBE | + | |
| + | ==Refleksi Akademik & OBE== | ||
Setelah menyelesaikan bab ini, mahasiswa mencapai CPL penting: | Setelah menyelesaikan bab ini, mahasiswa mencapai CPL penting: | ||
| − | System Builder → mampu membangun kernel | + | * System Builder → mampu membangun kernel |
| − | Kernel Tinkerer → memahami konfigurasi & dependensi | + | * Kernel Tinkerer → memahami konfigurasi & dependensi |
| − | Problem Solver → terbiasa menghadapi error low-level | + | * 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 | + | 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 | ||
| + | |||
| + | ==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