ในบทนี้เราจะพูดถึงการเขียนโปรแกรมเป็น module แบบง่ายๆ รวมถึงลักษณะการเขียนข้อควรระวัง และจะกล่าวถึงการเขีียน module โดยจะไม่อ้างอิงถึง device ใดๆ โดยเริ่มจากการทำความเข้าใจ module พื้นฐานง่ายๆ
#define MODULE
#include <linux/module.h>
int init_module(void) { printk("<1>Hello, world\n"); return 0; }
void cleanup_module(void) { printk("<1>Goodbye cruel world\n"); }
โดยปกติ MODULE จะถูก define ถ้ามีการ include <linux/module.h> ส่วน function printk ก็เป็น function ที่มีลักษณะคล้ายกับ printf แต่มีการใส่ <1> เพื่อบอก priority ของ message (เลขน้อย piority มาก) แต่จริงๆแล้วอาจจะไม่ต้องใส่ priority no. ก็ได้จะมีการกำหนดค่า default ไว้ซึ่ง message เหล่านี้จะถูกจัดการต่อโดย klogd และ init_module() จะถูกเรียกตอนมีการใส่ module นี้ ส่วน cleanup_module จะถูกเรียกตอนเอา module ออก เราสามารถทดลอง module นี้ได้ด้วยคำสั่ง insmod และ rmmod และ kompile ด้วย gcc ดังตัวอย่าง
root# gcc -c foo.c
root# insmod foo.o
Hello, world
root# rmmod foo
Goodbye cruel world
root#
แต่ถ้าคุณทดสอบ insert และ remove module บน xterm จะไม่ได้รับ message แต่สามารถดูได้จาก /var/log/messages (อาจจะแตกต่างตาม configuration ของ logd) เวลาทดสอบอาจจะเปิดอีก terminal นึงแล้วใช้คำสั่ง tail -f /var/log/messages เพิ่มติดตามดู log file นี้ก็ได้