Ubuntu 12.04 LTS建立內核樹
本人的系統為ubuntu 12.04 LTS,具體建立的步驟如下:
(1) 查看自身系統的內核版本,指令為:uname -r,輸出的信息:
**3.8.0-29-generic**
說明內核版本為3.8.0。
(2) 在目錄/usr/src目錄下發現有一下文件:
**linux-headers-3.8.0-29 linux-headers-3.8.0-29-generic**
從文件名可以看出,這兩個目錄下只有代碼的頭文件。
(3) 測試只有頭文件是否可以動態加載自己的helloworld模塊(生成方法可以參考《linux 設備驅動開發》)。
(4) hello.c文件內容:
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_EMERG "Hello world\n");
return 0;
}
static int hello_exit(void)
{
printk(KERN_EMERG "Goodbye, hello world!\n");
return 0;
}
module_init(hello_init);
module_exit(hello_exit);
Makefile文件內容:
ifneq ($(KERNELRELEASE),)
obj-m :=hello.o
else
KDIR := /lib/modules/3.8.0-29-generic/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod *.mod.c *sysmvers
endif
(5) 運行:sudo insmod hello.ko sudo rmmod hello.ko 終端沒有反應,但是在查看
/var/log/syslog中發現了輸出信息:說明模塊已經被內核成功加載。