2 poin oleh GN⁺ 2024-07-28 | 1 komentar | Bagikan ke WhatsApp

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

 
GN⁺ 2024-07-28
Komentar Hacker News
  • Ada pendapat bahwa contoh "Detecting button presses" sulit karena perlu membangun modul RPi
    • qemu adalah cara yang baik untuk merasakan pengalaman mengutak-atik kernel
  • Ada pendapat bahwa Linux Foundation perlu mendanai pembaruan buku LDD (linux device driver) dan buku kernel Linux
  • Pengguna membagikan pengalaman bahwa ia pertama kali membacanya 22 tahun lalu
  • Ada kabar bahwa pembaruan terbaru buku The Linux Memory Manager dilakukan pada awal Juli, dan saat ini sedang diedit
  • Ada pertanyaan umum tentang pemrograman kernel Linux, misalnya tentang mengutak-atik sistem berkas atau manajemen memori
    • Buku "Linux Kernel Development" karya Robert Love pernah ada, tetapi mungkin sudah tidak diperbarui lagi
  • Ada pujian untuk tutorial yang rinci dan praktis tentang langsung membangun modul kernel
  • Ada pertanyaan apakah penulis menggunakan LLM untuk menulis atau menyempurnakan teks