我有一个 RaspberryPi3。
此情况是在嵌入式系统下。rpi 参考显示了如何启动 Ubuntu。
展示了u-boot调用GRUB以及GRUB调用Linux的方式......
我已经尝试过这种链式加载。
在这种情况下,我想知道为什么 u-boot 会调用 GRUB?它不能直接调用 Linux 吗?GRUB 有可能在没有 u-boot 的情况下调用 Linux 吗?
答案1
我在装有较新版本 Fedora 的 rpi3 上也看到过这种情况。以前的版本仅使用 U-Boot,带有一个名为“distro boot”的脚本安排。
Grub 是在 x86 上使用的,并且(无论好坏)一些发行版也喜欢在 ARM 上使用它。
U-Boot 是一个完整的引导加载程序,而 grub 只是一个“第二阶段”加载程序,也就是说,它需要一些东西来加载它。在这种情况下,U-Boot 还提供 grub 工作所需的 EFI 支持。
所以,是的,U-Boot 可以直接调用 linux。你使用的发行版大概只想支持 x86 和 ARM 的一种启动方式,所以在中间添加了 grub 来提供启动菜单。
如果您想改变这一点,您可以向 U-Boot 添加自定义的“bootcmd”来加载您的内核等。但每次更新时您也需要更新它。
答案2
是的,rpi3 可以直接从 U-Boot 启动 Linux。我不确定它为什么使用 grub2。U-Boot 现在支持 EFI,因此它可以启动 grub2。它可能对主要为 x86 设计的发行版有帮助。