BIOS 问题。我意外地从 BIOS 启动菜单中删除了 Ubuntu

BIOS 问题。我意外地从 BIOS 启动菜单中删除了 Ubuntu

如果您不想了解问题是如何发生的,请参见最后的 TL;DR。

因此,当我尝试安装 Windows 10 时,这一切都开始了。

我的电脑没电了,我试图擦除硬盘,卸载后 win 8 出现错误,我无法修复问题,因为擦除会删除启动修复内容。我擦除了硬盘上的所有内容,然后安装了 ubuntu。

这会在启动优先级顺序下安装一个“ubuntu”选项,通常会启动我的 ubuntu。

现在,我需要 Windows 来处理 Autodesk 的事情,所以我尝试安装 Windows 7。我的 BIOS 无法从 USB 启动,所以我更改了一些 UEFI 设置,然后就可以启动了。这给我带来了问题,因为 Windows 7 无法安装在 GBR 分区上,在尝试将我的分区从 GBR 转换为 MBR 时,我意外地从启动优先级顺序中删除了“ubuntu”,现在我无法启动 ubuntu。但是,我可以从 ubuntu USB 安装另一个 ubuntu,但现在无法启动 Windows 7 USB。

我在 ubuntu 分区中有一些我需要的文件。我尝试了“在磁盘上试用 ubuntu”(LiveUSB)选项,但显然我没有权限删除我的文件。如果我可以删除我的文件并再次安装 ubuntu,那就没问题了,但我也不知道该怎么做。

因此,TL;DR:

1.) 如何将“ubuntu”添加到我的启动优先级顺序中?如果没有它,它将无法启动。

2.) 当我使用 LiveUSB 时,如何获取权限来删除旧 ubuntu 上的旧文件?

谢谢你!

答案1

你的方法被误导了。如果你必须在传统启动模式下在 Windows 10 机器上安装和使用 Windows 7,那么就这样做吧,并接受它的局限性。其中之一就是你无法为单个操作系统添加“BIOS 菜单条目”,只有通过 UEFI 启动才能获得此功能。

在 MBR 中重新安装 GRUB 已经有一个完美回答的问题:我该如何修复 grub?(安装 Windows 后如何恢复 Ubuntu?)

在没有对引导加载程序设置的基本了解的情况下,心不在焉地将现有安装从 UEFI 转换为传统安装或反之亦然,这是最愚蠢的举动之一。确保为你最终选择的启动模式安装正确的 GRUB 包,两个相关包的名称是grub-efi-amd64grub-pc

答案2

我在这里假设您所说的 GBR 实际上是指 GPT。

您是否创建了与 UEFI 兼容的 Windows USB 棒?例如使用 Rufus 等工具,它提供了一个选项,可以使用 GPT 分区兼容的 USB 驱动器制作 UEFI。我猜您创建了一个简单的 MBR 可启动 PD,然后它抱怨它无法在 GPT 分区上安装 Windows。

Windows 和 Ubuntu 都已经相当成熟地支持 UEFI 和 GPT 分区。因此,您无需将 GPT 转换为 MBR。您需要做的是准备好 USB 驱动器以兼容 UEFI,即它应该有一个带有“efi”文件的“efi”文件夹。(您可以使用 Rufus 为 Windows 和 Ubuntu 创建它)。

现在,您的转换很可能让您一无所有。这意味着,如果您没有 2 个硬盘,那么您的硬盘上就没有数据,因为不可能将一半硬盘设置为 GPT,而将另一半设置为 MBR。这就是为什么 Ubuntu 不在启动优先级列表中,因为主板没有剩余的 EFI 文件可以显示给您。现在有两种方法可以从这里开始。

  1. 忘记所有这些 UEFI 和东西,只需在传统 BIOS 模式下再次安装 Windows 和 ubuntu。
  2. 如果您仍未复制太多数据,请将其转换回 GPT,然后记得使用兼容 UEFI 的 USB 驱动器进行启动。

为了简单起见,您可以选择选项 1,如果您想要最新和最好的,或者碰巧想要创建 MBR 不允许的更多主分区,则选项 2 是不错的选择。

答案3

启动新安装的 Ubuntu。

运行 GParted。

在纸上或文本文件中写下 Windows 7 和 Ubuntu 所在分区的编号。

/etc/grub.d/ 目录包含启动过程的脚本文件。您必须分别为 Windows 7 和旧版 Ubuntu 创建新的脚本文件。

在目录中创建新的脚本文件,名称为 12_custom 和 15_custom。您还可以编辑文件 4​​0_custom。如果您希望 Windows 7 和旧 Ubuntu 出现在新 Ubuntu 之前,则文件的编号需要小于 10_Linux,例如 07_custom 或 09_custom。

假设您想将 Windows 7 设为第二个菜单项,您可以将此代码放入 12_custom 中:

#!/bin/sh -e
echo "Adding Windows 7 to GRUB 2 menu"
cat << EOF
menuentry "Windows 7" {
set root=(hd0,1)
chainloader (hd0,1)+1
}
EOF

假设您的 Windows 位于分区 SDA1 上,它对应于 (hd0,1),即第一个硬盘 - 编号 0 是第一个磁盘 - 而 1 对应于分区一,即 SDA1。

脚本文件 15_custom(引导顺序列表中的下一个菜单项)应如下所示:

#!/bin/sh -e
echo "Adding my custom Linux to GRUB 2"
cat << EOF
menuentry "Ubuntu 15.10" {
set root=(hd0,4)
linux /boot/vmlinuz
initrd /boot/initrd.img
}
EOF

在您的例子中,Ubuntu 可能位于另一个分区上,然后更改 (hd0,4) 以反映正确的分区号。在上面的示例中,Ubuntu 位于分区 SDA4 上。

将这两个文件保存到 /etc/grub.d/ 目录中,如前所述,然后使它们可执行:

chmod +x 12_custom
chmod +x 15_custom

然后运行

sudo update-grub

完成此操作后,这三个操作系统应该会在下次启动时作为启动选项出现。

我最近在装有 Windows 10 和 Ubuntu Studio 15.10 的计算机上安装了 Kubuntu 15.10。在我只能启动 Kubuntu 之后,上述步骤对我有用,可以将所有三个系统都放入启动列表中。

该过程基于以下说明 - 很长,但值得一读:

http://www.dedoimedo.com/computers/grub-2.html

答案4

这里的其他一些答案很有帮助,但我认为您需要备份并阅读 BIOS 和 EFI 之间的区别。这是两种不同类型的固件,BIOS 是旧类型(2011 年之前占主导地位),而 EFI 是较新的类型(自 2011 年中期以来推出的大多数计算机都附带此类型,有些计算机在此之前也附带此类型)。EFI 不是 BIOS。你可能知道不是有 BIOS,尽管许多人,甚至计算机制造商,都将 EFI 称为“BIOS”。恕我直言,这是从 BIOS 过渡到 EFI 最令人困惑的方面,因为它让人们认为 EFI 只是 BIOS 加上了一些位,但事实并非如此——EFI 是从根本上与 BIOS 不同。将 BIOS 假设和技巧带入 EFI 世界就像将一棵燃烧的树拖入烟花工厂一样 —— 这是一个惊人的错误。

以下是我推荐的有关 EFI 的阅读书目:

我知道这是一份很长的清单,你可能不想全部读完,但你应该至少读几本,然后再开始研究。读哪本取决于你的具体需求和当前的理解。

相关内容