利用 printk 及相关工具进行内核调试
1. 内核启动参数
内核拥有大量有用的启动参数,可在启动时(通过引导加载程序)选择性地传递给内核。完整的参数列表可查看文档: 内核命令行参数 (此处展示的是 5.10 内核文档的链接)。
在讨论内核命令行时,有几个与基于 printk 的调试相关的有用选项,能借助内核来调试内核初始化相关的问题。例如,内核提供了以下参数(直接取自上述链接):
| 参数 | 说明 |
| ---- | ---- |
| debug | [KNL] 启用内核调试(事件日志级别) |
| initcall_debug | [KNL] 跟踪 initcall 的执行情况,有助于找出内核启动时崩溃的位置 |
| ignore_loglevel | [KNL] 忽略日志级别设置,将所有内核消息打印到控制台,便于调试。也可作为 printk 模块参数,用户通常可通过 /sys/module/printk/parameters/ignore_loglevel 动态更改 |
这些参数非常有用,不妨尝试一下。刚开始看到大量的信息可能会感到惊讶,需仔细耐心地分析。
2. 剩余的 printk 杂项
2.1 控制台初始化前的打印 - 早期 printk
printk 的输出可以发送到控制台设备。默认情况下,大多数系统会将日志级别
超级会员免费看
订阅专栏 解锁全文
52

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



