0704最简单的驱动hello

来源:互联网 发布:淘宝哪店买结它推荐 编辑:程序博客网 时间:2024/05/18 17:02

1、程序hello.c

#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
        printk(KERN_ALERT "hello\n");
        return 0;
}

static void hello_exit(void)
{
        printk(KERN_ALERT "exit\n");
}

module_init(hello_init);
module_exit(hello_exit);


2、Makefile文件

MODULENAME=hello
obj-m:=$(MODULENAME).o
KERNELDIR?=/lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
modules:
        $(MAKE) -C $(KERNELDIR) M=$(PWD)  modules//这里一定要用tab不能用空格,否则编译的时候会出现错误:make: 没有什么可以做的为 `modules'。

 

3、加载模块

     root用户下:insmod ./hello.ko,但是什么输出都没看到。

    lsmod查看加载模块能看到hello模块

    rmmod hello

    在日志文件中查找 cat /var/log/syslog|grep hello能够看到输出

4、安装内核源代码

uname-r 显示内核版本

/usr/src$ ls
linux-headers-3.2.0-23  linux-headers-3.2.0-23-generic-pae
123@123-virtual-machine:/usr/src$ sudo apt-cache search linux-source
[sudo] password for hxy:
linux-source - Linux kernel source with Ubuntu patches
linux-source-3.2.0 - Linux kernel source for version 3.2.0 with Ubuntu patches
123@123-virtual-machine:/usr/src$ sudo apt-get install linux-source-3.2.0

下载完成后

root@123:/usr/src#tar jxvf linux-source-2.6.20.tar.bz2

解压后生成一个新的目录/usr/src/linux-source-3.2.0,所有的源代码都在该目录下。

进入该目录

开始配置内核 选择最快的原版的配置(默认)方式

root@123:/usr/src/linux-source-3.2.0# make oldconfig

make 。

make bzImage

当然,第一个make也可以不执行,直接make bzImage。执行结束后,可以看到在当前目录下生成了一个新的文件: vmlinux, 其属性为-rwxr-xr-x。

然后 :

make modules /* 编译 模块 */
make modules_install /* 安装 模块 */


 

 

 

 

 

 

 

原创粉丝点击