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中发现了输出信息:说明模块已经被内核成功加载。

你可能感兴趣的:(Ubuntu 12.04 LTS建立内核树(1))