1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > kali编译Linux内核驱动ko文件

kali编译Linux内核驱动ko文件

时间:2024-02-13 14:25:49

相关推荐

kali编译Linux内核驱动ko文件

在Linux环境下编译.ko内核驱动文件(运行于本linux系统,非嵌入式),需要保证/lib/modules/xxx的版本与内核版本保持一致,否则编译后的驱动无法运行!

1.更新内核版本及headers

/lib/modules/xxx/build文件夹缺失,需要进行此步骤。

命令如下:

uname -a# 获取当前内核版本apt-cache search linux-image# 搜索相关版本sudo apt-get install linux-image-6.0.0-kali6-amd64# 更新内核sudo apt-get install linux-headers-6.0.0-kali6-amd64# 安装内核头文件

注:本机的Linux内核原版本为6.0.0-kali3-amd64,更新内核版本后重启,使用uname命令可以看到内核版本发生了改变。

![在这里插入图片描述](https://img-/912dff3e9d58444a85dc7c0089dcaf64.png)

安装linux-image-6.0.0-kali6-amd64更新内核后,/lib/modules/下会出现两个文件夹,分别是6.0.0-kali3-amd646.0.0-kali6-amd64

只有在执行sudo apt-get install linux-headers-6.0.0-kali6-amd64安装内核头文件后,6.0.0-kali6-amd64文件夹下才会出现build文件夹。

2.编写并编译测试ko驱动文件

测试代码:first.c

#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>// 当驱动被加载的时候,执行此函数static int __init hello_init(void){printk(KERN_ALERT, "welcome, walker!\n");return 0;}// 当驱动被卸载的时候,执行此函数static void __exit hello_exit(void){printk(KERN_ALERT, "bye!\n");}// 版权声明MODULE_LICENSE("GPL");// 以下两个函数属于 Linux 的驱动框架,只要把驱动两个函数地址注册进去即可。module_init(hello_init);module_exit(hello_exit);

Makefile文件

obj-m := first.oKERNELDIR := /lib/modules/`uname -r`/buildPWD := $(shell pwd)modules:$(MAKE) -C $(KERNELDIR) M=$(PWD) modulesclean:rm -rf *.o *.mod.c *.order *.symvers

3.驱动的加载与卸载

生成first.ko文件后,执行如下命令:

sudo insmod first# 安装first.ko驱动模块lsmod# 显示内核驱动模块列表sudo rmmod first# 卸载该模块dmesg# 打印printk输出的信息

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。