GRUB2:“nativedisk”和“chainloader”命令

GRUB2:“nativedisk”和“chainloader”命令

文档我知道:

Chain-loading is only supported on PC BIOS and EFI platforms.

是否可以nativedisk通过命令使用本机驱动程序(由命令提供)chainloader?如果没有,为什么?这个功能还没有实现或者理论上不可能实现吗?

答案1

据我所知,这两个功能是相互独立的。

nativedisk这只是 GRUB 访问磁盘的方式之一。但是,如果固件不支持访问链式加载的引导加载程序所在的磁盘,则链式加载的第二个引导加载程序还需要包含其自己的驱动程序...否则它可能无法单独继续启动过程,因为它无法访问它是在没有外部帮助的情况下从磁盘加载的。 (如果第二个引导加载程序依赖于 GRUB 的驱动程序,那么这不是真正的链式加载,而更像是 GRUB 的附加模块。)

支持链式加载要求 GRUB 能够以与固件完全相同的方式加载链式引导加载程序。对于 PC BIOS,只需将加载的代码复制到已知的内存地址并跳转到该地址即可。对于 EFI,EFI 引导服务将提供必要的功能:基本上 GRUB2 只是告诉 EFI 固件“请运行此文件而不是我”,固件就会执行此操作。

在其他架构中,固件可能会在加载 GRUB 的过程中执行一些无法轻松撤消的操作。或者到目前为止,可能还不需要为其他一些架构添加链加载支持。

在为新架构实现链式加载时,您需要了解并复制固件否则会执行的操作。通常,固件会给引导加载程序提供一些有关其引导硬件的信息。如果您使用 GRUB 的nativedisk驱动程序来扩展固件无法完成的功能,则可能会遇到一个问题:如果固件无法提供必要的引导信息,您的链式加载例程是否能够为链式加载引导加载程序所需的任何内容提供有意义的替换?所有这些都将是特定于平台的:它可能在一个平台上可行,但在另一个平台上不可能。

相关内容