星期四, 9月 10, 2009

Study LDD3 on Debian

在 Debian 上建立學習 Linux Device Driver 的環境

aptitude install build-essential
aptitude install linux-headers-2.6.30-1-686
aptitude install linux-headers-2.6.30-1-common
aptitude install linux-kbuild-2.6.30
如此會在 /usr/src 安裝好編繹 kernel module 的環境

接著按照 LLD3 上寫的第一個範例 hello.c
#include
#include
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}

static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}

module_init(hello_init);
module_exit(hello_exit);
為它編寫一個 Makefile
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KERNELDIR ?= /usr/src/linux
PWD := $(shell pwd)
RM = rm -rf
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif
clean:
$(RM) *.ko *.o *.mod.c .*.cmd Module.* modules.* .tmp_versions
接著下 make 就可以編出 hello.ko 了 :D

沒有留言: