Linux 内核格式与启动协议

Linux 内核格式与启动协议

💡 原文中文,约17300字,阅读约需41分钟。
📝

内容提要

介绍 RISC-V EFI 启动协议中的 efi_riscv_get_boot_hartid 函数,返回启动 hart 的 ID,给出参数和返回值。

🎯

关键要点

  • 介绍了 Linux 内核的不同文件名和格式,如 vmlinux、vmlinuz、uImage 和 bzImage。

  • Linux/x86 启动协议定义了 bootloader 启动 Linux 时需要做的事情和参数传递方式。

  • Boot Protocol 规定了 Linux 内核的格式,帮助 Bootloader 获取内核信息。

  • Bootloader 初始化 struct boot_params 并传递给 Linux 内核以启动。

  • EFI boot stub 使得 vmlinux 被识别为合法的 UEFI 程序,使用 PE 和 COFF 头部。

  • Linux 内核可以以压缩形式存在,vmlinux 表示未压缩,vmlinuz 表示已压缩。

  • Unified Kernel Image 将启动所需的文件放在一个文件中,方便 Secure Boot。

  • RISC-V 有两套固件标准:SBI 和 UEFI,SBI 提供给 S 态程序的接口。

  • RISC-V 的 EFI boot stub 设计保证了在直接执行时也能正常工作。

  • 通过 RISCV_EFI_BOOT_PROTOCOL 获取 boot hart id 的函数实现。

  • efi_riscv_get_boot_hartid 函数返回启动 hart 的 ID,包含参数和返回值。

➡️

继续阅读