16.04LTS grub 在全新安装 Windows XP 后被破坏

16.04LTS grub 在全新安装 Windows XP 后被破坏

我在一个物理磁盘上安装了 Ubuntu,在另一个物理磁盘上安装了带有 Grub 的 Windows XP,还有几个用于存储数据的外部 HD,新的 XP 安装在第三个 HHD 上。

我搜索了这些问题,每个人都提到 Boot-Repair 是答案。所以我下载了 boot-repair-disk,但使用定向终端命令对我来说不起作用。它说找不到 Grub 来删除它或诸如此类。我还尝试从 live CD 下载 boot-repair,但似乎找不到该程序,而且它不再可从 Source Forge 或开发人员的网站下载——至少我能找到。

当我只能访问 Ubuntu Live CD、启动修复磁盘和 Windows XP 时,还有其他方法可以恢复 Grub 吗?我甚至无法访问 Grub Rescue,即使可以,我也不知道该怎么做。

作为最后的手段,是否可以非破坏性地重新安装 Ubuntu,如果可以,我该怎么做?如果不行,我是否应该硬着头皮重新格式化 Ubuntu 磁盘并重新安装 Ubuntu。

我正在经历计算机地狱,因为 Windows C 盘出现故障,并且用克隆替换它却不允许我从克隆上的 Grub 启动到 XP。

答案1

当您安装 Windows 时,Windows 会假定它是机器上唯一的操作系统 (OS),或者至少它不考虑 Linux。因此,它会用自己的引导加载程序替换 GRUB。您需要做的是用 GRUB 替换 Windows 引导加载程序。我见过各种通过乱搞 GRUB 命令或类似命令来替换 GRUB 的说明,但对我来说,最简单的方法是直接chroot进入您的安装并运行update-grub. 。chroot这很棒,因为它允许您在实际安装上工作,而不是尝试在这里和那里重定向内容。它真的很干净。

就是这样:

  1. 在“尝试 Ubuntu”模式下从实时 CD 或实时 USB 启动。
  2. 确定主分区的分区号。GParted(默认情况下应该已在实时会话中安装)可以为您提供帮助。我将在此答案中假设它是 /dev/sda2,但是确保您的系统使用了正确的分区号!
  3. 挂载你的分区:

    sudo mount /dev/sda2 /mnt   #Replace sda2 with your partition number
    
  4. 绑定安装一些其他必要的东西:

    for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
    
  5. 如果 Ubuntu 以 EFI 模式安装(如果您不确定,请参阅此答案),请使用 GParted 查找您的 EFI 分区。它将有一个 EFI 标签。挂载此分区,将 sdXY 替换为您系统的实际分区号:

    sudo mount /dev/sdXY /mnt/boot/efi
    
  6. chroot 进入你的 Ubuntu 安装:

    sudo chroot /mnt
    
  7. 此时,您处于安装状态,而不是实时会话,并以 root 身份运行。更新 grub:

    update-grub
    

如果出现错误或者执行到步骤 7 无法解决问题,请转至步骤 8。(否则,这是可选的。)

  1. 根据您的情况,您可能必须重新安装 grub:

    grub-install /dev/sda
    
    update-grub # In order to find and add windows to grub menu.
    
  2. 如果一切顺利,没有错误,那么一切就完成了:

    exit
    sudo reboot
    
  3. 此时,您应该可以正常启动。如果您无法正常启动,并且由于没有错误消息而未执行步骤 8,请重试步骤 8。

有时,仅为您的分区提供正确的 GRUB2 配置是不够的,您必须将其安装(或重新安装)到主引导记录,这是第 8 步所做的。在聊天中帮助用户的经验表明,即使没有显示任何错误消息,第 8 步有时也是必要的。

相关内容