没有 UEFI 的旧电脑(奔腾 4)中的双启动问题

没有 UEFI 的旧电脑(奔腾 4)中的双启动问题

我写信给你们所有人是因为我花了两周时间试图解决这个问题,我看过很多 youtube 视频并阅读了很多论坛,但我无法解决这个问题。

我想澄清一下,我只是一个用户,但我不是 Linux 或 Windows 方面的专家。我已经在较新的计算机中安装了双启动电脑,但我真的真的需要一些帮助!我在尝试拥有双启动的 pentium4 电脑时遇到了很多麻烦,我的想法是拥有 Windows 7 和 Linux Mint。我还知道这台电脑可能有双操作系统,因为这台电脑有Windows 7并且更新到了Windows 10,之后我安装了Linux并且没问题,但是由于W10对于这台电脑来说太慢了,我重新安装了 Windows 7 的一个版本,当我尝试重新安装 Linux 时,所有问题都开始了。

安装 linux 并重新启动后,grub 无法工作并显示 grub-rescue 消息。我已经尝试了所有标准解决方案,更改 grub-rescue 终端中的根目录,使用实时 USB 会话来安装和使用 grub-installer、boot-repair、grub-customize 以及在 Windows、grub2win 和 easybcd2,4 中,但我总是有这个问题。我已经在硬盘驱动器和linux分区中安装了grub。我也格式化了我的硬盘并安装了Windows和Linux好几次,但我总是遇到同样的问题。当我想启动 Windows 时,我必须使用 bootrec 来重建 bcd。

该电脑有奔腾 4、CPU 300GHz、RAM 2 Gb、32 位和 160 Gb 的硬盘,我有 5 个分区:

  • sda1 100MB 保留给系统主分区
  • sda2 C:Windows 的主分区 NTFS
  • sda3 D.主分区NTFS用于存储
  • Sda5 逻辑分区 ext 4,用于 Linux
  • sda6逻辑分区交换

我不知道问题是否是因为我尝试安装最新版本的 linux 并且 grub 假设我有 UEFi 并搜索 efi 。也就是说,没有 UEFI 的电脑的 grub 配置是什么? (我也尝试过安装 Mint 14 和其他一些轻型发行版)我也尝试过使用 easybcd2.4,它允许我创建 Windows 和 Linux 的启动菜单,但无法启动 Linux。我尝试编辑 NEoGrub menu.lst 文件,但找不到正确的配置。您有适用于我的配置的示例文件吗?我读到它是基于 grub4dos 语法,但我对此一无所知。

我想继续我的问题:

  • 没有 UEFI 的 PC 的 grub.cfg 文件有什么不同吗?如果不同,有人可以提供一个示例(或帮助我创建)双 windows-linux 的 grub cfg 文件吗?

  • 我认为使用正确的 menu.lst 文件更改 bcd 配置可能会更容易,有人可以帮助我为我的配置编写适当的文件吗?

  • 如果我的做法确实错误,您能否告诉我如何安装这两个操作系统以及哪个版本更适合我的电脑?

  • 我需要提供与我的启动问题相关的更多信息吗?我怎样才能得到它?

  • 这可能是与 Windows 有关的问题,我应该需要特定版本吗?

我要真诚地感谢那些花时间阅读此消息的人们以及您可能提出的意见和想法。

答案1

(这将是一个“正在进行的工作”答案,因为正确的答案需要更多确凿的事实,但我认为必要的背景信息和说明不适合一两条评论。)

这不太可能与 UEFI 有任何关系,因为安装程序很容易检测到 UEFI 在系统上不可用。大多数支持 UEFI 的 Linux 发行版都会检测到这一点并自动安装 BIOS 版本的 GRUB - 他们甚至不可能为您提供选择!

哪个 Linux 发行版您正在尝试安装吗?

您已经添加了grub2grub-legacy标签 -grub-legacy是过时的 GRUB 0.97 左右,除非您安装的是非常旧的发行版,否则这是不相关的。即使在基于 BIOS/MBR 的系统上,现在也通常使用 GRUB2。

经典 BIOS/MBR 引导过程的问题在于,安装程序需要根据不完整的信息来预测系统上任何磁盘的 BIOS 检测顺序。作为一种解决方法,现代 GNU GRUB 将生成一个配置,其中包含search尽可能使用文件系统 GUID/UUID 标识符的命令。

较旧的发行版过去只是在安装程序看到它们时将磁盘 ID 写入配置文件 - 如果您从 USB 介质安装,则(hd0)安装程序可能会错误地识别 USB 磁盘。拔掉安装 USB 记忆棒后,剩余的磁盘将改变其 BIOS/GRUB 编号 - 安装程序可能能够也可能无法正确预测这种变化。

实际症状是什么?您说您尝试在 GRUB 救援提示符中更改根目录 - 您使用了哪些确切命令,响应是什么?

当您进入 GRUB 救援模式时,键入ls (hd并按Tab以查看 BIOS 检测到的磁盘的 GRUB 标识符。同样,您应该键入ls (hd0,并按Tab以查看 BIOS 列表中第一个 HDD 上的分区(= 通常在 BIOS 中选择哪个磁盘作为启动磁盘)。考虑到您的分区,输出有意义吗?

您可能还会遇到奔腾 4 时代的某些 BIOS 所具有的 128 GiB/136.9 GB 磁盘大小限制。如果 BIOS 无法处理具有超过 2^28 块的磁盘(= 不支持 LBA48),那么它 - 以及 GRUB - 将无法访问超出该限制的任何分区。这也许可以解释为什么 Windows 可以工作,但 GRUB 会失败:根据您的分区方案,Linux 分区可能离磁盘太远,无法由受到此限制的 BIOS 访问。解决方法是使用/boot完全低于限制的小分区,最好位于磁盘的开头。

/boot分区只需要包含所需但不适合主 GRUB 映像、GRUB 配置文件以及您尝试引导的 Linux 内核的内核和 initramfs 文件的任何 GRUB 模块。一旦Linux内核启动并在initramfs中找到自己的驱动程序,它将能够绕过BIOS的限制并访问整个磁盘。

你说:

我认为使用正确的 menu.lst 文件更改 bcd 配置可能会更容易

我不确定我是否理解您在这里所追求的内容 -BCD是 Windows 引导加载程序的二进制配置文件, menu.lst用于 GRUB Legacy,并且根本不用于更改 BCD。

相关内容