Linux 内核模块(Linux Kernel Module,简称 LKM) 是一种可以在系统运行时动态加载和卸载到 Linux 内核中的代码片段。
简单来说:
内核模块 = 不重新编译内核,就能给 Linux 内核“加功能”的插件。
Linux 内核本身非常庞大,如果所有功能都编译进内核:
使用内核模块可以:
常见用途包括:
| 特点 | 说明 |
|---|---|
| 运行在内核态 | 权限高,出错可能导致系统崩溃 |
| 可动态加载 | insmod / modprobe |
| 可动态卸载 | rmmod |
| 依赖内核版本 | 不同内核一般不能混用 |
| 编译依赖内核源码 | 需匹配当前内核 |
lsmod # 查看已加载模块
insmod xxx.ko # 加载模块
modprobe xxx # 智能加载(自动处理依赖)
rmmod xxx # 卸载模块
modinfo xxx # 查看模块信息
#include <linux/module.h>
#include <linux/kernel.h>
static int __init hello_init(void) {
printk(KERN_INFO "Hello, kernel!\n");
return 0;
}
static void __exit hello_exit(void) {
printk(KERN_INFO "Goodbye, kernel!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
编译后生成 .ko 文件,就是内核模块。
| 对比项 | 内核模块 | 用户程序 |
|---|---|---|
| 运行空间 | 内核态 | 用户态 |
| 权限 | 最高 | 受限制 |
| 崩溃影响 | 系统可能宕机 | 只影响自己 |
| 调试难度 | 高 | 低 |
如果你愿意,我可以进一步讲:
你想从哪一块开始?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。