Win10 似乎创建了 4 个以上的主分区?!gparted 并不觉得好笑

Win10 似乎创建了 4 个以上的主分区?!gparted 并不觉得好笑

首先是故事:我将我的 Windows 分区“移到左边”,然后无法(双)启动 Windows,尝试了 Win8 CD 上的修复选项...现在似乎有超过 4 个主分区。gparted现在显示整个磁盘未分配“不能有重叠分区”。

分区表如下所示(从实时 CD 查看):

ubuntu@ubuntu:~$ sudo parted /dev/sda unit s print
Error: Can't have overlapping partitions.    

ubuntu@ubuntu:~$ sudo fdisk -l -u /dev/sda

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 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: 0x000524e5

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2046   134217727    67107841    5  Extended
/dev/sda2       134217728   150798335     8290304   82  Linux swap / Solaris
/dev/sda3   *   150798336   151515135      358400    7  HPFS/NTFS/exFAT
/dev/sda4   *   237004800   237721599      358400    7  HPFS/NTFS/exFAT
/dev/sda5       237721600   488394751   125336576    7  HPFS/NTFS/exFAT

/dev/sda1是我的 ext4 Linux 分区曾经所在的位置。我知道答案GParted 在我的 sda 驱动器上显示“未分配”(与 Win XP 并行启动)还读了很多书。我知道我只能有 4 个主分区,并且/dev/sda5应该位于扩展分区内 - 导致出现“重叠”警告。

我不知道的是:我该如何解决这个问题?我宁愿保留我的旧 Linux 分区 - 但即使我不这样做,我也不能重新安装 Ubuntu,因为磁盘处于无效状态。而且我很幸运,Windows 运行良好/dev/sda5,我宁愿不删除这个分区。

我还不明白:这两个小分区 3 和 4 有什么用?我假设 Windows 已将它们创建为启动分区或类似的东西...那么,我可以删除其中一个吗?Windows 将第二个分区安装为 D:,并显示文件,包括Temp\disklayout.txt磁盘上的信息,就像在“修复”之前一样:

  Partition ###  Typ               Größe    Offset
  -------------  ----------------  -------  -------
  Partition 0    Erweitert           63 GB  1023 KB
  Partition 4    Logisch             63 GB  1024 KB
  Partition 1    Primär            8096 MB    64 GB
  Partition 2    Primär             350 MB   113 GB
  Partition 3    Primär             119 GB   113 GB

非常感谢您提供的帮助指导!

更新 1

我尝试使用sfdisk修改后的表将多余的分区写入磁盘,从而删除多余的分区。当最后一个分区出现两次时,我就会fdisk删除它。结果看起来不错。

/dev/sda1 : start=     2046, size=134215682, Id= 5
/dev/sda2 : start=134217728, size= 16580608, Id=82
/dev/sda3 : start=237004800, size=   716800, Id= 7, bootable
/dev/sda4 : start=237721600, size=250673152, Id= 7

当我尝试使用时fixparts,它的分析是......令人恼火:

MBR command (? for help): p

** NOTE: Partition numbers do NOT indicate final primary/logical status,
** unlike in most MBR partitioning tools!

** Extended partitions are not displayed, but will be generated as required.

Disk size is 488397168 sectors (232.9 GiB)
MBR disk identifier: 0x000524E5
MBR partitions:

                                                   Can Be   Can Be
Number  Boot  Start Sector   End Sector   Status   Logical  Primary   Code
   2             134217728    150798335   logical     Y        Y      0x82
   3      *      237004800    237721599   logical     Y        Y      0x07
   4             237721600    488394751   primary              Y      0x07

虽然sfdisk显示了第一个分区,但是fixparts不会。

更新 2

好吧,好吧。我不太走运fixparts,但testdisk成功了。不是我一个人成功了,但关键部分成功了。以下是对我有帮助的内容(我是从曾经失落的 Ubuntu,jippi 写的)——可能对其他人也有帮助。

提前警告:我从来没想过摆弄分区表会这么有趣!但如果磁盘上有重要数据,最好不要这么做(没有完整的磁盘备份)。

  • 第一部分可能更容易,只需fdisk /dev/sda删除多余的分区。
    • 通过以下方式下载分区表fsdisk -d /dev/sda > SomeUSBFile
    • 手动从此文件中删除多余的分区(并相应地更改剩余分区的编号)
    • 通过以下方式写入修改后的分区表fsdisk /dev/sda < SomeUSBFile
    • 删除了最后一个分区,现在通过fdisk
  • Linux 分区仍然缺失,所以我testdisk从 Ubuntu Live USB 棒运行。它发现实际上没有扩展分区,而是主 Linux 分区。但它没有看到 Windows 10 分区。
    • 所以我再次将分区表写入文件fsdisk -d /dev/sda > SomeUSBFile
    • testdisk我们写入新的分区表(搜索分区后找到的分区表),
    • 将此分区表导出到另一个文件,
    • 复制 linux 分区的行,然后
    • 将此行插入到原始分区表文件中
    • 通过 导入此修改后的版本fsdisk /dev/sda < SomeUSBFile
  • Windows 仍可运行:)
  • 然后,ubuntu live-USB 允许挂载 linux 分区(这很奇怪,因为我在 linux 安装期间启用了加密...),并将新的 grub MBR 安装到 /dev/sda(http://howtoubuntu.org/how-to-repair-restore-reinstall-grub-2-with-a-ubuntu-live-cd
  • 最后,必须在 gparted 中重新创建交换分区(旧分区现在在 gparted 中为“未知”)。

答案1

我的FixParts 实用程序(Ubuntu 软件包的一部分gdisk可能能够修复该问题;但是,我不能保证这一点——您的逻辑分区完全位于分配给扩展分区的空间之外,这可能会使它陷入困境。(这个问题极其罕见,我不记得 FixParts 如何读取 MBR 分区表的足够细节,无法预测它会如何反应。)您可以尝试在磁盘上运行 FixParts 并查看分区表,看看它是否可以毫无风险地检测到您的分区——它不会保存分区表,除非您告诉它这样做(通过选项w)。

如果 FixParts 在磁盘上剥落,至少还有另外三种选择:

  • 使用fdisk或其他工具,删除部分或全部分区,然后重新创建它们。您已经显示的输出提供了您所需的一切——起点和终点(以扇区为单位)以及分区类型代码。
  • 删除所有分区,然后使用测试磁盘恢复有效的分区表。此方法通常是最后手段,有时会失败,但如果您在使用上述方法时遇到问题,此方法可能会有所帮助。
  • 备份所有分区的内容,清除分区表,创建新分区,然后恢复分区的内容。这是一项艰巨的任务,您可能会遇到重新启动所有分区的问题,因此我只会在万不得已的情况下才这么做。不过,在尝试其他方法之前,建议先备份。

正如 oldfred 所说,Windows 分区工具在处理包含扩展分区和逻辑分区的 MBR 分区表时不可靠。我建议尽可能避免使用它。

相关内容