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

相关文章
相关标签/搜索