Pengantar
Penulis
- Linux Kernel Module Programming Guide pertama kali ditulis oleh Ori Pomerantz untuk Linux v2.2
- Diperbarui oleh Peter Jay Salzman untuk Linux v2.4
- Dipelihara bersama oleh Michael Burian untuk Linux v2.6
- Bob Mottram memperbarui contoh untuk versi setelah Linux v3.8
- Jim Huang memperbarui ke versi Linux terbaru (v5.0 ke atas) dan memperbaiki dokumen LaTeX
Ucapan terima kasih
- Berbagai kontributor memberikan perbaikan dan saran
Apa itu modul kernel?
- Modul kernel Linux adalah segmen kode yang dapat dimuat dan dilepas secara dinamis ke kernel sesuai kebutuhan
- Modul kernel memperluas fungsi kernel tanpa harus me-reboot sistem
- Tanpa modul, setiap kali menambahkan fitur baru, kernel harus dibangun ulang dan sistem harus di-reboot
Paket modul kernel
- Ubuntu/Debian:
sudo apt-get install build-essential kmod
- Arch Linux:
sudo pacman -S gcc kmod
Modul apa yang ada di kernel saya?
- Modul yang saat ini dimuat di kernel dapat diperiksa dengan perintah
lsmod
- Juga dapat diperiksa melalui file
/proc/modules
Apakah perlu mengunduh dan mengompilasi kernel?
- Untuk mengikuti panduan ini, tidak perlu mengunduh dan mengompilasi kernel
- Menjalankan contoh di distribusi uji adalah pilihan yang aman
Sebelum memulai
- Hal-hal yang perlu diperhatikan seperti manajemen versi modul, penggunaan X Window System, SecureBoot, dan lain-lain
Header
- Perlu memasang file header kernel
- Ubuntu/Debian:
sudo apt-get install kmod linux-headers-$(uname -r)
- Arch Linux:
sudo pacman -S linux-headers
- Fedora:
sudo dnf install kernel-devel kernel-headers
Contoh
- Semua contoh ada di subdirektori examples dalam dokumen
Hello World
Modul paling sederhana
- Membuat dan mengompilasi file
hello-1.c
- Menjelaskan cara memuat dan melepas modul
Hello dan Goodbye
- Contoh penggunaan makro
module_init dan module_exit
Makro __init dan __exit
- Makro
__init membebaskan memori setelah fungsi inisialisasi selesai
- Makro
__exit menghilangkan fungsi jika modul dibangun langsung ke dalam kernel
Lisensi dan dokumentasi modul
- Menentukan lisensi modul menggunakan makro
MODULE_LICENSE
- Contoh penggunaan makro
MODULE_AUTHOR, MODULE_DESCRIPTION
Meneruskan argumen baris perintah
- Meneruskan argumen baris perintah ke modul menggunakan makro
module_param
- Menambahkan deskripsi argumen menggunakan makro
MODULE_PARM_DESC
Modul yang mencakup beberapa file
- Contoh modul kernel yang dibagi ke beberapa file sumber
Membangun modul untuk kernel yang telah dikompilasi sebelumnya
- Menjelaskan cara membangun modul untuk kernel yang telah dikompilasi sebelumnya
Ringkasan GN⁺
- Panduan ini adalah panduan komprehensif tentang pemrograman modul kernel Linux, membahas dari konsep dasar modul kernel hingga topik lanjutan beserta berbagai contohnya
- Melalui modul kernel, fungsi kernel dapat diperluas tanpa harus me-reboot sistem, yang menjadi keuntungan besar bagi pengembang
- Hal-hal seperti manajemen versi modul dan SecureBoot perlu dipahami dan diikuti dengan baik
- Proyek terkait mencakup Linux Device Drivers, The Linux Programming Interface, dan lain-lain
1 komentar
Komentar Hacker News