4.1 KiB
4.1 KiB
10 真机启动
目标
在不破坏现有系统启动链的前提下,让 Tianole 在真实 UEFI x86_64 机器上启动。
前置条件
- QEMU + OVMF 启动稳定。
- 串口、屏幕或其他早期输出路径可用。
- 内存 map、ExitBootServices、异常处理稳定。
建议边界
docs/host-machine.md:本机硬件和启动记录。scripts/:制作 U 盘镜像和验证脚本。arch/x86/:UEFI 与平台差异处理。
实现内容
- 制作 UEFI FAT 启动盘。
- 记录 OVMF 与真机 UEFI 差异。
- 验证 Secure Boot、启动项、磁盘枚举等风险。
- 先从 U 盘启动,再考虑本机启动项。
1. Boot media and rollback
- 先制作可移除 U 盘或镜像,不修改本机现有 EFI 启动项。
- 记录制作步骤、分区布局、FAT 文件路径和 bootloader 文件名。
- 每次真机尝试都要能回退到原系统启动。
- 不在未验证前写入内置磁盘 EFI 分区。
2. Hardware inventory
- 在
docs/host-machine.md记录 CPU、内存、UEFI 固件版本、Secure Boot 状态、显卡、存储控制器、键盘路径和可用输出设备。 - 区分 QEMU/OVMF 行为和真机 firmware 行为。
- 记录 ACPI 表、memory map、GOP 模式、串口可用性和启动失败阶段。
- 不把某台机器的硬件常量写入通用代码。
3. Diagnostics first
- 真机路径优先保证 early log、panic、异常日志和阶段 marker。
- 如果没有串口,需要 framebuffer console 或屏幕阶段输出作为 fallback。
- 每个启动阶段都输出可识别 marker:bootloader entry、memory map、ExitBootServices、kernel entry、GDT/IDT、heap、timer。
- 失败报告要能判断停在 firmware、bootloader、ExitBootServices、kernel entry、异常或中断阶段。
4. Firmware and security differences
- Secure Boot 默认视为风险项,先记录状态,不绕过用户安全设置。
- UEFI memory map、runtime service、GOP、文件路径大小写和磁盘枚举可能和 OVMF 不同。
- 真机测试要优先只读硬件信息,避免早期驱动写危险寄存器。
- 后续 ACPI/PCI 支持进入前,真机功能目标应限于启动和诊断。
Linux 参考原则
- 参考 Linux bring-up 流程:先保证早期日志和异常诊断,再逐步打开中断、内存、驱动。
- 参考 Linux platform quirk 思路:硬件差异要记录和隔离,不把单机 workaround 扩散到通用路径。
- 参考 Linux boot parameters/firmware handoff 思路:firmware 输入要保存、校验和转换为内核自己的模型。
- 参考 Linux console fallback 思路:serial、early console、framebuffer console 互相补位。
非玩具化约束
- 早期不修改本机现有启动链。
- 真机相关信息只放在
docs/host-machine.md。 - 真机失败必须能通过日志定位到阶段。
- 不能把某台机器的硬件假设写进通用代码。
- 不在未确认目标磁盘前写入内置磁盘或 EFI 分区。
- Secure Boot 相关操作必须记录风险,不默认要求关闭。
- 真机 workaround 必须有注释和硬件记录,不能伪装成通用逻辑。
- QEMU 测试仍然是回归基线,真机修复不能破坏 OVMF 路径。
- 真机测试脚本应尽量只生成介质,不自动执行危险写盘操作。
验收方式
- U 盘可进入 Tianole bootloader。
- kernel 能启动并输出阶段日志。
- 失败时能判断停在 bootloader、ExitBootServices、kernel entry 还是异常路径。
docs/host-machine.md记录一次完整尝试,包括硬件信息、固件设置、镜像版本和结果。- OVMF 回归仍通过。
- 真机至少能输出到一种可观察通道:串口、屏幕或持久日志。
- 启动失败时有最后阶段 marker。
- 不修改本机默认启动项也能完成测试。
当前状态
未开始。
进入本阶段前,QEMU + OVMF 的早期日志、异常、内存和调度路径应稳定。
后续扩展
- 真机串口或 USB debug。
- framebuffer console。
- ACPI 表 dump。
- PCI 枚举对比。
- Secure Boot 签名流程。
- 多机器兼容性记录。
- 自动化镜像制作和校验。