修复 Windows 7 硬盘/安装的 MBR 和分区表

修复 Windows 7 硬盘/安装的 MBR 和分区表

显然,分区表和所有文件似乎仍然完好无损。Debian 能够挂载 ntfs 分区,我可以读取/写入,并且我目前正在使用 dd 将数据映像到外部硬盘上。

fdisk:

# fdisk -l /dev/sdb

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x17557a4b

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sdb2          206848   251903999   125848576    7  HPFS/NTFS/exFAT
/dev/sdb3       251906048   503603199   125848576    7  HPFS/NTFS/exFAT
/dev/sdb4       503605620   976784129   236589255    f  W95 Ext'd (LBA)
Partition 4 does not start on physical sector boundary.
/dev/sdb5       503607296   557346815    26869760    7  HPFS/NTFS/exFAT
/dev/sdb6       557348864   976769023   209710080    7  HPFS/NTFS/exFAT

ms-sys:

ms-sys /dev/sdb
/dev/sdb has an x86 boot sector,
it is an unknown boot record

分手:

# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print list                                                       
Error: Can't have a partition outside the disk!     

gparted 显示未分配文件系统的未分配分区。查看分区信息显示与 parted 相同的错误。

# gpart /dev/sdb

*** Fatal error: dev(/dev/sdb): seek failure.

MBR 转储:

