上一篇
Linux内核编译模块查询方法
- Linux
- 2025-06-11
- 3033
查看已编译的内核模块,最直接方法是检查内核配置文件: ,
grep '=m' /boot/config-$(uname -r)
,或使用
zcat /proc/config.gz | grep '=m'
(若支持)。
在Linux系统中,了解内核编译时启用了哪些模块对系统管理、驱动调试和安全审计至关重要,以下是几种专业且可靠的查看方法,所有操作均需root
权限:
方法1:直接查看内核配置文件(推荐)
内核编译配置通常存储在/boot
目录下,文件名格式为config-$(uname -r)
。
操作步骤:
# 1. 定位当前内核版本的配置文件 ls /boot/config-$(uname -r) # 2. 查看所有编译的模块(含状态) grep =m /boot/config-$(uname -r) # 3. 检查特定模块(如ext4文件系统) grep CONFIG_EXT4_FS /boot/config-$(uname -r)
- 输出说明:
=y
表示功能直接编译进内核(非模块)
=m
表示以模块形式编译
# CONFIG_XXX is not set
表示未启用
️ 方法2:通过/proc文件系统(需内核支持)
若内核启用了CONFIG_IKCONFIG_PROC
选项,可通过虚拟文件查看配置:
zcat /proc/config.gz | grep =m
- 注意:若提示
/proc/config.gz
不存在,说明内核未启用此功能。
方法3:检查已加载模块(运行时状态)
此方法仅显示当前加载的模块(非全部编译模块):
lsmod # 列出已加载模块 lsmod | grep nvidia # 过滤特定模块
方法4:源码编译场景
若您自行编译过内核,可在源码目录查看.config
文件:
cat /path/to/kernel-source/.config | grep =m
关键注意事项
- 模块 vs 内置功能:
- 模块:动态加载(
.ko
文件,位于/lib/modules/$(uname -r)/kernel/
) - 内置:直接集成到内核(不可卸载)
- 模块:动态加载(
- 发行版差异:
CentOS/RHEL的配置文件在/boot
,Arch Linux可能需安装linux-headers
。 - 安全实践:
通过grep CONFIG_MODULES /boot/config-$(uname -r)
确认模块功能是否启用(避免反面模块加载)。
引用说明:
- 方法依据Linux内核官方文档《Kernel Build System》及
CONFIG_IKCONFIG
选项说明。- 文件路径规范参考Filesystem Hierarchy Standard (FHS 3.0)。
- 命令验证环境:Linux kernel 5.15+ (Ubuntu 22.04/CentOS 9)。
通过以上方法,您可准确掌握内核编译的模块信息,为系统优化和故障排查提供权威依据。