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

时间:2015-01-06 04:00:13

标签: x86 boot bootloader bios bootstrapping

我是x86的新手。我最近的任务是从裸机上将Linux移植到Intel Atom C2000平台。我找到了opensource firmware / bios coreboot和seabios,但有很多东西对我来说不清楚。

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

x86上电复位 - > coreboot - > SeaBIOS-> GRUB-> Linux内核?

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

(3)如何在文件系统或原始磁盘上存储linux内核initrd?我从PowerPC开发中回忆一下,对于内核和ramdisk存储在flash中的位置没有限制,u-boot只需要地址来启动内核。

1 个答案:

答案 0 :(得分:1)

取决于。

你建议使用seabios和grub的流程当然是可行的,但是grub2也可以充当coreboot有效负载 - 在这种情况下它是coreboot-> grub-> Linux。

或者,如果您没有估计一直在更改内核,或者如果您选择kexec(),那么您可以使用Linux in flash进行coreboot-> Linux。

假设您正在寻找涉及grub2的启动流程,让我们看看其他问题:使用seabios,grub2将存储在MBR和一些备用扇区中,例如PCBIOS。将grub2作为有效载荷,它存储在闪存中。

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