Kernel adalah jantung sistem: program kecil yang mengatur memori, CPU, perangkat, dan menjadi satu-satunya pihak yang boleh menyentuh hardware secara langsung. Namun kernel modern tidak memuat semua kemampuannya sekaligus — kemampuan yang jarang dipakai disediakan sebagai module yang bisa dipasang dan dilepas saat sistem berjalan. Pada Chapter ini kita membedah pembagian kerja kernel space versus user space, lalu belajar mengelola module dengan perintah modprobe.
Kernel Space versus User Space #
Linux membagi dunia perangkat lunak menjadi dua wilayah yang tegas. Kernel space adalah area istimewa tempat kernel berjalan dengan akses penuh ke hardware; di sinilah driver, penjadwal proses, dan manajemen memori bekerja. User space adalah area tempat aplikasi biasa hidup — terminal, editor, server web — dan aplikasi hanya bisa mengakses hardware melalui pintu resmi bernama system call yang disediakan kernel.
Pembatasan ini bukan hiasan arsitektur, melainkan fondasi kestabilan sistem. Ketika aplikasi browser mengalami galat, kerusakannya berhenti di wilayah user space dan sistem tetap hidup; browser cukup dimatikan dan dijalankan ulang. Sebaliknya, kegagalan di kernel space — driver yang menulis ke memori yang salah, misalnya — dapat menjatuhkan seluruh sistem, gejala yang kita kenal sebagai kernel panic. Kita akan membedah mekanisme system call ini lebih jauh pada Section Advanced Linux.
Apa Itu Kernel Module #
Kernel module adalah potongan kode yang memperluas kemampuan kernel tanpa perlu mengompilasi ulang kernel atau menyalakan ulang komputer. Driver kartu jaringan, dukungan filesystem tambahan, dan modul keamanan semuanya didistribusikan dalam bentuk file berakhiran .ko (kernel object). Modul-modul tersebut tersimpan di pohon direktori per versi kernel:
/lib/modules/<versi-kernel>/
├── kernel/
│ ├── drivers/ ← driver perangkat
│ ├── fs/ ← dukungan filesystem
│ ├── net/ ← komponen jaringan
│ └── sound/ ← subsistem audio
└── modules.dep ← peta dependensi antar modulSistem memuat modul secara otomatis berdasarkan kebutuhan: mencolokkan printer USB memicu udev memuat modul driver terkait, dan memasang filesystem tertentu memuat modul pendukungnya bila belum aktif. Sebagai administrator, kita perlu mengetahui cara memeriksa modul yang sedang aktif dan memuatnya manual ketika otomatisasi tidak berjalan.
Memeriksa dan Memuat Modul #
Tiga perintah menjadi alat utama kita. lsmod mencantumkan modul yang sedang dimuat; modprobe memuat atau melepas modul beserta seluruh dependensinya; dan modinfo menampilkan informasi sebuah modul dari file-nya, termasuk deskripsi dan parameter yang didukung. Contoh berikut memeriksa informasi modul ext4 yang menjadi driver filesystem standar:
modinfo -F description ext4 2>/dev/null || echo "modul ext4 tidak tersedia di sistem ini"Output yang Dihasilkan:
modul ext4 tidak tersedia di sistem iniBlok di atas memakai fallback || karena ketersediaan file modul bergantung pada arsitektur dan paket yang terpasang — pola yang juga berguna di skrip kita sendiri. Perintah lsmod sendiri menampilkan tabel dengan tiga kolom: nama modul, ukuran memori, dan daftar modul lain yang memakainya. Berikut contoh tampilannya di sistem desktop:
Module Size Used by
snd_hda_intel 57344 3
ext4 933888 1
i915 2402304 12
xhci_pci 36864 1Kolom Used by penting untuk diagnosis: modul yang masih dipakai modul lain tidak akan bisa dilepas, sebagaimana file yang sedang dibuka program tidak bisa dihapus.
Memuat dan Melepas dengan modprobe #
Perintah modprobe bekerja dengan peta dependensi sehingga kita cukup menyebut modul yang dituju:
modprobe nama_modul # memuat modul + dependensinya
modprobe -r nama_modul # melepas modul (bila tidak dipakai)Sistem operasi menolak melepas modul yang masih terpakai dengan pesan galat yang menyebut penumpangnya — kita tinggal menelusuri Used by pada lsmod untuk tahu apa yang harus dimatikan lebih dulu. Mekanisme ini jauh lebih aman daripada rmmod yang menolak modul berdependensi secara mutlak dan tidak menyelesaikan urutan pelepasan. Modul juga bisa menerima parameter saat dimuat; daftar parameter tiap modul tercantum pada modinfo, dan nilai defaultnya dapat dikunci permanen melalui file di direktori /etc/modprobe.d/.
Konfigurasi Modul Persisten #
Kadang satu modul perlu dimuat setiap kali sistem menyala, atau justru harus dicegah termuat. Kedua kebutuhan itu diatur lewat file konfigurasi di /etc/modprobe.d/. Contoh berikut membangun file konfigurasi latihan di sandbox dan memeriksa hasilnya:
mkdir -p latihan/etc/modprobe.d
cat > latihan/etc/modprobe.d/blacklist-latihan.conf << 'EOF'
# Cegah modul latihan-termuat memuat otomatis
blacklist latihan-termuat
EOF
cat latihan/etc/modprobe.d/blacklist-latihan.confOutput yang Dihasilkan:
# Cegah modul latihan-termuat memuat otomatis
blacklist latihan-termuatDirektif blacklist mencegah modul termuat sebagai dependensi otomatis, tetapi masih mengizinkan pemuatan eksplisit dengan modprobe. Untuk benar-benar mengunci, digunakan install <modul> /bin/false yang mengalihkan setiap upaya pemuatan ke perintah yang selalu gagal. Sistem menggabungkan semua file .conf pada direktori tersebut secara berurutan nama file, sehingga kebiasaan memberi prefiks angka seperti 99-blacklist-kamera.conf menjadikan urutan penerapan mudah dikendalikan.
Dengan pemahaman kernel dan modul ini, kita siap membahas satu komponen yang menjembatani kernel dan root filesystem saat boot: initramfs.