Ubuntu 12.04 LTS創建內核樹(1)

最近開始學習linux驅動編程,看的資料是經典的《linux設備驅動開發 第3版》。
 開始驅動練習的前提條件是須要本身的內核樹。
 本人的系統爲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中發現了輸出信息:說明模塊已經被內核成功加載。linux

相關文章
相關標籤/搜索