Language:

Search

Basic pemrograman linux kernel module

  • Share this:
post-title

PENGANTAR
---------

Kernel module adalah potongan kode yang dapat di load dan unload ke dalam kernel saat ada request dari user program tersebut akan memperluas fungstionalitas kernel tanpa perlu reboot sistem. 

Sebagai contoh,satu jenis modul device buat driver yang memungkinkan kernel untuk mengakses hardware untuk terhubung ke komputer.
tanpa modul,kita harus bisa membuat kernel monolitik agar dapat menambahkan fungsi baru yang terhubung langsung di dalam kernel selain memiliki memori kernel yang lebih besar,kelemahannya adalah kita akan di minta terus untuk reboot kernel ketika kita menginginkan fungsi terbaru di dalamnya.

START
-----

Modul kernel seharusnya memiliki setidaknya 2fungsi utama,yaitu : "start"(initialisasi) untuk pemanggilan fungsi terhadap init_module() dan  pemanggilan fungsi cleanup_module() fungsi tersebut biasanya di panggil oleh module insmodded ke dalam kernel tadi sesaat sebelum rmmoded di jalankan,dan menggunakan init_module() dan cleanup_module() untuk memulai dan mengakhiri fungsinya (untuk lebih jelasnya tentang insmodded dan rmmoded silahkan bergoogling) biasanya,init_module() di gunakan untuk register handler langsung dengan kernel atau mengganti salah satu fungsi kernel dengan kode itu sendiri (tetap melakukan pemanggilan fungsi asli) setiap modul kernel di haruskan menyertakan linux/module.h guna ekspansi makro yang akan menyempurnakan perintah printk()log level dan KERN_ALERT

berikut contoh kodingan simple untuk kernel module

#include
#include

int init_module(void)
{
printk(KERN_INFO "hai unyu\n");
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "fufufu\n");
}
coba simpan dengan nama semu.c

cara kompilenya pun sedikit berbeda dari aplikasi userspace biasa yang disimpan dalam Makefile,walaupun sedikit nampak  terorganisir,pengaturan berlebihan yang banyak terakumulasi dalam sublevel Makefiles yang cukup besar memakan memory userspace.

sekarang mari kita mencoba kompilasi code program dengan perintah :
obj-m += semu.o
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

lalu ketikan perintah :
alessa@nullsoft:~/lkm# make

dan akan menampilkan output,seperti berikut :

make −C /lib/modules/2.6.11/build M=/root/lkm modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.35-22'
CC [M] /root/lkm/semu.c
Building modules, stage 2.
MODPOST

pemanggilan kbuild dan build adalah proses untuk modul loadable eksternal yang sekarang adalah sepenuhnya terintegrasi dalam kernel standar untuk membangun mekanisme kerjanya

Armin

Armin

IT Dev, SEO & Digital Marketing Specialist with 7+ years experience, Coder, Sys Admin, Designer, Blogger