Linux内核模块:从基础到实践
1. 内核模块的优势
内核模块具有诸多优势,其中一个重要方面是它们有助于动态产品配置。例如,内核模块可以设计为在不同价格点提供不同的功能。对于嵌入式产品,生成最终镜像的脚本可以根据客户愿意支付的价格来安装特定的内核模块集合。
在调试或故障排除场景中,内核模块也大有用处。可以使用内核模块在现有产品上动态生成诊断信息和调试日志,像kprobes等技术就支持这一功能。
实际上,可加载内核模块(LKM)框架为我们提供了一种动态扩展内核功能的方法,允许我们在内核内存中插入和移除实时代码。这种随心所欲地插入和移除内核功能的能力让我们认识到,Linux内核并非纯粹的整体式结构,它也是模块化的。
2. 内核源代码树中的内核模块
内核模块对象对我们来说并不完全陌生。在构建内核的过程中,我们会将一些组件配置为内核模块并进行安装。这些内核模块是内核源代码的一部分,通过在三态内核菜单配置提示中选择“M”来将其配置为模块。它们会被安装到 /lib/modules/$(uname -r)/ 目录下。
以下是查看当前运行的Ubuntu 18.04.3 LTS系统中安装的内核模块数量的操作步骤:
1. 查看系统发行版信息:
lsb_release -a 2>/dev/null |grep Description
输出示例:
Description: Ubuntu 18.04.3 LTS
超级会员免费看
订阅专栏 解锁全文
1121

被折叠的 条评论
为什么被折叠?



