Linux的模块加载-设备管理实验

1 模块程序

PS:举个例子–文件名hello.c

#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>

int init_hello_module(void)
{
	printk("Hello! This is a testing module1!\n");
	return 0;
}
void exit_hello_module(void)
{
	printk("Sorry! The module1 is unloading!\n");
}
module_init(init_hello_module);
module_exit(exit_hello_module);
MODULE_LICENSE("GPL");

个人建议,经过我多次通过make运行。int init_hello_module----你应该按这样格式写
int init_XXXX_module----个人建议而已,不喜勿喷。第二个函数也一样。

2 编写Makerfile文件、

用终端新建–指令:vi Makerfile

vi + 文件名

obj-m := hello.o    //hello为你的要编译文件名
下面的格式很重要--请注意!!!--格式举例子↓

     all:    ----直接敲回车
             (这里相当于按了tab分隔符)make..........这里会这就这样子

 //注意空格!!!
 all:
     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
 clean:
     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

3 加载模块程序

这里,我们在终端输入:make 就能得到hello.ko、hello.o文件
注意,如果输入make提示安装插件,必须要装的哦!!具体指令看提示,我懒得找!!
PS:这个hello.ko文件很重要
在这里插入图片描述
接下来我们准备加载模块了!

指令:sudo insmod hello.ko

输入完这个指令,是不会显示如何东西的。那么我们怎么知道有没有加载成功呢?

指令:lsmod | grep hello (是L不是i哦!!)

我就懒得截图。算了,我还是截图吧。。。。。o(╯□╰)o
效果图

4 模块输出

由于网上指令一大堆,也试了,结果都有问题。。。所以,我就懒得去弄,当然我也会提供这些方法出来。
感兴趣的话,你也可以去试试!
我的指令的话,在终端输入,是这个:

dmesg       //我所使用的
//网上所使用的指令
cat syslog | grep hello
tail -n /var/log/messages

这里没图,具体情况就是,显示的文字在最后面,不用往前面翻!!
效果图

5 模块卸载

//必须使用管理员才能卸载
sudo rmmod hello.ko

同样,不会显示是否成功之类的信息!
使用下面代码查看有没有打印出模块函数里面写的信息,代码的情况也一样,具体看上面

dmesg

欢迎访问我的私人博客:我的私人博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值