OS: PRAKTIKUM — Kernel Module Lab
Tujuan
Praktikum ini merupakan kelanjutan langsung dari sebelumnya, dan berfungsi sebagai laboratorium eksplorasi kernel secara nyata. Pada tahap ini, mahasiswa tidak lagi hanya memahami konsep, tetapi mengamati langsung perilaku kernel Linux ketika sebuah kernel module dimuat dan dilepas.
Setelah menyelesaikan praktikum ini, mahasiswa diharapkan mampu:
- Membangun kernel module sederhana
- Melakukan load dan unload module secara aman
- Mengamati perubahan perilaku kernel
- Menganalisis log kernel sebagai alat observasi utama
Praktikum ini menanamkan mindset penting: kernel development = observasi + log + eksperimen terkontrol, bukan trial-and-error sembarangan.
Konteks Akademik Kernel Module Lab
Dalam buku ini dijelaskan bahwa kernel module adalah mekanisme resmi Linux untuk mengembangkan kernel secara bertahap tanpa reboot .
Oleh karena itu, lab ini dirancang agar mahasiswa:
- Melihat kernel sebagai sistem dinamis
- Memahami bahwa setiap modul mempengaruhi state kernel
- Belajar membaca kernel log sebagai sumber kebenaran utama
- Build Kernel Module Sederhana
Persiapan Lingkungan
Pastikan kernel header sesuai dengan kernel yang sedang berjalan (termasuk kernel custom hasil PRAKTIK 4).
uname -r sudo apt install -y linux-headers-$(uname -r)
Header kernel adalah “jembatan” antara source module dan kernel aktif.
Membuat Direktori Praktikum
mkdir -p ~/kernel-module-lab cd ~/kernel-module-lab
Source Code Kernel Module Sederhana
Buat file lab_module.c:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Mahasiswa Sistem Operasi");
MODULE_DESCRIPTION("Kernel Module Lab - Praktik 5");
MODULE_VERSION("1.0");
static int __init lab_init(void)
{
printk(KERN_INFO "[LAB] Module dimuat ke kernel\n");
return 0;
}
static void __exit lab_exit(void)
{
printk(KERN_INFO "[LAB] Module dilepas dari kernel\n");
}
module_init(lab_init);
module_exit(lab_exit);
Penjelasan akademik singkat:
MODULE_LICENSE("GPL") → mencegah kernel tainted
printk() → mekanisme logging kernel
__init / __exit → penanda fase lifecycle modul
Makefile Kernel Module
Buat file Makefile:
obj-m += lab_module.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Compile Kernel Module
make
Hasil yang diharapkan:
lab_module.ko
File .ko adalah objek biner yang siap dimuat ke kernel.
Load & Unload Kernel Module
Load (Insert) Module
sudo insmod lab_module.ko
Verifikasi:
lsmod | grep lab
Jika muncul → modul berhasil dimuat.
Unload (Remove) Module
sudo rmmod lab_module
Verifikasi ulang:
lsmod | grep lab
Load dan unload berulang adalah teknik belajar utama dalam kernel lab.
Menggunakan modprobe (Opsional)
Untuk pendekatan yang lebih aman:
sudo modprobe lab_module sudo modprobe -r lab_module
modprobe otomatis menangani dependency modul.
Observasi Behavior Kernel
Konsep Observasi Kernel
Kernel tidak memiliki UI. Oleh karena itu:
- Semua observasi dilakukan melalui log
- Perubahan state kernel harus disimpulkan dari output sistem
Inilah perbedaan mendasar antara kernel engineering dan application development.
Observasi Menggunakan Kernel Log
Lihat log terakhir:
dmesg | tail
Contoh output:
[LAB] Module dimuat ke kernel [LAB] Module dilepas dari kernel
Observasi Real-Time
sudo dmesg -w
Kemudian, di terminal lain:
sudo insmod lab_module.ko sudo rmmod lab_module
Mahasiswa dapat melihat event kernel secara real-time.
Observasi Sederhana Melalui Log
Menambahkan Log Lebih Detail Ubah source code:
printk(KERN_INFO "[LAB] Init dipanggil pada jiffies=%lu\n", jiffies);
Dan saat exit:
printk(KERN_INFO "[LAB] Exit dipanggil pada jiffies=%lu\n", jiffies);
Recompile:
make clean make
Analisis Akademik Sederhana
Dari log, mahasiswa dapat:
- Mengamati urutan eksekusi
- Membandingkan waktu load dan unload
- Melihat bahwa kernel menjalankan kode module secara deterministik
Ini adalah langkah awal observasi performa kernel.
Kesalahan Umum & Mitigasi
Kesalahan umum mahasiswa:
- Header kernel tidak cocok
- Lupa MODULE_LICENSE
- Salah versi kernel
Mitigasi:
- Selalu cek uname -r
- Gunakan VM
- Jangan eksperimen di sistem produksi
Refleksi Akademik & OBE
Praktikum ini secara langsung memenuhi capaian:
- Kernel Tinkerer → memahami lifecycle modul
- Low-Level Observer → membaca log kernel
- System Engineer Mindset → observasi berbasis data
Filosofi, kernel harus diamati, bukan ditebak, dan kernel module lab adalah sarana paling aman untuk itu .
Challenge Mandiri (Fun & Menantang)
- Tambahkan counter load/unload
- Tambahkan log level berbeda (KERN_WARNING)
- Jalankan modul di kernel custom
- Dokumentasikan hasil observasi dalam tabel