我正在尝试使用 Ubuntu Live CD 修复 MBR。我已经有了微软系统但从我看到的线程来看,我不完全确定应该在哪个 /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,因为在尝试加载操作系统时出现黑屏。
答案1
要恢复 MBR,可接受的方法是使用 Windows CD。我们没有那么奢侈。幸运的是,我们手头有一个 Ubuntu Live USB。
修复MBR的方法是:
- 使用 Live USB/CD 启动机器。
- 安装 lilo
sudo apt-get install lilo
- 使用以下命令通过 lilo 修复 MBR:
sudo lilo -M /dev/sda mbr
奇迹般有效!
答案2
首先,您的分区表似乎有两个活动分区,即使您修复了 MBR 的问题,这也可能会导致您的计算机无法启动。
Windows 的 MBR 启动有点奇怪,因为它使用“默认”MBR 来加载活动分区的 MBR。在更改启动记录之前,请尝试取消标记其中一个分区并启动。
如果这不起作用,这个软件包mbr
可能值得研究。它能够将“默认”MBR 安装到您的磁盘,只需从活动分区加载引导代码即可。
根据您的问题,阅读/遵循这些要点需要您自担风险。这些东西可能会弄乱您的分区表。请先使用 进行备份dd if=/dev/sda of=table.bin bs=512 count=1
。我还建议您备份所有文件。如果我正确理解了文档,如果不执行这些命令,-w
它们可能会阻止它们在没有额外用户干预的情况下写入任何内容。
ms-sys /dev/sda
将检查硬盘分区- 请阅读文档这里。据我所知,
ms-sys
这可能非常危险,并且在某些情况下会连同分区表一起抹去整个 MBR。看来您使用了错误的实用程序来完成这项工作。 ms-sys --ntfs /dev/sdaX
您的 Windows 7 分区在哪里sdaX
。这可能按照你的期望去做,但是大概不是。
我认为你用的这个工具不合适。它不会“修复” MBR,而是会破坏并创建它们。你可能会很幸运,让新分区表与新分区表对齐,但我不会指望它。尝试启动 grub CD 并chainloader (hd0,<win7 partition>)+1
在提示符下输入,看看它是否启动。这将有助于诊断问题所在。如果其他方法都失败了,请使用你的 windows 安装 dist 来修复 MBR。
答案3
以下是对我有用的两种解决方案。
启动 Linux 并确保您已拥有可用的 Internet 连接,然后在终端上输入以下内容。
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 应该可以启动。