我怎样才能摆脱 UEFI 分区并仍然从驱动器启动?

我怎样才能摆脱 UEFI 分区并仍然从驱动器启动?

我目前正在双启动 Ubuntu 22.04 和 Windows 10。每个都在自己的单独驱动器上。我想创建一个 Hyper-V VM 来启动 Windows 10 中的 Ubuntu 驱动器。

我发现这个问题在不同的堆栈上,但我遇到了无法将磁盘脱机的问题,并出现错误“当前系统磁盘或 BIOS 磁盘 0 上的磁盘属性可能无法更改”。我发现这个答案在另一个堆栈上,给出的原因是存在 Microsoft 启动分区,给出的解决方案是“通过删除 /boot/EFI/Microsoft 并使用 efibootmgr 和 update-grub 来删除驱动器上的 UEFI 加载程序”,进一步的步骤包括“将 shimx64 和 grubx64 复制到 /boot/EFI/boot,将 shimx64 重命名为 bootx64”。然而,不幸的是,它的细节相当少,没有足够的信息让我知道该怎么做。

作为解决方案出现这是我需要在 Ubuntu 端执行的操作,因此我在此堆栈上进行询问,而不是在两个链接堆栈之一上进行询问。我思考我需要做的是以某种方式删除 UEFI 分区,然后设置 Ubuntu 以从其所在的驱动器启动。理想情况下,我不想触碰 Windows 所在的驱动器,因为担心会弄乱那里的东西,而且我不喜欢 GRUB 菜单。目前,我必须在启动过程中按 F12 才能获得 BIOS 菜单才能启动 Ubuntu,而我实际上喜欢因为我希望正常情况下启动到同一个驱动器,而只在极少数情况下启动到另一个驱动器(并且我不想要一个默认情况下需要 30 秒才能继续默认选择的难看的菜单。)

但是,当我在 BIOS 中选择 Ubuntu 驱动器时,如何删除 UEFI 分区并仍然引导到驱动器?我认为涉及 efibootmgr、update-grub、shimx64 等所有步骤,但我不知道我到底需要做什么。

我还发现这个问题这看起来很相似,但又似乎有足够的不同,所以我认为那里的答案在这里不起作用。

更新:我尝试从 Linux 重命名 EFI 分区上的所有 Windows 目录,发现我无法再启动 Windows。我仔细查看了一下,发现当 Windows 自行安装时,尽管我尽了最大努力,并相信它在安装 Windows 的同一驱动器上创建了一个 EFI 分区,但它实际上使用了 Ubuntu 驱动器上现有的 EFI 分区,这是不是我想要的。所以我想这个问题需要关闭,因为它无效,我需要在不同的堆栈上创建一个新问题。

答案1

好的,您正在寻找的解决方案是可能的,但是有无数种方法可能会搞砸并让您的系统无法启动。

此外,这不是一个好主意,因为如果您以后需要删除一个磁盘(例如 Windows 磁盘出现故障,或者需要移动到另一台计算机),您的 Linux 安装将最终无法启动。

但是现在我明白你想要什么:

  1. 您想使用 BIOS 来决定启动哪个操作系统
  2. GRUB 菜单看起来不美观(丑陋),你宁愿避免使用它
  3. 大多数情况下,您将启动到相同的操作系统,因此您不必每次都进行选择,也不必等待

GRUB 菜单可以自定义。具体来说:

  1. 可以隐藏
    • 这是在仅 Ubuntu 安装中默认发生的情况。GRUB 不会出现,并且会等待几秒钟,同时显示黑屏(以便您有时间让 GRUB 菜单出现,以防您需要通过按特殊键启动到安全模式)
    • 但是,当检测到 Windows 安装时,默认显示 GRUB,以便您可以根据用户需要选择启动 Windows。
  2. 默认超时时间非常长,但可以减少(例如从 10 秒减少到 1 秒或 3 秒,或者如果您愿意,可以立即减少)

因此,为了获得想要实现的行为,您需要:

  1. 以 root 身份打开/etc/default/grub(例如sudo gedit /etc/default/grub
  2. 添加GRUB_TIMEOUT_STYLE=hidden
  3. 更改GRUB_TIMEOUT=1(1 表示等待 1 秒,0 表示立即启动,5 表示等待 5 秒)
  4. 完成后保存,然后在终端输入sudo update-grub

您可以看到文档所有可能的 grub 选项,以防某些事情引起你的注意。

相关内容