Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62038
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 236
  • 用 户 组: 普通用户
  • 注册时间: 2014-09-05 21:34
文章分类

全部博文(21)

文章存档

2015年(21)

我的朋友

分类: LINUX

2015-08-04 15:00:49

CentOS的内核源码默认是没有下载的,需要自己下载,首先安装linux的时候就应该知道linux的版本,我装的是Centos7的
下面查一下内核的版本,使用下面的命令

点击(此处)折叠或打开

  1. [scut_lcw@localhost lcw20150802]$ uname -r
  2. 3.10.0-229.el7.x86_64
可以去官网下载,也可以直接用yum install kernel-devel-`uname -r `下载
一个简单的内核模块:

点击(此处)折叠或打开

  1. #include<linux/module.h>
  2. #include<linux/init.h>
  3. MODULE_LICENSE("Dual BSD/GPL");
  4. static int __init helloworld_init(void)
  5. {
  6.         printk("hello world\n");
  7.         return 0;
  8. }
  9. static void __exit helloworld_exit(void)
  10. {
  11.          printk(KERN_ALERT"hello world\n");
  12. }
  13. module_init(helloworld_init);
  14. module_exit(helloworld_exit);

  15. MODULE_AUTHOR("LCW");
  16. MODULE_DESCRIPTION("hello");
  17. MODULE_VERSION("1.1");
该模块只是在加载模块和卸载模块的时候打印一些语句
下面是Makefile

点击(此处)折叠或打开

  1. target= hello
  2. obj-m:=$(target).o
  3. KERNELDIR=/usr/src/kernels/`uname -r`
  4. default:
  5.         $(MAKE) -C $(KERNELDIR) M=`pwd` modules
  6. clean:
  7.         rm -rf *.o *.mod.c
  8.         rm -rf Module.symvers .*cmd .tmp_versions *.order
KERNELDIR是内核源码的安装路径,其中M=`pwd`那里=号后面不能有空格,不然就会出错(我就是错这里,检查了好久)
用insmod加载内核模块,rmmod卸载内核模块。


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