不稳定的幼虫行为。双启动重新安装linux!

不稳定的幼虫行为。双启动重新安装linux!

我有 Ubuntu 和 Windows 10 双启动,工作得很好。由于我的机器上 Ubuntu 的性能很慢,我想将其替换为 Elementary OS,同时保留双启动。我启动了 E OS iso,选择了其他东西,删除了 ubuntu 分区并创建了一个新分区并在其上安装了elementary。从理论上讲,它应该有效。当我重新启动时,我直接启动到Windows 10。我知道BIOS可能将Windows设置为比Linux更高的优先级启动。所以我进入BIOS并更改了顺序。现在,我进入了 grub 提示符。我使用此命令启动到 Elementary:

set prefix=(hd0,7)/boot/grub
set root=(hd0,7)
insmod normal
normal

我被迎接进入 Elementary OS。现在我跑了:

sudo update-grub

一切顺利,我重新启动了笔记本电脑,认为它可以工作了!接下来,我再次进入 grub 提示符。当我输入上述命令启动 Elementary 时,grub 菜单出现了!它适用于所有条目(我可以启动到 Windows 和 Elementary OS)

我做了谷歌搜索,最后发现我还没有跑过sudo grub-install /dev/sda。所以我又回到小学并运行它。它给了我一个错误,说“找不到标记为‘bios boot’的 GPT 分区”(类似)。再次谷歌搜索一段时间后,我需要创建一个带有“bios_grub”标志的新分区。 (为什么?以前没有这样的东西它曾经可以工作。) 做到了。问题仍然一样。 (我仍然可以使用 BIOS 启动 Windows,或者在 grub 提示符下输入命令并启动到任意两个!)

编辑:我看到了这个答案在写这个问题的时候就想尝试一下。但是,我的 /boot/grub 目录中没有 grubx64.efi!我想也许我没有以 EFI 模式安装操作系统,但运行dmesg | grep "EFI v"给出了 [ 0.000000] efi: EFI v2.31 by American Megatrends.

答案1

带有该标志的分区bios_grub仅适用于您想要在 GPT 分区磁盘上使用旧版 MBR 样式引导加载程序的情况。

您应该检查该/boot/grub/device.map文件并确保它标识为(hd0)实际要使用的磁盘 (hd0)当您启动 Elementary OS 时。在重新安装 UEFI 版本的 GRUB 之前执行此操作(见下文)。

UEFI 引导加载程序文件不一定命名为grubx64.efi:它可能只是grub.efi或基本上是 everything.efi。运行efibootmgr -v以查看 UEFI 用于加载 UEFI GRUB 引导加载程序的确切路径名。路径名将相对于 EFI 系统分区(也称为 ESP 分区)的根:它是一个小型 FAT32 分区,也包含 Windows 引导加载程序。该efibootmgr命令通常会使用 Windows 反斜杠约定显示启动文件路径名,而不是使用 Unix/Linux 风格的正斜杠。

某些 Linux 发行版默认根本不会挂载 ESP 分区;它们只会在需要重新安装引导加载程序时才挂载它。其他发行版将 ESP 分区挂载到/boot/efi。如果 ESP 分区挂载在那里,那么从 Linux 上看到的 Windows UEFI 引导加载程序的完整路径名将是/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi

UEFI 标准要求引导加载程序应位于/EFI/<vendor name>ESP 分区的子目录中。因此 Elementary 的 UEFI GRUB 引导加载程序应该位于/boot/efi/EFI/<something>/<something>.efi.

您系统上的命令似乎grub-install尝试安装传统风格的 GRUB 引导加载程序,至少默认情况下是这样。也许您需要使用--target类似选项sudo grub-install --target=x86_64-efi /dev/sda来明确指定您正在(重新)安装引导加载程序的 UEFI 版本?

相关内容