使用Ubuntu Live CD和ms-sys工具修复Windows MBR。

我正在尝试使用Ubuntu Live CD修复MBR。我已经安装了ms-sys,但从我看到的帖子中,我不确定应该在哪个/dev目录下执行命令。
sudo ms-sys --mbr7 /dev/???

(在使用Windows 7时,选择mbr7是正确的选项吗?)
ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1f205b1f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          38          38           0    0  Empty
/dev/sda2   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda3          206848   155854847    77824000    7  HPFS/NTFS/exFAT
/dev/sda4       155854848   625137663   234641408    7  HPFS/NTFS/exFAT
ubuntu@ubuntu:~$ 

为什么 /dev/sda1 是空的?
我正在尝试修复 MBR,因为在加载操作系统时出现了黑屏。
3个回答

恢复MBR的常用方法是使用Windows光盘。我们没有那个奢侈品。幸运的是,我们手头有一个Ubuntu Live USB。
修复MBR的方法如下:
1. 使用Live USB/CD启动机器。 2. 安装lilo:sudo apt-get install lilo 3. 使用lilo命令修复MBR:sudo lilo -M /dev/sda mbr 效果非常好!

1BG-Rescue Linux 也具备LILO引导程序,并且仅占用4MB的空间。 - Zombo

首先,你的分区表似乎有两个活动分区,这可能会导致你的计算机无法启动,即使你修复了MBR的问题。
Windows的MBR引导有点奇怪,因为它使用一个“默认”的MBR来加载活动分区的MBR。在更改引导记录之前,尝试取消标记其中一个分区并进行引导。
如果这样做不起作用,可以考虑使用包mbr。它能够将“默认”的MBR安装到您的磁盘上,只需从活动分区加载引导代码。
根据你的问题,请自行阅读/遵循以下要点,但风险自负。这些操作有可能损坏你的分区表。首先使用dd if=/dev/sda of=table.bin bs=512 count=1备份它。我还建议备份所有文件。如果我正确理解文档,执行这些命令时没有使用-w可能会阻止它们写入任何内容,需要额外的用户干预。
  • ms-sys /dev/sda 将检查硬盘分区。
  • 请阅读文档here。据我所知,ms-sys 在某些情况下可能非常危险,并且旨在彻底破坏您的整个MBR以及分区表。看起来您使用了错误的工具。
  • ms-sys --ntfs /dev/sdaX 其中 sdaX 是您的Windows 7 分区。这可能会达到您的期望,但很可能不会。

我认为您在这里选择了错误的工具。这并不是"修复" MBR 的方法,而是破坏和创建它们。您可能会幸运地使新的分区表与旧的对齐,但我不会指望这一点。尝试引导一个 grub CD 并在提示符处键入 chainloader (hd0,<win7 partition>)+1,看看是否能启动。这将有助于诊断问题所在。如果一切都失败了,请使用您的 Windows 安装盘修复 MBR。


这是我用过的两种解决方案。

启动Linux,确保您拥有可用的互联网连接,并在终端上输入以下内容。

1. 解决方案

sudo apt-get install syslinux

如果软件包已安装,请使用以下命令写入MBR:
sudo dd if=/usr/lib/syslinux/mbr.bin of=/dev/sda

或者(根据地点而定)
sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sda

2. 解决方案
sudo apt-get install mbr

如果软件包已安装,请使用以下命令编写MBR。
sudo install-mbr -i n -p D -t 0 /dev/sda

对于两者都适用

如果您想将MBR安装到其他驱动器,请替换sda。不要输入sda1、sda2或sda3。只需将其输入为硬盘的sda即可。最后重新启动,您的Windows应该能够启动。


dd会擦除整个sda磁盘吗? - Pavel Vlasov
1对我来说,sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sda 是一个命令。 - Pouria Moosavi