msdos 表分区上的 Grub2 无法加载

msdos 表分区上的 Grub2 无法加载

我的笔记本电脑有:

  1. 500GB 硬盘 /dev/sda
  2. 22gb 固态硬盘 /dev/sdb

我曾经从 /dev/sda 上的一个小型 ext2 分区启动 archlinux。bios 设置为使用 BIOS 模式(不是 uefi),安全启动已禁用,AHCI 为自动。此设置曾经有效。

昨天我在这里做了很多改动:安装了windows 7,更改了分区。现在的情况是:

  1. /dev/sda1 Windows 7 加载程序
  2. /dev/sda2 Windows 7
  3. 扩展分区从这里开始
  4. /dev/sda5 boot(逻辑分区,标志“boot”)
  5. /dev/sda6 交换(逻辑分区)
  6. /dev/sda7 home(逻辑分区)

注意:安装 win7 后,windows 启动正常(其引导加载程序安装正确)。

完成 Linux 分区的恢复后,我进入 archlinux 系统并在 sda 上重新安装了 grub。结果是笔记本电脑启动了,但 BIOS 提示缺少可启动系统

我能够从 supergrubdisk 启动我的 archlinux,这确认 grub 配置没问题。我试过无数次在 sda 上重新安装 grub,它总是能顺利完成,没有任何错误,但最终结果总是一样的。

不幸的是我的 archlinux 原始系统安装于两年多前,我不能确定当时我将 grub 安装在了启动分区上(而不是整个磁盘上)。

我这里遗漏了什么吗?

分区表是系统安全,它能与 grub2 配合使用吗?它需要 GPT 分区表吗?

启动分区有“boot”标志,够了吗?

只是为了澄清:BIOS 启动但无法找到“可启动”的东西,因此我在 BIOS 级别收到错误。我从未遇到过 grub 或与 grub 相关的错误。

我该怎么做才能让我的笔记本电脑再次可启动?

答案1

首先,对于调查涉及 Linux 的几乎所有启动问题来说,一个有用的工具是启动信息脚本。此工具会生成一个名为的文件RESULTS.txt,其中包含解决大多数涉及 Linux 的启动问题所需的大部分信息。请运行该脚本并检查结果。如果您无法自己从那里找到答案,您可能需要将其发布到pastebin 网站并将 URL 发布在这里以供其他人阅读。

其次,你写道:

bios 设置为使用 BIOS 模式(不是 uefi)

虽然有些计算机确实支持这样的配置,但很多(我怀疑大多数)计算机并不支持;启用 BIOS/CSM/传统模式只会使用该启动模式可能的。即使启用了 BIOS/CSM/传统模式,固件仍可能任意选择以 EFI/UEFI 模式启动。这很重要,因为您完全有可能在 BIOS 模式下安装了 Windows,而在 EFI 模式下安装了 Linux;或者机器可能正在尝试 EFI 模式启动,尽管您没有 EFI 模式引导加载程序。混合模式配置可能很难维护。(请参阅我关于这个主题的网页了解更多信息。)

您可以通过查找名为 的目录来测试您的 Linux 启动模式/sys/firmware/efi。如果存在,则您肯定是在 EFI 模式下启动的;但如果不存在,则您可能是在 BIOS 模式下启动的。(有方法可以启动到 EFI 模式而没有目录/sys/firmware/efi,但这种结果并不常见。)当然,由于您是通过单独的启动盘启动 Linux,因此其启动模式不会告诉您已在硬盘上安装的启动加载程序。

我尝试过无数次在 sda 上重新安装 grub,它只是完成而没有出现错误,但最终结果总是一样的。

什么精确的你使用了什么命令?你安装了哪些 GRUB 软件包?(大多数发行版都有不同的 BIOS 模式和 EFI 模式 GRUB 软件包,但我不确定 Arch 是否也是如此。)

分区表是 msdos,可以和 grub2 一起使用吗?需要 GPT 分区表吗?

GRUB 2 支持 MBR(msdos如 GParted 和 所述parted)和 GPT。这不是您的问题——但 MBR 分区表表明 Windows 肯定是在 BIOS 模式下安装的,因为 Windows 将启动模式与分区表类型紧密联系在一起。(MBR 表示 BIOS,GPT 表示 EFI。)Linux 在这方面要灵活得多,这在像您这样的情况下实际上可能会成为问题。

启动分区有“boot”标志,够了吗?

在 MBR 磁盘上,“启动标志”标识包含第二阶段启动加载程序的分区。它由 Windows 启动加载程序、SYSLINUX(如果我没记错的话)和其他一些启动加载程序使用。它是不是(IIRC) 由 GRUB 使用,因此与您的情况基本上无关。

只是为了澄清:BIOS 启动但无法找到“可启动”的东西,因此我在 BIOS 级别收到错误。我从未遇到过 grub 或与 grub 相关的错误。

总是举报精确的完全的错误消息。截屏(数码照片)通常很有帮助,因为上下文可能会为经历过此类事情的人提供线索。

如果我不得不猜测的话,我会说以下两件事之一正在发生:

  • 您的固件正在尝试以 BIOS 模式启动,但某些东西已清除或损坏 MBR 中的引导加载程序,导致启动失败。在这种情况下,重新安装 GRUB 应该可以解决问题。我知道您说您已经这样做了,但不知道您使用的确切命令,我无法判断您是否使用了正确的命令;正如我之前所暗示的,您可能已经反复安装了 EFI 模式的引导加载程序,如果计算机仅尝试以 BIOS 模式启动,这将对您没有任何好处。
  • 尽管您在固件中启用了 BIOS/CSM/legacy 支持,但它仍尝试以 EFI 模式启动,并且由于缺少 EFI 模式引导加载程序而感到困惑 - 或者它可能发现了某些损坏的东西,因此不会回到 BIOS 模式启动。

启动信息脚本输出和我要求的其他详细信息应该有助于确定这两件事中的哪一件正在发生(或者是否可能是完全不同的事情)。

或者,如果您想从头开始,我建议禁用 BIOS/CSM/旧模式。这通常会使固件中的启动路径更简单,因为所有 BIOS 选项都已关闭。然后,您可以解决 Windows 和 Linux 在启动安装程序时出现的任何问题,并确保在机器的本机启动模式下安装这两个操作系统。

相关内容