我有一个 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 模式启动,并且不喜欢结果。请不要犯与这些问题的作者同样的错误。