好吧,这就是我到达这一点的过程。
我尝试对我的外部驱动器进行分区,以便可以在上面安装多个操作系统,3 个 Linux 发行版、1 个 ubuntu 和一个用于 Windows 的分区。
所以我使用了 Gparted,驱动器按照它的方式运行良好,但当我启动 Windows 进行检查时,它显示大多数驱动器都是原始的,所以我认为出了问题,决定再次启动 Gparted,创建一个新的分区表并重新开始创建新分区。现在,在我创建新分区表之后,所有事情都开始变得糟糕,我终于意识到我不知何故搞砸了 MBR。
现在,Gparted 有一半的时间无法识别该驱动器,并且无法对其执行任何操作。
因此有人建议我使用 MBR Repair 来修复 MBR,所以我说当然可以,下载了它并启动它,它识别了我所有的驱动器,除了那个损坏的 mbr 的驱动器。
我读到过你可以手动修复 MBR,并且还有一些其他工具可能比 MBR 修复稍好一些,但我认为我来这里是为了征求一个合理的意见。
我还读到了一些关于某人使用相同品牌的驱动器来复制它的 mbr 并替换损坏的驱动器 mbr 的内容,这让我感到疑惑,因为我有;Seagate 500 Gig Goflex(损坏的 MBR)、Seagate 500 Gig 桌面 FreeAgent(正常)和 Seagate 250 Gig 便携式扩展驱动器(正常)。
答案1
当新创建的分区显示为原始分区时,我认为您的 MBR 或驱动器没有任何问题。恐怕我不知道为什么有时无法通过 gparted 中的下拉菜单选择它。但是,一些背景知识可能会帮助您了解应该发生什么。
首先是 MBR。对于外部驱动器,MBR 只是主分区表的容器。该表占用了 MBR 的最后 64 个字节的大部分,而 MBR 本身就是驱动器上数据的前 512 个字节。
对于可启动驱动器,MBR 包含加载 grub 开头的代码,或加载第一个可启动分区(例如 Windows 或 DOS)开头的代码。后者通常相当通用,您可以使用 Windows 实用程序来替换普通实用程序。但是,如果驱动器需要一些特殊的东西,它可以使用制造商提供的特殊 MBR。对于最近的驱动器来说,这可能相当不寻常。
使用 gparted 时,您为每个分区指定了一个类型。您应该确保它们是正确的。
分区是直到您在其上创建文件系统,它们才会是原始的。对于 Unix,它们可以是 Ext 3,对于 Windows,它们可以是 NTFS 或 FAT 版本。对于 Ubuntu,这通常由 Ubuntu 安装程序完成。gparted 在外部磁盘 MBR 的末尾写入了一个新的主分区表,如果您定义了任何外部分区,则可能在其他地方写入一些其他分区信息。Ubuntu 安装程序将使用您要求它创建的文件系统填充您要求的分区,并清除那里的任何数据。然后它们将不再是原始的(尽管交换分区将是)。
安装 Ubuntu 时,系统还需要安装 GRUB2 以生成启动窗口来选择要启动的系统。默认情况下,这将在基本的磁盘(系统启动磁盘)。这会更改 MBR 第一部分中的代码那驱动器并将 Grub2 安装在 MBR 和第一个磁道末尾之间的一些(通常)可用空间上。(MBR 是驱动器第一个磁道的第一个扇区)。
如果您可以告诉 BIOS 从那里启动,那么 Grub 也可以安装在辅助磁盘上的 MBR 上。
也可以将其安装到辅助磁盘上的分区中。如果这样做,您需要确保 MBR 中的代码是好的,Windows 安装的代码可以正常工作。安装了 Grub 的分区必须标记为可启动分区。
当您启动 Windows 时,Grub 会找到它所在的分区,然后加载其分区的第一个扇区,就像原始 MBR 一样。当启动 Linux 内核时,Grub 实际上会加载整个内核并启动它。
由于主分区表占用了 MBR 最后 66 个字节中的最后 64 个字节的大部分,因此您不能简单地使用扇区副本来替换它,否则会清除分区表。但是,如果您已经这样做了,您应该能够使用 gparted 来重新创建它。无论如何,gparted 不应该清除 MBR 的代码部分。
答案2
将 MBR 从一个驱动器复制到另一个驱动器
这将清除目标驱动器上的分区信息,从而清除所有信息。如果碰巧整个目标驱动器包含文件系统(目标驱动器未分区但已格式化),它将清除该文件系统。如果您有任何疑问,请不要这样做,即使如此,也要确保您正确指定了驱动器名称。
如果您想尝试将 MBR 从一个驱动器复制到另一个驱动器,比如从 /dev/hda 复制到 /dev/sga,这里有一种方法:
- 确保驱动器本身及其上的所有分区都已卸载。您可以使用 Window Dash 按钮正下方的文件夹查看已安装的内容并卸载已安装的任何内容。它位于左上角设备下的侧边栏中。单击小弹出按钮即可卸载。如果目标驱动器上安装了任何东西,我不会期望能够使用下面的方法、使用 MBR 恢复工具或使用 gparted 写入 MBR。这可能是查看 gparted 是否能够可靠地访问驱动器的好时机。
- 打开终端窗口。输入
mount
不带参数的命令以显示所有已安装的内容,以确保目标驱动器上没有安装任何内容。 - 输入类似于 的命令
sudo dd if=/dev/sda of=/dev/sga bs=512 count=1
,将 /dev/sda 替换为源驱动器,将 /dev/sga 替换为目标驱动器。这应该会将第一个驱动器的第一个扇区复制到第二个驱动器的第一个扇区。if=
指定源并of=
指定输出。
答案3
MBR 不是问题,因为您已经使用 gparted 创建了一个新 MBR,即使它是错误的,也不会导致整个驱动器不显示。要么是驱动器本身有问题,要么是与驱动器的连接有问题。打开磁盘实用程序并在驱动器上运行 SMART 诊断程序。