# dd if=/dev/sdb of=/media/seagate-a/mbr.bin bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 9.4563e-05 s, 5.4 MB/s
root@carbon:/home/martin# hexdump -C -s 512 /media/seagate-a/mbr.bin
00000200  fc 31 c0 8e d0 31 e4 8e  d8 8e c0 be 00 7c bf 00  |.1...1.......|..|
00000210  06 b9 00 01 f3 a5 be ee  07 b0 08 ea 20 06 00 00  |............ ...|
00000220  80 3e b3 07 ff 75 04 88  16 b3 07 80 3c 00 74 04  |.>...u......<.t.|
00000230  08 06 af 07 83 ee 10 d0  e8 73 f0 90 90 90 90 90  |.........s......|
00000240  90 90 90 90 90 90 90 90  90 90 90 90 90 90 90 90  |................|
*
00000270  90 90 90 90 90 90 90 90  90 90 90 90 90 90 be be  |................|
00000280  07 b0 00 b9 04 00 80 3c  00 75 6e fe c0 83 c6 10  |.......<.un.....|
00000290  e2 f4 31 db b4 0e be 9d  07 8a 0e af 07 ac d0 e9  |..1.............|
000002a0  73 02 cd 10 08 c9 75 f5  b0 3a cd 10 31 c0 cd 16  |s.....u..:..1...|
000002b0  3c 00 74 f8 be 8b 07 b9  02 00 e8 ba 00 3c 0d 74  |<.t..........<.t|
000002c0  b4 3c 61 72 06 3c 7a 77  02 2c 20 88 c3 be 9d 07  |.<ar.<zw., .....|
000002d0  8a 0e af 07 ac d0 e9 73  04 38 c3 74 06 08 c9 75  |.......s.8.t...u|
000002e0  f3 eb af b8 0d 0e 31 db  cd 10 8d 84 62 00 3c 07  |......1.....b.<.|
000002f0  75 07 b0 1f a2 af 07 eb  99 31 d2 b9 01 00 3c 04  |u........1....<.|
00000300  74 11 73 f3 30 e4 b1 04  d2 e0 be be 07 01 c6 8a  |t.s.0...........|
00000310  16 b3 07 bf 05 00 56 f6  c2 80 74 31 b4 41 bb aa  |......V...t1.A..|
00000320  55 52 cd 13 5a 5e 56 72  1e 81 fb 55 aa 75 18 f6  |UR..Z^Vr...U.u..|
00000330  c1 01 74 13 8b 44 08 8b  5c 0a be 8d 07 89 44 08  |..t..D..\.....D.|
00000340  89 5c 0a b4 42 eb 0c 8a  74 01 8b 4c 02 b8 01 02  |.\..B...t..L....|
00000350  bb 00 7c 50 c6 06 8f 07  01 cd 13 58 5e 73 05 4f  |..|P.......X^s.O|
00000360  75 b4 eb 93 81 3e fe 7d  55 aa 75 f6 ea 00 7c 00  |u....>.}U.u...|.|
00000370  00 be 83 07 b9 0a 00 50  b4 0e 31 db ac cd 10 e2  |.......P..1.....|
00000380  fb 58 c3 54 65 73 74 44  69 73 6b 0d 0a 10 00 01  |.X.TestDisk.....|
00000390  00 00 7c 00 00 00 00 00  00 00 00 00 00 31 32 33  |..|..........123|
000003a0  34 46 00 00 41 4e 44 54  6d 62 72 00 02 02 02 1f  |4F..ANDTmbr.....|
000003b0  c7 00 00 80 00 00 00 00  4b 7a 55 17 cf c9 80 20  |........KzU.... |
000003c0  21 00 07 df 13 0c 00 08  00 00 00 20 03 00 00 df  |!.......... ....|
000003d0  14 0c 07 fe ff ff 00 28  03 00 00 98 00 0f 00 fe  |.......(........|
000003e0  ff ff 07 fe ff ff 00 c8  03 0f 00 98 00 0f 00 fe  |................|
000003f0  ff ff 0f fe ff ff 74 69  04 1e 8e 21 34 1c 55 aa  |......ti...!4.U.|
00000400
# file /media/seagate-a/mbr.bin 
/media/seagate-a/mbr.bin: x86 boot sector; partition 1: ID=0x7, active, starthead 32, startsector 2048, 204800 sectors; partition 2: ID=0x7, starthead 223, startsector 206848, 251697152 sectors; partition 3: ID=0x7, starthead 254, startsector 251906048, 251697152 sectors; partition 4: ID=0xf, starthead 254, startsector 503605620, 473178510 sectors, code offset 0x31

Windows 7 安装位于 /dev/sdb2 上。/dev/sdb1 曾经是系统保留。

我尝试使用以下方法“重新生成” MBRms-sys --mbr7 /dev/sdb测试磁盘所以我认为我已经完全破坏了 MBR 以及任何依赖它的东西,以至于整个东西都必须“重新生成”——MBR 和分区表。奇迹般地,Debian 仍然能够操作分区,所以并不是所有的希望都破灭了——对吧?

我想“重新生成” MBR,以便我可以从此驱动器启动到我的 Windows 7 安装。有没有工具可以帮助我解决这种情况?

答案1

这至少是您的问题的一部分:

255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
...
   Device Boot      Start         End      Blocks   Id  System
...
/dev/sdb4       503605620   976784129   236589255    f  W95 Ext'd (LBA)

请注意,您的扩展分区终点(扇区 976,784,129)是磁盘末尾(有 976,773,168 个扇区)。这当然是非法的,并且 libparted(parted和 GParted 都基于此)对此反应不佳。已知旧版本的 TestDisk 会产生此问题,但我没有跟踪它以了解 TestDisk 是否仍存在此错误。其他一些工具可能会做同样的事情。

最简单的解决方案是运行我的修复零件程序在磁盘上。它将丢弃过大的扩展分区,并创建一个既足够大以容纳逻辑分区又足够小以适合磁盘的分区。阅读 FixParts 文档以了解如何使用它的详细信息。

话虽如此,如果您在启动 Windows 时遇到问题,我不确定此解决方案是否能解决该问题。您尚未完全描述 Windows 启动失败的症状,因此如果修复虚假扩展分区没有帮助,我建议您编辑原始帖子以包含有关您尝试启动 Windows 的方式以及失败原因的更多详细信息。例如,您是尝试直接启动还是通过 GRUB 启动?如果是后者,您grub.cfg启动 Windows 的条目是什么?您是否看到 Windows 启动画面?您是否看到任何错误消息?计算机是否挂起、重新启动或以其他值得注意的方式出现异常?

答案2

最简单的方法是使用 Ubuntu Live 发行版。下载 Ubuntu 的安装 .iso 文件,通过 unetbootin 等实用程序或类似命令将其安装在 USB 上

sudo dd if=/path/to/isofile.iso of=/dev/sdb bs=1M

你必须绝对地,肯定地确保您的 USB 是 /dev/sdb。然后从 USB 启动,选择“尝试 Ubuntu 而不安装”,打开终端,按照以下说明安装 Boot-Repair此网页,其中还包含有关如何使用它的信息。这些简单的说明足以解决我听说的几乎所有情况下的这个问题。

相关内容