我的理解是:BIOS 执行芯片组的基本初始化并启动引导加载程序,从而启动操作系统。大多数高级操作系统(如 Linux)都不使用 BIOS。此外,基于 ARM 和其他架构的嵌入式平台使用 U-Boot 来引导操作系统。
考虑到所有这些:是否有可能在不使用 BIOS 的情况下使用 U-Boot 在 x86 机器上启动 Linux?基于 IBM PC/x86 的机器是否在架构上依赖于 BIOS 来启动?
答案1
是的。Linux 可以直接从各种固件实现(包括 U-Boot)启动。
至于加载操作系统,U-Boot 支持直接启动 32 位或 64 位 Linux 内核作为 FIT 映像的一部分。它还支持压缩的 zImage。U-Boot 支持加载 x86 VxWorks 内核。请查看 README.vxworks 了解更多详细信息。
https://github.com/qemu/u-boot/blob/v2019.07/doc/README.x86
x86 上的 U-Boot(2015 年 5 月 15 日更新)
U-Boot 支持在 x86 上作为 Coreboot 有效负载运行。到目前为止,只有 link (Chromebook pixel)、Minnowboard、qmemu、broadwell CRB 和其他一些产品经过了测试,但由于 Coreboot 处理了大部分底层细节,因此只需进行少量调整,它应该就可以在其他 x86 主板上运行。
x86 已转换为使用串行、GPIO、CPU、PCI 和 SPI 的驱动模型。
U-Boot 还支持直接启动 32 位或 64 位内核(作为 FIT 映像的一部分)。它还支持压缩的 zImage。
U-Boot 还支持在 x86 上不带 Coreboot 运行“原始”版本。目前支持 ivybridge、tunnel creek (Atom)、Baytrail (Minnowboard Max)、Galileo 和 qemu。
最后,您可以在 EFI 上将 U-Boot 作为应用程序(使用 EFI 服务并允许返回 EFI)或有效负载(U-Boot 接管机器并从那里启动)运行。
完整说明位于 doc/README.x86 的源代码树中。
https://u-boot.readthedocs.io/en/latest/arch/x86.html
目前 x86 上的 Chromebook 使用 U-Boot 来加载 coreboot
答案2
U-Boot 支持在 Coreboot 上启动,负责处理平台初始化。Chromebook Pixel 上使用此系统。
答案3
u-boot 是来自嵌入式设备世界的引导加载程序。
它不能像 BIOS 或 Coreboot 那样初始化硬件(使用来自硬件制造商的二进制 blob),因为在嵌入式设备中这不是必需的,或者它是由 SoC 本身内部的 ROM 中的引导加载程序完成的。
目前,BIOS 的开源替代方案是 Coreboot 或 LibreBoot,该版本无需二进制 blob 即可运行。它们支持的主板列表很短,而且通常都是过时的硬件。Google 在其 Chromebook 上使用 Coreboot,而不是 BIOS/UEFI。