只需一步,快速开始
可加载内核模块 是内核的扩展,可以在需要时附加到内核中,或从内核中删除。LKM 基本上是设备驱动程序的软件实现,它与真实的或者虚拟的硬件设备协同工作。当 LKM 加载到内核中时,它们监听和处理对设备的任何请求。由于只加载所需的 LKM,因此使用 LKM 可使内核变得轻便、模块化、灵活和可伸缩。
编写 Linux 内核模块的体系结构如下: 1. init_module 这个 LKM 初始化函数是强制执行的。当 LKM 加载到内核时触发该函数,因此所有初始化工作都是在这个函数中完成的。 2. 处理特定的函数 这些函数执行实际的工作,如读、写、打开、关闭设备,等等。 3. cleanup_module 当从内核中删除 LKM 时,调用 LKM 的这个强制执行函数。因此,所有清除工作如释放内存等都应在这个函数中执行。
编写 LKM 后,可以采用下列命令编译它: gcc -c -g <module_name>.c -I/usr/src/linux/include 该命令产生一个名为 <module_name>.o 的文件,它就是 LKM,可以使用下列命令将它加载到内核中: insmod -f <module_name>.o -f 如果在加载模块时遇到任何内核版本问题,可以通过在加载 LKM 时包含这个特定内核的头文件来解决问题。因此,在编译内核时,请使用 -I/usr/src/linux/include。 还可以使用 Makefile 来解决此类版本问题.
卸载 LKM 一旦模块加载到内核中,它将开始执行预定的功能。使用命令 lsmod 可以看到当前所有加载的 LKM 的列表。 可以使用 rmmod <module_name> 从内核中加载或删除模块。
使用道具 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
GMT+8, 2024-11-16 10:48 , Processed in 0.043252 second(s), 15 queries .
© 2021 Powered by Discuz! X3.5.