Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1683084
  • 博文数量: 1493
  • 博客积分: 38
  • 博客等级: 民兵
  • 技术积分: 5834
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-19 17:28
文章分类

全部博文(1493)

文章存档

2016年(11)

2015年(38)

2014年(137)

2013年(253)

2012年(1054)

2011年(1)

分类:

2012-09-17 08:49:21

原文地址:简单内核模块设计 作者:yeshen4978

内核模块:
1 内核模块是具有独立功能的程序,他可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行
2 模块编译和内核版本密切相连,模块编程也被称为内核编程
3 模块本身不被编译进内核映像,从而控制了内核的大小,模块一旦被加载,就和内核中其他的部分一样
程序结构

内核加载函数 module_init

内核卸载函数 module_exit
所需头文件
#include
#include
#include
模块编译
编写makefile


fineq($KERNELRELEASE),)
obj-m :=...
else
KDIR:=/lib/modules/2.6.29/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c .symvers
endif
注意:写命令时另起一行然后按Tab隔开后再写,否则make无法运行
kdir 指定的路径一定要与linux系统当前使用的内核源代码相对应,否则编译出来的模块无法插入,并提示“Invalid module format"所以在编写模块前查看当前linux内核的版本信息 uname 
写好后 输入make 生成的.ko就是编译得到的内核模块
安装内核模块 insmod ....ko
这时可以查看 已安装的内核模块 lsmod | grep ...
卸载内核模块 rmmod ...ko

阅读(239) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~