我曾经在 Ubuntu(lucid)和 Windows 7 之间有过双启动,但我想将我的 Windows 升级到 64 位,因此我安装了新的 Windows,它自然会覆盖 MBR,因此我尝试使用以下指南进行修复:https://help.ubuntu.com/community/Grub2#Reinstalling%20GRUB%202。
我遇到了很多麻烦,但还是设法让系统启动到某个 grub 命令行,而不是 Windows,我认为这很有用。然后我做了一些奇怪的事情,现在当我启动时,我得到了 grub 救援命令行。
因此,我按照同一页面上与救援模式相关的说明进行操作,但有点困惑。如果我执行 ls,我会得到:
(hd0)(hd0,msdos1)(hd1)(hd1,msdos5)(hd1,msdos1)
如果我尝试列出这些分区的内容,唯一有效的是 (hd1,msdos1),其他分区都显示“未知文件系统”。检查此分区的内容,它似乎包含我的 Ubuntu 主目录。
无论如何,我发现了一些可以执行某些操作的命令组合:
set prefix=(hd1,msdos1)/boot/grub
set root=(hd1,msdos1)
insmod /boot/grub/linux.mod
linux /vmlinuz root=/dev/sdb1 ro
initrd /initrd.img
boot
然后它看起来好像可以工作了,但我发现自己处于某种调用自身的提示符中busybox initramfs
。我尝试了各种方法,但无法弄清楚如何update-grub
按照建议运行命令。
答案1
这是恢复损坏的系统的 GRUB 2 文件的一种快速而简单的方法。终端用于输入命令,用户必须知道已安装系统的设备名称/分区(sda1、sdb5 等)。从 LiveCD 找到并安装问题分区。然后将文件从 LiveCD 库复制到正确的位置和 MBR。与以下方法相比,它需要的步骤最少,命令行条目也更少。
- 启动到 LiveCD 桌面(Ubuntu 9.10 或更高版本)。
- 从菜单栏中选择“应用程序”、“附件”、“终端”来打开终端。
- 确定 Ubuntu 安装的分区。fdisk 选项“-l”是小写的“L”。
sudo fdisk -l
如果用户不确定分区,请寻找适当大小或格式的分区。
运行 sudo blkid 可能会提供更多信息来帮助找到正确的分区,特别是如果分区已标记。设备/驱动器由 sdX 指定,其中 X 是设备名称。sda 是第一个设备,sdb 是第二个,等等。对于大多数用户来说,MBR 将安装到 sda,即系统上的第一个驱动器。分区由 Y 指定。第一个分区是 1,第二个是 2。请注意,设备和分区的计数方式不同。
- 挂载包含 Ubuntu 安装的分区。
sudo mount /dev/sdXY /mnt
例如:sudo mount /dev/sda1 注意:如果用户有单独的 /boot 分区,则必须将其挂载到 /mnt/boot
- 按照下面所述运行 grub-install 命令。这将重新安装已安装分区上的 GRUB 2 文件到正确的位置和指定设备的 MBR。
sudo grub-install --root-directory=/mnt/ /dev/sdX
例如:sudo grub-install --root-directory=/mnt/ /dev/sda 6. 重启 7. 使用 sudo update-grub 刷新 GRUB 2 菜单
重新启动...完成....
答案2
如果您想尝试自动化,有一些工具可以更轻松地恢复 grub 启动扇区和 MBR。
Super Grub Disk 可以刻录到 CD 并单独运行。
或者您可以将其用作更广泛的诊断和修复工具的一部分,例如 Ultimate Boot CD: