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

如何使用coreboot、SeaBIOS、GRUB和Linux内核启动x86系统?,x86,boot,bootloader,bios,bootstrapping,X86,Boot,Bootloader,Bios,Bootstrapping,我是x86新手。我最近的任务是将linux从裸机移植到Intel Atom C2000平台。我已经找到了开源固件/bios coreboot和seabios,但是还有很多事情我不清楚 (1) 从x86系统引导调用固件/软件的顺序是什么 x86开机重置-->coreboot-->SeaBIOS->GRUB->Linux内核 (2) 如果我们使用mini-sata作为非易失性存储,grub二进制文件和配置文件应该如何存储在mSATA、MBR或其他什么地方 (3) linux内核initrd应该如何存

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

(1) 从x86系统引导调用固件/软件的顺序是什么

x86开机重置-->coreboot-->SeaBIOS->GRUB->Linux内核

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

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

这取决于具体情况

您建议的seabios和grub流当然是可能的,但grub2也可以充当coreboot负载——在这种情况下,它是coreboot->grub->Linux

或者,如果您不打算一直更改内核,或者如果您选择kexec(),您可以使用闪存中的Linux执行coreboot->Linux

假设您要进行涉及grub2的引导流,让我们看看其他问题:对于seabios,grub2将存储在MBR和一些备用扇区中,比如PCBIOS。使用grub2作为有效负载,它存储在闪存中

无论grub2驻留在何处,其配置文件、Linux内核和initrd最好存储在文件系统中。grub2为几乎所有现代文件系统提供驱动程序,这是从操作系统中维护驱动程序的最简单方法