如何使用coreboot、SeaBIOS、GRUB和Linux内核启动x86系统?

How to bring up x86 system by using coreboot, SeaBIOS, GRUB and the Linux kernel?

我是 x86 的新手。我最近的任务是将 linux 从裸机移植到 Intel Atom C2000 平台。我找到了开源 firmware/bios coreboot 和 seabios,但是有很多我不清楚的地方。

(1) 从 x86 系统引导程序调用 firmware/software 的顺序是什么?

x86 power on reset-->coreboot-->SeaBIOS->GRUB->Linux kernel?

(2) 如果我们使用mini-sata作为非易失性存储,grub二进制文件和配置文件应该如何存储在mSATA,MBR或其他东西中?

(3) linux kernel initrd应该如何存储,在文件系统中还是在原始磁盘上?我记得在 PowerPC 开发中,内核和 ramdisk 存储在闪存中的位置没有限制,u-boot 只需要地址来启动内核。

视情况而定。

你建议的 seabios 和 grub 流程当然是可行的,但 grub2 也可以充当核心引导负载 - 在这种情况下它是 coreboot->grub->Linux.

或者如果你估计不会一直换内核,或者如果你去kexec(),你可以做coreboot->Linux,在flash中使用Linux。

假设您要进行涉及 grub2 的启动流程,让我们看看其他问题:对于 seabios,grub2 将存储在 MBR 和一些备用扇区中,例如 PCBIOS。以grub2为payload,存储在flash中

无论grub2 位于何处,其配置文件、Linux 内核和initrd 最好存储在文件系统中。 grub2 为几乎所有现代文件系统提供驱动程序,这是从 OS.

中维护它们的最简单方法