我在一个物理磁盘上安装了 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
这很棒,因为它允许您在实际安装上工作,而不是尝试在这里和那里重定向内容。它真的很干净。
就是这样:
- 在“尝试 Ubuntu”模式下从实时 CD 或实时 USB 启动。
- 确定主分区的分区号。GParted(默认情况下应该已在实时会话中安装)可以为您提供帮助。我将在此答案中假设它是
/dev/sda2
,但是确保您的系统使用了正确的分区号! 挂载你的分区:
sudo mount /dev/sda2 /mnt #Replace sda2 with your partition number
绑定安装一些其他必要的东西:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
如果 Ubuntu 以 EFI 模式安装(如果您不确定,请参阅此答案),请使用 GParted 查找您的 EFI 分区。它将有一个 EFI 标签。挂载此分区,将 sdXY 替换为您系统的实际分区号:
sudo mount /dev/sdXY /mnt/boot/efi
chroot 进入你的 Ubuntu 安装:
sudo chroot /mnt
此时,您处于安装状态,而不是实时会话,并以 root 身份运行。更新 grub:
update-grub
如果出现错误或者执行到步骤 7 无法解决问题,请转至步骤 8。(否则,这是可选的。)
根据您的情况,您可能必须重新安装 grub:
grub-install /dev/sda update-grub # In order to find and add windows to grub menu.
如果一切顺利,没有错误,那么一切就完成了:
exit sudo reboot
此时,您应该可以正常启动。如果您无法正常启动,并且由于没有错误消息而未执行步骤 8,请重试步骤 8。
有时,仅为您的分区提供正确的 GRUB2 配置是不够的,您必须将其安装(或重新安装)到主引导记录,这是第 8 步所做的。在聊天中帮助用户的经验表明,即使没有显示任何错误消息,第 8 步有时也是必要的。