如何修复MBR表中的重叠分区?
我在PC上安装的Ubuntu被卡在启动画面上。 所以,我尝试重新安装,但分区表在安装向导中显示为空。 我了解到我的分区重叠了。
我发现这个链接修复了问题http://gparted.org/h2-fix-msdos-pt.php 。 但它对我的fdisk输出似乎没有意义。
$ 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: 0x49fec944 Device Boot Start End Blocks Id System /dev/sda1 * 616448 257441624 128412588+ 7 HPFS/NTFS/exFAT /dev/sda2 452753408 484210687 15728640 7 HPFS/NTFS/exFAT /dev/sda3 484210688 488394751 2092032 c W95 FAT32 (LBA) /dev/sda4 257433598 452753407 97659905 5 Extended /dev/sda5 257433600 452753407 97659904 83 Linux Partition table entries are not in disk order
你可以帮帮我吗?
使用sfdisk
修复分区表:
-
使用实时Ubuntu磁盘启动;
-
确认您的磁盘设备上的问题,这里
/dev/sda
与parted
例如sudo parted /dev/sda unit s print
哪个应该显示:
Error: Can't have overlapping partitions.
-
可以使用以下命令检查分区详细信息
sudo fdisk -l -u /dev/sda
对你来说,根据你的post是:
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: 0x49fec944 Device Boot Start End Blocks Id System /dev/sda1 * 616448 257441624 128412588+ 7 HPFS/NTFS/exFAT /dev/sda2 452753408 484210687 15728640 7 HPFS/NTFS/exFAT /dev/sda3 484210688 488394751 2092032 c W95 FAT32 (LBA) /dev/sda4 257433598 452753407 97659905 5 Extended /dev/sda5 257433600 452753407 97659904 83 Linux
-
检查重叠:您可以看到主分区
/dev/sda1
末尾与扩展分区/dev/sda4
的开头重叠。sda1 end = 257441624
sda4 start = 257433598
-
正如文档中所建议的那样 – “在我们不知道起始或结束扇区是否存在问题的情况下,我们假设每个分区的起始扇区是正确的,并且结束扇区可能出错” ,我们假设扩展分区
sda4
的起始扇区是正确的。 因此,我们将寻求更改主分区sda1
的结束扇区。计算:
sda1 newEnd = sda4 start – 1 = 257433598 – 1 = 257433597
sda1 newSize = sda1 newEnd – sda1 start + 1 = 257433597 – 616448 + 1 = 256817150
-
使用
sfdisk
命令将分区表的副本转储到文件中:sudo sfdisk -d /dev/sda
应该转储分区表的详细信息。 这可以转储到一个文件,经过必要的修正后,可以反馈给sfdisk
。 [ 致OP:请编辑您的问题并包含sudo sfdisk -d /dev/sda
的输出]转储分区表的副本:
sudo sfdisk -d /dev/sda > sda-backup.txt
这对你来说是这样的:
# partition table of /dev/sda unit: sectors /dev/sda1 : start= 616448, size=256825177, Id= 7, bootable /dev/sda2 : start=452753408, size= 31457279, Id= 7 /dev/sda3 : start=484210688, size= 4184064, Id= c /dev/sda4 : start=257433598, size=195319810, Id= 5 /dev/sda5 : start=257433600, size=195319808, Id=83
-
使用您选择的文本编辑器打开上一步中创建的具有root权限的文件。 在示例中,我将使用
nano
。sudo nano sda-backup.txt
(
sda-backup.txt
假设文件在当前目录中,否则使用文件的绝对路径重新生成它。)将
sda1
(256825177
)的旧大小更改为更正大小(256817150
),以便新分区表转储看起来像:# partition table of /dev/sda unit: sectors /dev/sda1 : start= 616448, size=256817150, Id= 7, bootable /dev/sda2 : start=452753408, size= 31457279, Id= 7 /dev/sda3 : start=484210688, size= 4184064, Id= c /dev/sda4 : start=257433598, size=195319810, Id= 5 /dev/sda5 : start=257433600, size=195319808, Id=83
保存文件( Ctrl + O表示
nano
)并关闭编辑器( Ctrl + X表示nano
)。 -
使用
sfdisk
命令将更正的分区详细信息反馈到分区表:sudo sfdisk /dev/sda < sda-backup.txt
-
通过在磁盘设备上运行
parted
来确认问题是否得到解决:sudo parted /dev/sda unit s print
-
如果步骤9确认分区表已修复,则可以将GParted或其他分区编辑器与设备一起使用。
GParted文档还提出了另一种方法,使用testdisk扫描磁盘设备以重建分区表。 testdisk应用程序包含在GParted Live中 。 因此,如果您对命令行方式不满意,可以尝试替代方案。
资源
Rusty的建议应该有效,但它有点令人生畏。 使用fdisk
可以更简单地完成同样的事情:
- 键入
sudo fdisk /dev/sda
在磁盘上启动fdisk
。 - 通过键入
p
查看分区表并validation它是否显示您发布的相同分区,validation您是否正在使用正确的磁盘。 - 键入
d
并在提示输入分区号时键入1
。 - 键入
n
以创建新分区。 出现提示时,为分区类型输入p
,为分区编号输入1
(实际上,我认为fdisk
不会提示此详细信息),第一个扇区为257433597
(扩展分区的起点减1)对于最后一个部门。 (最后一个扇区值可能是默认值,在这种情况下,您只需按Enter键。) - 键入
p
以validation分区是否正确。 它们应该看起来就像你现在所拥有的那样,除了/dev/sda1
的结束点应该是/dev/sda4
开始之前的一个扇区。 - 输入
w
以保存更改并退出。
无论你是遵循我的程序还是生锈, 都要注意 /dev/sda1
中的文件系统有可能认为它可以在扇区257,433,597之外使用。 如果是这样,以这种方式修复磁盘可能会导致该分区出现问题。 实际上没有解决这个问题的方法,并且通过不修复当前问题来改变它会冒着损坏分区表的风险,这会导致/dev/sda5
消失或其内容被破坏,因此修复问题肯定是为了。 但是,为了降低损坏/dev/sda1
的风险,我建议您在Windows中运行CHKDSK
(或使用其GUI前端)来validation/dev/sda1
完整性。 我不是肯定的,但我希望CHKDSK
会检测到一个太小的容器分区。 如果分区对于文件系统来说太小,则可能需要执行文件系统resize以修复问题 – 但在调整分区大小以最小化损坏/dev/sda5
的风险之后执行此操作。 但这一切在很大程度上都是预防性的; 很有可能/dev/sda1
中的文件系统没有调整到/dev/sda1
末尾,在这种情况下,以我和生锈的方式调整分区大小不会导致问题。 (我们都告诉你们做同样的事情;我们只是用来完成工作的工具不同。)
下载当前支持的版本(12.04或13.10),启动它,并备份要从当前安装中保存的所有数据。 然后使用fdisk
删除分区5和4,然后重新安装。
在GParted中resize/移动时,还有一个选项“Align to:”它列出了3个选项:
- MIB
- Cylinder /选择这个并重试 – 这对我有用
- 没有
当我遇到同样的问题时,我在这里找到了它。 http://ubuntuforums.org/showthread.php?t=1980664&p=12319906#post12319906