调试 Boot(引导)过程 通常比较“底层”,因为此时操作系统还没完全起来,常规调试工具往往用不了。下面按 调试思路 → 常用手段 → 不同场景的实践方法 给你一个系统性的指南。
Boot 通常分几层:
不同阶段的调试方式完全不同。
从“能看到的输出”开始,逐步缩小范围
适用于:
做法
minicom / putty / screen 接收GRUB 示例
serial --unit=0 --speed=115200
terminal_input serial
terminal_output serial
内核参数
console=ttyS0,115200
编辑 GRUB 启动项,添加:
debug
ignore_loglevel
earlyprintk=serial,ttyS0,115200
常用组合:
console=tty0 console=ttyS0,115200
查看卡在哪:
initcall_debug
非常适合学习 / 开发 Bootloader:
qemu-system-x86_64 \
-kernel bzImage \
-initrd initramfs.cpio.gz \
-append "console=ttyS0" \
-nographic
或调试 GRUB:
qemu-system-x86_64 -hda disk.img -serial mon:stdio
适合调试:
qemu-system-x86_64 -s -S -kernel bzImage
另一个终端:
gdb vmlinux
target remote :1234
可断点:
break start_kernel
dmesg 后的日志journalctl -b -1 看上一次启动linux /boot/vmlinuz root=/dev/sda1
initrd /boot/initramfs.img
boot
init=/bin/shefibootmgr -v
printenv, bootm, nfsDEBUG 宏你可以告诉我:
我可以直接给你对应可操作的调试步骤或代码示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。