Skip navigation


Modul kernel adalah sebuah file obyek yang berisi fungsi-fungsi yang dapat digunakan oleh kernel sistem operasi. Tujuan dibuat sebuah modul kernel adalah untuk menyediakan fungsi-fungsi yang tidak disediakan secara default oleh kernel. Modul ini biasanya digunakan sebagai device driver.

Contoh sebuah modul kernel sederhana

/* file contoh.c */
#include <linux/module.h>
static void __init hello_init(void)
{
	printk(KERN_INFO "Hello World!");
}

static void __exit hello_exit(void)
{
	printk(KERN_INFO "Hello World!");
}

module_init(hello_init);
module_exit(hello_exit);

Untuk menjalankan modul ini pertama-tama kode harus dikompilasi. Kompilasi dapat dilakukan dengan menggunakan Makefile seperti di bawah ini

obj-m += contoh.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

Kompilasi dapat dilakukan dengan menggunakan perintah Make.

Selanjutnya akan terdapat beberapa file termasuk contoh.ko.

Untuk melakukan instalasi cukup jalankan perintah pada shell

#insmod contoh.ko

Untuk membuang modul dari kernel jalankan perintah

#rmmod

Keluaran dapat dilihat dengan menggunakan perintah

#dmesg

Bisa dilihat pada kode di atas, fungsi inisialisasi, yakni fungsi yang dijalankan pertama kali diset dengan menggunakan fungsi module_init, sedangkan fungsi yang dijalankan saat modul dibuang diset dengan menggunakan fungsi module_exit.

Pada dasarnya modul kernel berbeda dengan program biasa. Karena berjalan pada kernel space, modul hanya dapat menggunakan fungsi-fungsi yang disediakan oleh kernel. Modul kernel tidak dapat menggunakan fungsi-fungsi yang disediakan library. Oleh karena itu header file seperti stdio.h, stdlib.h, tidak dapat dipakai dalam modul. Dapat dilihat di atas, untuk melakukan pencetakan ke terminal tidak digunakan fungsi printf melainkan fungsi printk yang pada dasarnya memiliki fungsi dan fitur yang sama.

File yang berisi modul sederhana dan makefilenya dapat diunduh di sini.
NB : Direname dulu ke file zip.

6 Comments

  1. Mas mau tanya nih saya agak bingung maksude apa itu module
    terus saya coba koding seperti diatas
    tapi saat saya coba compile hasilnya error
    berikut errornya
    [root@localhost kangtile]# make
    make -C /lib/modules/2.6.15-1.2054_IGN1 /build M=/home/kangtile modules
    make[1]: Entering directory `/lib/modules/2.6.15-1.2054_IGN1′
    make[1]: *** No rule to make target `/build’. Stop.
    make[1]: Leaving directory `/lib/modules/2.6.15-1.2054_IGN1′
    make: *** [all] Error 2
    [root@localhost kangtile]#
    kira yang salah apa yah

    oh saya pakai distro igos nusantara 2006 (fedora)

    Sebelumnya saya ucapkan terima kasih

  2. coba diunduh dulu kode programnya terus dimake dari situ. atau kalau masih tidak bisa berarti mungkin kernel headernya belum terinstall

    http://www.linuxquestions.org/questions/linux-hardware-18/make1-no-rule-to-make-target-modules.-stop.-571661/

  3. link contoh kodenya agak sedikit salah (bener, tapi substansial salah :P)
    ini yang lebih sederhana
    https://maleskoding.wordpress.com/files/2009/01/contoh.odt

    (rename ke zip dulu)

  4. Mas, kalo insmod sama modprobe sama atau beda ya?
    Kalo module kernel yg difungsikan utk transmisi jaringan, berarti secara otomatis kernel akan menjalankan module tersebut apabila mentransmisikan paket ke jaringan ya, mas?

    Mohon pencerahannya,

    Trims.

  5. kalau menurut manualnya, modprobe itu jauh lebih lengkap daripada insmod/rmmod. modprobe punya beberapa parameter.

    module kernel untuk transmisi jaringan itu tidak otomatis juga sebenarnya, tergantung mungkin device yang dia handle. atau juga kalau menggunakan netfilter framework, kita bisa set modul menjalankan sebuah fungsi ketika jaringan menerima atau mentransmisikan sebuah paket.

    kebetulan saya lagi menulit post tentang hal itu, tapi masih belum selesai.

  6. untuk lebih jelas step by step bisa dilihat disini gan :Cara Membuat Kernel Modul Ubuntu


2 Trackbacks/Pingbacks

  1. By Timer pada Modul Kernel Linux « Males Koding on 15 Des 2008 at 6:32 am

    […] Ditulis pada Desember 15, 2008 oleh petra Salah satu hal yang bisa dilakukan pada modul kernel adalah membuat sebuah sistem yang sifatnya real time. Salah satu contohnya adalah pada tugas […]

  2. […] Posts Modul Kernel SederhanaTOKI : Pengenalan C/C++ – GCC, MinGW, DevC++Layer-layer LTSAIEEE Std 1484.1 – Learning Technology […]

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: