Linux服务器内核模块查看全攻略:8种专业方法解析
一、为什么要查看内核模块?
Linux内核模块(Kernel Module)是可以在系统运行时动态加载到内核中的代码段。作为系统管理员或开发人员,经常需要:
- 排查硬件驱动问题
- 检查安全漏洞(如未打补丁的模块)
- 优化系统性能
- 开发自定义驱动程序
二、8种核心查看方法
1. lsmod命令(最常用)
$ lsmod
Module Size Used by
xt_conntrack 16384 1
nf_conntrack 139264 1 xt_conntrack
...
输出说明:模块名称、占用内存大小、被引用次数
2. modinfo查看详细信息
$ modinfo nf_conntrack
filename: /lib/modules/5.4.0-88-generic/kernel/net/netfilter/nf_conntrack.ko
license: GPL
description: Netfilter connection tracking module
...
3. /proc/modules文件
$ cat /proc/modules
nf_conntrack 139264 1 xt_conntrack, Live 0xffffffffc0a00000
4. 通过sysfs文件系统
$ ls /sys/module/
5. dmesg查看加载日志
$ dmesg | grep -i module
6. 使用dkms工具
$ sudo dkms status
7. 检查启动加载模块
$ cat /etc/modules
# /etc/modules: kernel modules to load at boot time
lp
rtc
8. 图形化工具(适合新手)
使用KInfoCenter或HardInfo工具查看
三、高级应用场景
1. 查找特定硬件驱动模块
$ lspci -k | grep -A 3 -i ethernet
2. 检查模块依赖关系
$ modprobe --show-depends nvidia
3. 安全审计(检查可疑模块)
$ find /lib/modules/$(uname -r) -name "*.ko" -exec shasum {} \;
⚠️ 注意事项
- 修改内核模块需要root权限
- 错误操作可能导致系统崩溃
- 生产环境操作前建议备份
- 不同Linux发行版命令可能略有差异
