博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu12.04下Linux内核模块动态加载
阅读量:6294 次
发布时间:2019-06-22

本文共 1091 字,大约阅读时间需要 3 分钟。

今天下午通过一番折腾,终于琢磨除了Linux内核模块的动态加载方法,网上大部分教程基于旧版本做的,有很多地方不一样,走了很多弯路,不过最后终于成功了。不过小弟水平实在有限,也不明白具体原理。说一下我自己的机器,Ubuntu12.04LTS,内核版本为3.2.0-24-generic-ape

具体方法如下:

1、建立C++源文件,假设文件目录为path,文件名为hello.c源代码如下:

#include <linux/init.h>

#include <linux/module.h>

#include <linux/kernel.h>

 

static int hello_init(void)

{

         printk(KERN_ALERT "Hello World!/n");

         return 0;

}

 

static void hello_exit(void)

{

         printk(KERN_ALERT "Bye World!/n");

}

 

module_init(hello_init);

module_exit(hello_exit);

 

MODULE_LICENSE("GPL");

MODULE_AUTHOR("WFJ");

注意:这里的头文件需要根据系统内核的具体情况来使用,不是所有版本都用一样的头文件,一开始我的编译错误就是因为头文件使用不当产生的。

2、写Makefile,内容如下:

 

obj-m := hello.o

KERNELBUILD :=/usr/src/linux-headers-3.2.0-24-generic-pae

default:

       make -C $(KERNELBUILD) M=$(shell pwd) modules

clean:

       rm -rf *.o  *.ko *.mod.c .*.cmd .tmp_versions *.order *.symvers

这里,KERNELBUILD后面的路径也用根据你自己系统的情况决定,基本是/usc/src/your_kernel_name

3、编译源文件,直接make就可以,Makefile里的default已经给出了编译规则,clean的规则也给出了,可以自行修改。

4、加载模块 insmod hello.ko

5、观察是否成功 dmesg可以看到系统的内核模块信息。

6.卸载模块 rmmod hello.ko

转载于:https://www.cnblogs.com/airfighter/archive/2012/07/20/Ubuntu_Kernel_Dynamic_Insert.html

你可能感兴趣的文章
PHP的工作原理和生命周期
查看>>
jQuery - 左右拖动分隔条
查看>>
注入 - Ring3 APC注入
查看>>
NFS PRC端口映射器
查看>>
关于JAVA匿名内部类,回调,事件模式的一点讨论
查看>>
Windows 术语表(Windows Glossary)
查看>>
TOJ 4689: Sawtooth
查看>>
你会开会吗
查看>>
关于FAST比较全的博文
查看>>
SCVMM 安装
查看>>
iOSBlock和delegate的用法
查看>>
4.Azure创建点到站点的***隧道(下)
查看>>
怎样为用户写“招标书”
查看>>
python运维之轻松模拟开发FTP软件05
查看>>
Nginx配置proxy_pass转发的/路径问题
查看>>
总编下午茶:挑战者心态能否帮助微软重回云计算巅峰?
查看>>
理解并取证:广域网上的PPP协议
查看>>
动软分享社区系统实现个性化导购营销平台
查看>>
shell编程 字符串处理
查看>>
Cisco3560交换机enable密码破解和恢复出厂设置
查看>>