温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何调试Boot引导过程

发布时间:2026-10-13 01:03:00 来源:亿速云 阅读:107 作者:小樊 栏目:系统运维

调试 Boot(引导)过程 通常比较“底层”,因为此时操作系统还没完全起来,常规调试工具往往用不了。下面按 调试思路 → 常用手段 → 不同场景的实践方法 给你一个系统性的指南。


一、先明确:你要调试哪一段 Boot?

Boot 通常分几层:

  1. BIOS / UEFI 阶段
    • 硬件初始化
    • 启动设备选择
  2. Bootloader 阶段
    • BIOS: GRUB / LILO / Syslinux
    • UEFI: GRUB2 / systemd-boot
  3. 内核加载阶段
    • kernel + initramfs
  4. 用户空间初始化
    • init / systemd

不同阶段的调试方式完全不同。


二、通用调试思路(非常重要)

从“能看到的输出”开始,逐步缩小范围

  1. 是否能进 BIOS?
  2. 是否能看到 Bootloader 菜单?
  3. 是否开始加载内核?
  4. 是否卡在内核或 initramfs?
  5. 是否卡在用户空间?

三、常见调试手段

1️⃣ 串口调试(最可靠)

适用于:

做法

  • 主板或虚拟机开启串口(COM1)
  • Bootloader / 内核输出到串口
  • 用 minicom / putty / screen 接收

GRUB 示例

serial --unit=0 --speed=115200
terminal_input serial
terminal_output serial

内核参数

console=ttyS0,115200

2️⃣ 内核启动参数调试

编辑 GRUB 启动项,添加:

debug
ignore_loglevel
earlyprintk=serial,ttyS0,115200

常用组合:

console=tty0 console=ttyS0,115200

查看卡在哪:

initcall_debug

3️⃣ 使用 QEMU 调试 Boot(强烈推荐)

非常适合学习 / 开发 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

4️⃣ GDB + QEMU(最“硬核”)

适合调试:

  • Bootloader
  • 内核早期代码
qemu-system-x86_64 -s -S -kernel bzImage

另一个终端:

gdb vmlinux
target remote :1234

可断点:

break start_kernel

5️⃣ 日志与截图法(物理机常用)

  • 拍照 BIOS 报错
  • dmesg 后的日志
  • journalctl -b -1 看上一次启动

四、不同场景的具体做法

✅ GRUB 卡住

  • 进 GRUB 命令行
  • 手动加载:
linux /boot/vmlinuz root=/dev/sda1
initrd /boot/initramfs.img
boot

✅ 内核不启动

  • 加 init=/bin/sh
  • 检查 initramfs 是否损坏

✅ UEFI 问题

efibootmgr -v
  • 检查启动项
  • 关闭 Secure Boot 测试

✅ 嵌入式 Bootloader

  • U-Boot:printenv, bootm, nfs
  • 打开 DEBUG 宏

五、调试 checklist(实用)

  • [ ] 串口是否通
  • [ ] Bootloader 是否打印
  • [ ] 内核是否解压
  • [ ] initramfs 是否加载
  • [ ] root 文件系统是否可用
  • [ ] init 程序是否存在

六、如果你愿意,我可以更具体

你可以告诉我:

  • 是 x86 / ARM / RISC-V?
  • 是 物理机 / 虚拟机 / 开发板?
  • 卡在 哪一行或哪个阶段?
  • 用的是 GRUB / U-Boot / 自写 Bootloader?

我可以直接给你对应可操作的调试步骤或代码示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手