[Linux Kernel] 撰寫簡單 Hello, World module (part 1).
Jun 21st, 2010 by appleboy 參觀者:2,066Views 機器人:64Views
推到 Twitter!
推到 Plurk!
推到 Facebook!
來筆記如何在 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
# cd Kernel directory
#
cd /usr/src/linux-headers-2.6.31-14-generic-pae
建立 hello 目錄
#
# mkdir directory
#
mkdir hello
# mkdir directory
#
mkdir hello
建立 Makfile 以及 hello.c
hello.c:
#include <linux/kernel.h> /* pr_info 所需 include 檔案*/
#include <linux/init.h>
#include <linux/module.h> /* 所有 module 需要檔案*/
#include <linux/version.h>
MODULE_DESCRIPTION("Hello World !!");
MODULE_AUTHOR("Bo-Yi Wu <appleboy.tw AT gmail.com>");
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);
#include <linux/init.h>
#include <linux/module.h> /* 所有 module 需要檔案*/
#include <linux/version.h>
MODULE_DESCRIPTION("Hello World !!");
MODULE_AUTHOR("Bo-Yi Wu <appleboy.tw AT gmail.com>");
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:
#
# Makefile by appleboy <appleboy.tw AT gmail.com>
#
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
# Makefile by appleboy <appleboy.tw AT gmail.com>
#
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
之後只要切換到 hello 目錄,直接打 make 就可以產生出 hello.ko 檔案,直接載入 hello.ko 方式:
insmod ./hello.ko
移除 hello.ko
rmmod ./hello.ko
之後到 /var/log/message 底下就可以看到訊息:

