Difference between revisions of "OS: Compile Kernel Linux Ubuntu 24.04"

From OnnoWiki
Jump to navigation Jump to search
(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...")
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
BAB 7. Compile Kernel Linux (Ubuntu 24.04)
+
==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 \
+
  build-essential \
  libncurses-dev \
+
  libncurses-dev \
  bison \
+
  bison \
  flex \
+
  flex \
  libssl-dev \
+
  libssl-dev \
  libelf-dev \
+
  libelf-dev \
  dwarves \
+
  dwarves \
  bc \
+
  bc \
  git
+
  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:
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)
+
===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)
Menuconfig (Eksplorasi Visual)
 
  
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.
Install Module & Kernel
 
  
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

Pranala Menarik