要查看内核模块加载日志,需用journalctl -k筛选内核消息,并结合grep匹配loading、insmod、modprobe、module或具体模块名;实时跟踪用-journalctl -k -f | grep -i "loading|insmod|modprobe",历史记录可加--since时间过滤,或组合systemd-modules-load.service日志及lsmod/dmesg交叉验证。

在 Linux 系统中,journalctl 可以查看内核模块加载相关的日志,关键在于筛选内核(kernel)消息和匹配模块加载行为的关键词(如 insmod、modprobe、loading、module 或具体模块名)。
查看实时内核模块加载日志
运行以下命令可实时跟踪新发生的模块加载事件:
-
journalctl -k -f | grep -i "loading\|insmod\|modprobe\|module"—— 实时显示内核日志,并过滤出含模块操作关键词的行 -
journalctl -k -f | grep -E "(^.*:.*:.* kernel:.*:|insmod|modprobe)"—— 更精准匹配内核时间戳+模块相关动作(适合较新内核)
查看历史模块加载记录(含时间范围)
模块加载通常由 modprobe 或 insmod 触发,这些命令本身会记入系统日志(user journal),而内核则记录模块初始化结果。建议组合查询:
-
journalctl -k --since "2 hours ago" | grep -i "module\|loading"—— 查看最近两小时内内核输出的模块相关消息 -
journalctl -u systemd-modules-load.service --since today—— 查看开机时自动加载模块的服务日志(对应/etc/modules-load.d/配置) -
journalctl | grep -E "(modprobe|insmod).*exit code" | tail -10—— 检查用户态模块加载命令是否成功执行
按具体模块名搜索日志
如果你知道模块名称(例如 iwlwifi、nvidia、vboxdrv),直接搜索更高效:
-
journalctl -k | grep -i "iwlwifi"—— 查看所有含该模块名的内核日志(含加载、卸载、错误) -
journalctl -k -o short-iso | grep -A2 -B2 "nvidia"—— 带上下文(前后两行)显示,便于判断加载是否成功或有报错 -
journalctl -k | awk '/nvidia/{print NR-1,NR,NR+1}' | xargs -n1 sed -n—— 进阶用法:定位并打印包含模块名的行及其邻近行(需配合实际行号调整)
确认模块是否成功加载并关联日志
仅靠日志可能不够明确,建议结合内核状态验证:
- 执行
lsmod | grep your_module_name确认模块当前已加载 - 对比
dmesg | grep your_module_name——dmesg是内核环缓冲区快照,常比 journalctl 更早捕获模块初始化信息(尤其在 journal 服务未及时启动时) - 若模块加载失败,常见线索包括:
Unknown symbol in module、Operation not permitted、Invalid parameter,这些都会出现在journalctl -k输出中
journalctl 查看模块日志不复杂但容易忽略内核与用户态日志的分工——模块行为主要在 -k 日志里,而触发动作往往在系统服务或用户命令日志中。组合使用、合理过滤,就能快速定位问题。











