我电脑上安装的 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
你可以帮帮我吗?
答案1
使用以下命令修复分区表sfdisk
:
使用实时 Ubuntu 磁盘启动;
确认磁盘设备上的问题,
/dev/sda
例如parted
sudo parted /dev/sda unit s print
应该显示:
Error: Can't have overlapping partitions.
可以使用以下方法检查分区详细信息:
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
检查重叠:您可以看到主分区的末尾
/dev/sda1
与扩展分区的开头重叠/dev/sda4
。sda1结束= 257441624
sda4启动= 257433598
正如所建议的那样文档那 -“在我们不知道起始扇区或结束扇区是否存在问题的情况下,我们假设每个分区的起始扇区是正确的,而结束扇区可能有错误”,我们假设扩展分区的起始扇区
sda4
是正确的。因此,我们将寻求改变主分区的结束扇区sda1
。计算:
sda1新结束=sda4启动- 1 = 257433598 - 1 = 257433597
sda1新大小=sda1新结束-sda1启动+ 1 = 257433597 - 616448 + 1 =256817150
使用以下命令将分区表的副本转储到文件中
sfdisk
:sudo sfdisk -d /dev/sda
应转储分区表详细信息。可将其转储到文件中,在进行必要的更正后,可将其反馈给sfdisk
。[致原帖作者: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+ Ofor
nano
)并关闭编辑器(Ctrl+ Xfornano
)。使用以下命令将更正后的分区详细信息反馈给分区表
sfdisk
:sudo sfdisk /dev/sda < sda-backup.txt
parted
通过在磁盘设备上运行以下命令确认问题是否已解决:sudo parted /dev/sda unit s print
如果第 9 步确认分区表已修复,则可以使用分区或与该设备相关的其他分区编辑器。
GParted 文档还建议使用另一种方法测试磁盘扫描磁盘设备以重建分区表。 testdisk 应用程序包含在GParted 直播。因此,如果您不习惯命令行方式,您可以尝试替代方法。
答案2
下载当前支持的版本(12.04 或 13.10),启动它,并备份您想要从当前安装中保存的任何数据。然后使用fdisk
删除分区 5 和 4,然后重新安装。
答案3
Rusty 的建议应该可行,但有点吓人。同样的事情可以用fdisk
更简单的方法完成:
fdisk
通过键入 在磁盘上启动sudo fdisk /dev/sda
。- 通过键入查看分区表来验证您是否在正确的磁盘上工作
p
,并验证它是否显示您发布的相同分区。 - 键入
d
,当提示输入分区号时,键入1
。 - 键入
n
以创建新分区。出现提示时,输入p
分区类型、1
分区号(实际上,我认为fdisk
不会提示此详细信息)、616448
第一个扇区和257433597
(扩展分区的起始点减 1)最后一个扇区。(最后一个扇区的值可能是默认值,在这种情况下,您只需按 Enter 即可。) - 键入
p
以验证分区是否正确。它们应该看起来就像你现在得到的一样,只是终点应该/dev/sda1
是一个扇区前的开始/dev/sda4
。 - 键入
w
以保存更改并退出。
无论你是按照我的程序还是 Rusty 的程序,意识到有可能文件系统/dev/sda1
认为它可以使用超过 257,433,597 个扇区。如果是这样,以这种方式修复磁盘可能会导致该分区出现问题。这个问题确实没有办法解决,避免它的方法如下:不是修复当前问题可能会损坏分区表,从而导致/dev/sda5
消失或其内容损坏,因此修复问题绝对有必要。/dev/sda1
不过,为了减轻损坏的风险,我建议您CHKDSK
在 Windows 中运行(或使用其 GUI 前端)来验证的完整性/dev/sda1
。我不确定,但我希望这CHKDSK
会检测到太小的容器分区。如果分区对于文件系统来说太小,您可能需要执行文件系统调整大小来解决问题——但请这样做后调整分区大小以尽量减少损坏的风险/dev/sda5
。不过,所有这些主要是预防措施;很有可能 中的文件系统大小/dev/sda1
未达到 的末尾/dev/sda1
,在这种情况下,按照我和 rusty 建议的方式调整分区大小不会引起问题。(我们都告诉您做同样的事情;我们只是在用于完成工作的工具上有所不同。)
答案4
如果您可以访问任何 Windows 机器,只需打开分区管理器将其格式化为 NTFS。然后在 Linux 中再次将其格式化(我在 Mint 中使用磁盘)为所需的分区格式(在我的情况下为 EXT4)。