跳转至

x86_64引导加载程序设计

基于HIC架构需求,以下是x86_64平台引导加载程序的详细设计方案:

一、总体架构

1.1 多阶段引导流程

UEFI/BIOS → HIC Bootloader (多阶段) → HIC Core-0
    │               │
    ├─ UEFI模式     ├─ BIOS模式
    │   (UEFI应用)   │   (MBR+引导扇区)
    └─ 安全启动      └─ 传统启动

二、UEFI引导模式(现代系统首选)

2.1 UEFI应用设计

入口点签名:

EFI_STATUS EFIAPI
UefiMain(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)

执行流程: 1. 初始化UEFI服务 - 保存SystemTable和ImageHandle - 初始化控制台输出(ConOut) - 获取内存映射服务(BootServices)

  1. 加载配置文件
  2. \EFI\HIC\boot.conf读取引导配置
  3. 解析启动项、内核路径、启动参数

  4. 安全启动验证

  5. 检查UEFI安全启动状态
  6. 验证引导加载程序自身签名
  7. 准备内核验证公钥

  8. 加载内核映像

  9. 打开内核文件\EFI\HIC\kernel.hic
  10. 读取文件头,验证魔数(HIC_IMG)
  11. 验证数字签名(RSA-3072 + SHA-384)

  12. 解析内核结构

  13. 读取段表:代码段、数据段、配置段
  14. 检查架构兼容性(必须为x86_64)
  15. 获取内核入口点地址

  16. 准备启动环境

  17. 获取UEFI内存映射
  18. 保留内核所需内存区域
  19. 设置图形模式(可选)
  20. 初始化串口调试(如果启用)

  21. 传递启动信息

  22. 构建HIC Boot Information Structure (BIS)
  23. 包含:内存映射、ACPI表指针、SMBIOS表、UEFI System Table

  24. 退出启动服务

  25. 调用ExitBootServices()
  26. 此后再无法使用UEFI服务

  27. 跳转到内核

  28. 设置长模式环境
  29. 禁用分页(内核自设页表)
  30. 禁用中断
  31. 跳转到内核入口点

2.2 UEFI安全启动集成

实现要点: - 支持Microsoft UEFI签名数据库 - 可选集成TPM 2.0度量启动 - 支持自定义签名证书 - 实现内核回滚保护