我安装了TinyCore作为我的维护操作系统。我给了那个GRUB2。但是TinyCore安装说明告诉您使用MBR方法添加GRUB2。(这是可行的,但这只是因为EFI向后兼容MBR。)理想情况下,我希望将其链接起来,以便EFI引导存根向量转移到TinyCore的/ boot /grub,这样我就可以从TinyCore的GRUB2启动我想要的任何其他操作系统。或者第二种选择,我想把它链接起来,以便EFI引导存根向量到TinyCore的vmlinuz。
TinyCore没有efibootmgr。efibootmgr是给我“系统不支持efivars”,当我从Ubuntu USB棒启动。
有没有一种方法只需抓取TinyCore的grub目录,将其带到其他Linux机器上,并让它创建一个grub.efi,然后我就可以将它带回到这台机器,并在这台机器上复制到我的ESP?
发布于 2018-04-07 16:42:37
我就是这么做的。首先,我把我的个人电脑EFI选项设置为EFI仅引导。然后我从DVD上启动了Ubuntu16.04.4。(显然是UEFI启动。)在Ubuntu16.04.4中,我做了以下工作。
是的,您必须在'efibootmgr‘命令中转义'\’。现在,您可以让EFI使用这个主加载程序向TinyCore分区中的引导加载程序发送。现在,您设置了TinyCore分区的引导加载程序。
我知道有人会想为什么我会从主引导加载程序跳到多引导加载程序。我只想在我的esp分区中尽量少做。我希望TinyCore (我的维护操作系统)成为多引导管理器的所有者。
发布于 2018-03-22 09:42:49
efibootmgr是给我“系统不支持efivars”,当我从Ubuntu USB棒启动。
这是因为您使用遗留的BIOS样式从USB棒启动,因此UEFI的兼容性支持模块将禁用用于访问启动变量的UEFI运行时接口。如果您可以在本机UEFI模式下引导USB卡,那么efibootmgr将工作。如果固件引导设置包括一个选择,无论是UEFI还是旧的引导方法,尝试将其切换到"UEFI“模式,同时从棒引导。
使用遗留MBR GRUB2,您只能用遗留MBR样式引导可引导的操作系统。为了链接到已安装使用本机UEFI引导的操作系统,您将需要一个UEFI版本的GRUB2。
将UEFI从一个发行版移植到另一个发行版的问题是,不同的发行版以稍微不同的方式设置它:例如,Debian习惯于将一个非常小的grub.efi安装到ESP,并使用嵌入式指令从GRUB安装时指定的另一个文件系统(通常是包含/boot目录的文件系统)读取进一步的GRUB模块和配置文件。
这种方法的问题是,如果启用了安全启动,就不可能做到这一点:所有加载的可执行代码都必须进行签名,而且由于GRUB模块没有使用与标准UEFI二进制文件格式相同的二进制文件格式,因此它们不能以一种可以为UEFI固件识别的方式进行签名。
另一方面,RedHat派生的发行版倾向于将所有必要的GRUB模块嵌入到主grubx64.efi二进制文件中,然后安全引导shim.efi可以在一个操作中成功地加载这些模块。GRUB配置文件也放置在ESP文件系统中,通常反映主UEFI二进制文件的命名,也就是说,如果将二进制文件重命名为foo.efi,它将在同一个目录中查找foo.cfg。
知道了这一点,您就可以确保安全引导被禁用,从RedHat/CentOS/Fedora安装媒体获取grub.efi二进制文件,手动编写一个最小配置文件,将它们放入您的ESP中(可能是\EFI\boot\bootx64.efi和\EFI\boot\bootx64.cfg,因此UEFI应该在不需要UEFI变量的情况下自动拾取它们)并启动一次。然后,您可以看到TinyCore的原生GRUB配置生成器生成的GRUB配置文件是否与该版本的GRUB兼容,或者用实际的GRUB替换简化的配置文件,或者用TinyCore的首选版本UEFI替换移植的GRUB。
如果您想直接从UEFI固件启动TinyCore的vmlinuz,则需要使用CONFIG_EFI_STUB=y编译内核,然后您需要弄清楚如何处理引导参数和initramfs文件。通过将引导选项配置为UEFI引导变量,我做了一次这样的设置。如果没有引导加载程序,您可能无法在启动时更改引导参数,所以最好提前生成几个UEFI引导变量设置,使用不同的引导参数,这样就可以在内核更新出现问题时访问系统。
(如果您的固件级UEFI引导选项包括一种引导到UEFI的方法,那么它在设置“引导无加载”UEFI可引导安装时非常有用。)
可以通过运行blkid命令来发现UEFI引导变量中使用的UUID。GRUB使用文件系统UUID (= UUID=字段),而UEFI引导变量使用分区的唯一UUID (= PARTUUID=字段)。
https://unix.stackexchange.com/questions/432747
复制相似问题