编辑3
这可能是相当无望的情况,所以我发布了另一种更简单但仍然需要一些帮助的方法。
https://superuser.com/questions/706244/will-this-work-backup-partition-contents-of-both-linux-and-windows
我最近在安装了 Windows 8 和 KDE Linux Mint 的磁盘上调整了一个分区 (/sda2) 的大小,以创建另一个分区 /sda1。出现了很多问题。
首先,计算机无法通过 BIOS 启动,只能使用 grub 进行修复。借助 Live Linux USB,我使用启动修复应用程序重新安装了 grub(在 /sda 上)。幸好 Linux 从新的 grub2 菜单启动,但 Windows 在尝试加载时会崩溃。在 Linux 上进一步研究后,我发现 KDE Partition Manager 和 GParted 等应用程序都无法读取我的 /sda 磁盘上的分区。
KDE 分区管理器提示“此设备上未找到有效分区”。GParted 提示“整个分区未分配”,并且“无法满足分区上的所有约束”。
然后我安装了另一个应用程序 FixParts。它给了我以下信息:
Warning: 0xEE partition doesn't start on sector 1. This can cause problems
in some OSes.
和
Disk size is 250069680 sectors (119.2 GiB)
MBR disk identifier: 0x0FB1A4FB
MBR partitions:
Can Be Can Be
Number Boot Start Sector End Sector Status Logical Primary Code
1 63 192779 primary Y Y 0x07
2 * 208839 134062424 logical Y Y 0x07
5 134066176 234067967 logical Y Y 0x83
6 234067968 250068991 primary Y 0x82
fdisk -l 给了我这个:
Disk /dev/sda: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders, total 250069680 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: 0x0fb1a4fb
Device Boot Start End Blocks Id System
/dev/sda1 63 192779 96358+ 7 HPFS/NTFS/exFAT
/dev/sda2 * 208839 134062424 66926793 7 HPFS/NTFS/exFAT
/dev/sda3 134066175 250068991 58001408+ f W95 Ext'd (LBA)
/dev/sda5 134066176 234067967 50000896 83 Linux
/dev/sda6 234067968 250068991 8000512 82 Linux swap / Solaris
其中 sda1 只是一个空的 NTFS 分区,sda2 包含我的 Windows 8,sda5 是 Linux /(root)。/home 在另一个磁盘上。
我想保留我的数据。而且我希望我的 Windows 8 和 Linux 位于同一磁盘上,因为它是 SSD。如果可能的话,我还希望 Grub 和 Windows 启动文件位于同一磁盘上,但这是另一个问题。
编辑
一开始我以为问题是“0xEE 分区不是从扇区 1 开始的”,但现在我不太确定了。我的其他磁盘(我有 3 个)也出现同样的错误,但分区应用程序可以读取它们。但是,我记得看到启动修复应用程序在每个磁盘上重新安装 grub2,所以也许这有关。此外,现在我看到 Windows 8 分区(/dev/sda2)是逻辑分区吗???Windows 无法从逻辑分区启动,所以以前不可能是这样。我怎么才能在不丢失数据的情况下改变它?
编辑2
来自启动修复应用程序的真正详细信息:http://paste.ubuntu.com/6805345/
答案1
天啊,这真是一团糟。
以下仅列举一些突出的问题:
“0xEE 分区不是从扇区 1 开始的”
现在,这些磁盘上没有 0xEE 类型的分区。如果如此消息所示,您确实有该分区,则您的磁盘曾经被分区为非常不同的分区表机制,您的“修复”似乎已将其完全破坏。在这种情况下,您现在看到的可能是“混合”分区表方案(并行的 MBR 和 EFI 分区表尽可能描述相同的分区)被修复到接近其寿命的程度的结果。或者很可能更远一英寸。
这是 Windows 8 无法启动的原因之一。微软错误地认为,安装到使用 MBR 分区表分区的磁盘意味着不能以 EFI 方式启动,反之亦然。如果您彻底“修复”了分区,以至于设法将分区表方案从 EFI 转换为 MBR,那么您可能已经把 Windows 搞糊涂了。
当然,类型为 0xEE 的 MBR 分区表条目并非从块 #1 开始,这首先就是损坏的迹象,因此发生的事情很可能不是一直都是这样。另一个可能的解释是 0xEE 分区表条目是幽灵。事实支持了这一观点,因为没有迹象表明 Windows 正在或曾经以 EFI 方式在您的机器上进行引导。
我记得看到启动修复应用程序在每个磁盘上重新安装 grub2。
这与“修复”类型 0xEE 保护性 MBR 记录使其完全不存在相结合,将清除所有 EFI 分区表。当然,前提是它确实是 EFI 分区。
=> Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 1 of
the same hard drive for core.img.
您已将 grub 安装在其通常的 MBR 病毒模式下,其core.img
右侧就是 EFI 分区表所在的位置。
现在我看到 Windows 8 分区(/dev/sda2)是合乎逻辑的???
输出中没有fdisk
,你不知道。那里没有任何迹象表明这一点。而且它被分配了次要设备号 2 这一事实强烈表明它是一个主分区。次要分区的编号从 5 开始。
当然,FixParts 可能(而且毫无疑问)说的是实话。在这种情况下,您的 MBR 分区表没有活动主分区根本,Windows 8 确实位于扩展分区中的逻辑卷中,难怪无法启动。除非启动管理器动态修复其 BPB,否则 VBR 引导程序无法在辅助分区中很好地运行,而我相当肯定 Grub 不会这样做。您需要在此处撤消从主分区到辅助分区的转换。您的 Windows 8 卷绝对应该是主分区。
/dev/sda1: LABEL="SYSTEM RESERVED" UUID="01CF186FCBFB6340" TYPE="ntfs"
...
/dev/sda2 * 208,839 134,062,424 133,853,586 7 NTFS / exFAT / HPFS
您的第一个主分区显然是您的(穷人的)系统音量。但是您的第二个主分区(或第一个次分区,取决于您相信与否fdisk
)被标记为活动分区。这也会让 Windows 感到困惑。首先,它不会将您的第一个主分区识别为“系统”,因为它没有活动标志。
此外(假设这fdisk
是正确的),当您以旧 PC/AT 固件方式(而不是 EFI 方式)启动时,如果该卷确实是系统保留卷,则您的引导程序将从错误的卷加载错误的 VBR。如果 FixParts 是正确的,您的引导程序将从错误的卷加载错误的 VBR,并且还加载错误的 BPB 值。
这让我想到:
=================== hexdump -n512 -C /dev/sda1
00000000 eb 52 90 4e 54 46 53 20 20 20 20 00 02 08 00 00 |.R.NTFS .....|
...
000001a0 0d 0a 4e 54 4c 44 52 20 69 73 20 6d 69 73 73 69 |..NTLDR is missi|
000001b0 6e 67 00 0d 0a 4e 54 4c 44 52 20 69 73 20 63 6f |ng...NTLDR is co|
000001c0 6d 70 72 65 73 73 65 64 00 0d 0a 50 72 65 73 73 |mpressed...Press|
您的穷人的系统卷上有旧的 Windows NT 5.x VBR 引导程序。
=================== hexdump -n512 -C /dev/sda2
00000000 eb 52 90 4e 54 46 53 20 20 20 20 00 02 08 00 00 |.R.NTFS .....|
....
000001a0 63 75 72 72 65 64 00 0d 0a 42 4f 4f 54 4d 47 52 |curred...BOOTMGR|
000001b0 20 69 73 20 63 6f 6d 70 72 65 73 73 65 64 00 0d | is compressed..|
000001c0 0a 50 72 65 73 73 20 43 74 72 6c 2b 41 6c 74 2b |.Press Ctrl+Alt+|
您的第二个主分区上有 Windows NT 6.x VBR 引导程序。由于有活动标志,这将使其成为组合的“启动”和“系统”卷。
sda1: __________________________________________________________________________
Boot sector type: Windows 2000/XP: NTFS
Boot files:
sda2: __________________________________________________________________________
Boot sector type: Windows 8/2012: NTFS
Boot files: /bootmgr /Windows/System32/winload.exe
但 Microsoft 的 Boot Manager 并未正确存在。BCD 存储完全缺失。第二个主分区中的 VBR 引导程序可以找到 Microsoft 的 Boot Manager。但 Microsoft 的 Boot Manager 在系统卷中没有 BCD 存储。
sdc1: __________________________________________________________________________
Boot sector type: Windows 8/2012: NTFS
Boot files: /bootmgr /Boot/BCD /NTLDR /ntdetect.com
相反:在第三张光盘上,第一个主分区被标记为活动分区,因此是穷人的系统卷。Microsoft 的 Boot Manager 和 BCD 存储都在那里,还有一个 Windows NT 6.x VBR 引导程序。我怀疑这就是你的第一张光盘应该看起来像。但事实并非如此。
我建议:
sda2
修复作为辅助分区的问题。- 标记
sda1
为活跃。 sda1
现在再次成为您的穷人的“系统”卷,就像以前一样。- 将 Windows NT 6.2 VBR 引导程序放在上面
sda1
。 - 将微软的启动管理器放在上面
sda1
。 - 在 上创建 BCD 存储
sda1
。 - 添加用于启动
sda2
Windows 8“启动”卷的 BCD 条目。 sda1
现在至少将以 PC/AT 方式引导。- 为了实现这一点,可以:
- 废除MBR病毒模式下的grub,并重新安装传统的MBR引导程序
sda
。 - 将缺失的条目添加到 grub 中,因为目前它根本没有提及
hd0,msdos0
或。hd0,msdos1
- 废除MBR病毒模式下的grub,并重新安装传统的MBR引导程序
其余的由你决定。