将 LinuxFromScratch 分区添加到 Grub 启动选项

将 LinuxFromScratch 分区添加到 Grub 启动选项

我有一个 Ubuntu 21.04 系统,可以双启动到 Windows 10。efibootmgr报告:

BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 001B,0000,0001,0017,0018,0019,001A,001C,001D,001E,0002
Boot0000* ubuntu
Boot0001* Windows Boot Manager
Boot0002* Linux-Firmware-Updater
Boot0010  Setup
Boot0011  Boot Menu
Boot0012  Diagnostic Splash Screen
Boot0013  Lenovo Diagnostics
Boot0014  Startup Interrupt Menu
Boot0015  Rescue and Recovery
Boot0016  MEBx Hot Key
Boot0017* USB CD
Boot0018* USB FDD
Boot0019* NVMe0
Boot001A* ATA HDD0
Boot001B* USB HDD
Boot001C* PCI LAN
Boot001D  Other CD
Boot001E  Other HDD
Boot001F* IDER BOOT CDROM
Boot0020* IDER BOOT Floppy
Boot0021* ATA HDD
Boot0022* ATAPI CD

我一直在逐步完成 Linux From Scratch 构建步骤,这些步骤本质上是创建一个新分区,将其格式化为 ext4,将其安装为,/mnt/lfs然后使用该安装点来chroot安装系统软件。 Grub 2.06 编译并安装于这一步

我必须这一页它引导我去这一页。安装 EFI 分区后/boot/efi

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/nvme0n1p6 ext4       29G  4.9G   23G  18% /
udev           devtmpfs  7.7G     0  7.7G   0% /dev
tmpfs          tmpfs     7.7G     0  7.7G   0% /run
/dev/nvme0n1p1 vfat      256M   38M  219M  15% /boot/efi

我下了线,grub-install --bootloader-id=LFS --recheck但失败了,说找不到/usr/lib/grub/x86_64-efi/modinfo.sh

我意识到 grub 正在寻找错误的/usr/lib目录并尝试,grub-install --bootloader-id=LFS --recheck --directory=/usr/lib/grub/i386-pc --efi-directory=/boot/efi /dev/nvme0n1p1但这会产生一条消息:

Installing for i386-pc platform.
grub-install: warning: File system `fat' doesn't support embedding.
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists

如何添加/dev/nvme0n1p6为我的多重引导中的选项?

答案1

由于您的其他操作系统均使用 UEFI 引导,因此您应该遵循 GRUB 安装章节开头的以下说明:

笔记

如果您的系统支持 UEFI 并且您希望使用 UEFI 启动 LFS,则可以在 LFS 中跳过此软件包,并按照以下步骤安装具有 UEFI 支持的 GRUB(及其依赖项)BLFS 页面在本章的最后。

这会给你稍微修改了构建 GRUB 的说明设置说明明显不同

您尝试将 UEFI 设置指令与为旧版 BIOS 构建的 GRUB 一起使用。这就是为什么它不起作用。

本质上,在为 UEFI 构建 GRUB 时,您需要一个额外的字体文件和另外两个构建时配置选项:--enable-grub-mkfont--with-platform=efi


当系统已经以 UEFI 样式启动 Windows 时,这意味着系统磁盘也必须以 GPT 样式分区...这意味着 MBR 和第一个分区的开头之间将没有未使用的空间嵌入GRUB版本的核心镜像i386-pc。您需要为其创建一个额外的“biosboot”分区。

此外,让某些操作系统在 UEFI 模式下启动,而其他操作系统则在传统 BIOS 模式下启动,这意味着您很可能必须使用 BIOS 菜单在 BIOS 模式和 UEFI 模式之间切换:不可能在一个操作系统中的所有已安装操作系统之间进行选择。单个引导加载程序菜单。

某些系统(通常是笔记本电脑或名牌预建台式机)还具有功能减少的 BIOS 菜单,并且可能不一定允许在不同的启动模式之间切换:在这些系统上,系统对传统或 UEFI 样式启动有硬编码偏好,并且安装首选风格的操作系统可以有效地使其他风格无法使用。

在这个 Unix&Linux.SE 和 SuperUser.SE 上,有很多用户提出了很多问题,这些用户一直在尝试设置双启动,并且不小心安装了一个操作系统以传统 BIOS 模式启动,另一个操作系统以 UEFI 模式启动,并且不喜欢结果。请不要犯与这些问题的作者同样的错误。

相关内容