可装载内核模块-Loadable Kernel Module (LKM)

本文深入探讨了Linux的可装载内核模块(LKM),包括分类如设备驱动、文件系统和系统调用。重点讲述了版本检查机制,如CRC值校验和vermagic信息,并详细介绍了模块的装载、卸载、编译时版本信息的添加及构建与测试过程。
摘要由CSDN通过智能技术生成

0x01 可装载模块分类

设备驱动
文件系统
系统调用

0x02 版本检查

Linux 的迅速发展致使相邻版本的内核之间亦存在较大的差异,即在版本补丁号(Patch Level,即内核版本号的第四位数)相邻的内核之间。为此 Linux 的开发者为了保证内核的稳定,Linux 在加载模块到内核时对模块采用了版本校验机制。

1,Invalid module format -> disagrees about version of symbol module_layout
由于模块中 module_layout 的导出符号的版本信息与当前内核中的不符
函数 module_layout 的第二个参数 ver 存储了模块的版本校验信息。结构体 modversion_info 中保存了用于模块校验的 CRC(Cyclic Redundancy Check,即循环冗余码校验)值

2,Linux 对可装载模块采取了两层验证:模块的 CRC 值校验和 vermagic 的检查
CRC 值校验针对模块(内核)导出符号,是一种简单的 ABI(即 Application Binary Interface)一致性检查(1中的disagrees about version of symbol module_layout 就有由于没有通过 CRC 值校验,即 module_layout 的 CRC 值与当前内核中的不符)

模块 vermagic(即 Version Magic String)则保存了模块编译时的内核版本以及 SMP 等配置信息

3,模块的 vermagic 信息
# uname – r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值