使用BIOS,主板会将物理设备的启动顺序存储在非易失性存储器(NVRAM)中,以便在重新启动时保留。这确保当您打开计算机时,主板仍按照您(或工厂)配置的顺序引导设备。然后,BIOS将尝试执行每个设备的第一个逻辑块地址(LBA)中的MBR,直到其中一个正常工作。如果您在启动过程中手动选择要引导的设备,它将按您的要求尝试从该设备的第一个LBA引导。
假设一个磁盘使用
GPT格式化,当主板使用
UEFI引导时,MBR不需要包含引导加载程序(或其他任何内容)。相反,磁盘中包含一个
EFI系统分区(ESP),它实质上是一个包含引导加载程序代码的
FAT格式化分区中的文件。FAT文件系统还可以包含引导加载程序所需的其他文件(例如,在引导过程中使用的闪屏的标志和背景)。
对于在UEFI主板上进行UEFI引导,假设磁盘是系统的一部分,因此当您执行
grub-install时,安装过程的一部分应该是将一个条目放入主板的NVRAM中,该条目包含ESP中引导加载程序的路径(请参阅
UEFI规范的
3.5.1通过简单文件协议引导部分)。然后可以将此条目设置为默认值,或者仅作为选项呈现。有关EFI引导加载程序的更多信息,我强烈建议阅读Rod Smith的
Managing EFI Boot Loaders for Linux。
对于一个通常不连接到主板上的设备(例如USB硬盘),将此条目存储在主板的NVRAM中是没有意义的,因为在大多数启动过程中该设备可能不存在。我相信
--no-nvram
选项告诉
grub-installer
不要为此目的修改主板的NVRAM。
此外,如果主板被指示从一个没有在其NVRAM中具有引导条目的可移动设备启动,UEFI定义了一个默认路径供其尝试引导(请参阅UEFI规范的第3.5.1.1节“可移动介质引导行为”)。相对于ESP根目录的路径为
\EFI\BOOT\BOOT{architecture}.EFI
,其中
{architecture}
如下所示:
- 32位 →
IA32
- x64 →
x64
- Itanium架构 →
IA64
- AArch32架构 →
ARM
- AArch64架构 →
AA64
我相信
--removable
选项告诉
grub-installer
使用这个路径,而不是它的首选路径。如果不修改主板的NVRAM,否则在手动选择可移动设备后,就需要手动指定引导加载程序。
注意:上面我说“相信”,因为我还没有测试过。
编辑:
我意识到这些都没有解释为什么您的主板不允许GRUB修改其条目。但希望这能解释为什么这个开关有帮助。您提供的错误消息表明所有主板的启动条目都已填充,并且合理地说,
grub-install
不能决定要覆盖哪个启动条目。您可以尝试使用
efibootmgr显示您的启动条目,并删除一些不需要的条目。
Rod Smith's answer to
this question应该会向您展示如何操作。