來筆記如何在 Kernel 撰寫 hello world! module,在 Ubuntu Kernel 2.6.31-14 環境下撰寫,其實不難啦,首先先進入 Kernel 目錄,請在 /usr/src 底下看自己的系統版本,或者是利用 uname -r 來知道 Kernel 版本,底下是在 Ubuntu Kernel 2.6.31-14 Kernel 實做:
進入 Kernel 目錄
# # cd Kernel directory # cd /usr/src/linux-headers-2.6.31-14-generic-pae
建立 hello 目錄
# # mkdir directory # mkdir hello
建立 Makfile 以及 hello.c hello.c:
#includeMakefile:/* pr_info 所需 include 檔案*/ #include #include /* 所有 module 需要檔案*/ #include MODULE_DESCRIPTION("Hello World !!"); MODULE_AUTHOR("Bo-Yi Wu "); MODULE_LICENSE("GPL"); static int __init hello_init(void) { pr_info("Hello, world\n"); pr_info("The process is \"%s\" (pid %i)\n", current->comm, current->pid); return 0; } static void __exit hello_exit(void) { printk(KERN_INFO "Goodbye\n"); } module_init(hello_init); module_exit(hello_exit);
# # Makefile by appleboy之後只要切換到 hello 目錄,直接打 make 就可以產生出 hello.ko 檔案,直接載入 hello.ko 方式:# obj-m += hello.o KVERSION := $(shell uname -r) all: $(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) modules clean: $(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
insmod ./hello.ko移除 hello.ko
rmmod ./hello.ko之後到 /var/log/message 底下就可以看到訊息: