调整大小后的分区问题

调整大小后的分区问题

编辑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
  • 添加用于启动sda2Windows 8“启动”卷的 BCD 条目。
  • sda1现在至少将以 PC/AT 方式引导。
  • 为了实现这一点,可以:
    • 废除MBR病毒模式下的grub,并重新安装传统的MBR引导程序sda
    • 将缺失的条目添加到 grub 中,因为目前它根本没有提及hd0,msdos0或。hd0,msdos1

其余的由你决定。

相关内容