我打算安装一个全新的 Linux 发行版 (Mageia),我认为这是一个重新组织分区的机会。我希望所有非 Linux(Windows、恢复等)分区都放在开头,Linux 分区放在结尾,这样如果我想测试更多发行版,就可以更轻松地创建新的 Linux 分区。
我使用 GParted 删除了现有的 Linux 分区(我备份了想要保留的数据),并将剩余的分区移到了前面。稍后我会在 Mageia 安装程序中创建 Linux 分区。
虽然花了一些时间,但 GParted 最终顺利完成。Mageia 的安装也非常顺利。
当启动 Mageia 时,我遇到了一些与 ATI Radeon 显卡无关的问题(仍未解决),导致我只剩下控制台,重新启动时我看到了Error: Can't have overlapping partitions
快速浏览。
没问题,我想,我只需再次启动 GParted 并修复它。唉,GParted 显示整个磁盘未分配。好的,回到 Linux。从命令行启动 parted 给我
[root@localhost ~]# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: Can't have overlapping partitions.
fdisk
应该给我更多信息,而且它确实给了我:
[root@localhost ~]# fdisk -l -u /dev/sda
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 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: 0x2bd2c32a
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS
/dev/sda2 208845 1953520064 976655610 5 Extended
/dev/sda3 950740992 1013655551 31457280 7 HPFS/NTFS
/dev/sda4 1013655552 1015754751 1049600 12 Compaq diagnostics
/dev/sda5 208896 409808895 204800000 7 HPFS/NTFS
/dev/sda6 409810944 950740991 270465024 7 HPFS/NTFS
/dev/sda7 1015757883 1034184374 9213246 82 Linux swap / Solaris
/dev/sda8 1034184438 1953520064 459667813+ 83 Linux
如果我按分区开始排序,似乎/dev/sda5
应该/dev/sda6
调用/dev/sda3
和/dev/sda4
,反之亦然。
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS
/dev/sda2 208845 1953520064 976655610 5 Extended
/dev/sda5 208896 409808895 204800000 7 HPFS/NTFS
/dev/sda6 409810944 950740991 270465024 7 HPFS/NTFS
/dev/sda3 950740992 1013655551 31457280 7 HPFS/NTFS
/dev/sda4 1013655552 1015754751 1049600 12 Compaq diagnostics
/dev/sda7 1015757883 1034184374 9213246 82 Linux swap / Solaris
/dev/sda8 1034184438 1953520064 459667813+ 83 Linux
通过谷歌搜索我发现testdisk
可以解决这个问题。
- 我该如何使用
testdisk
?界面相当混乱。 - 我可以从 Linux/Windows 运行它吗?还是应该启动实时版本?
提前致谢,
缺口
我按照下面答案中的说明进行操作,但没有效果。
我必须重新创建这些分区:
/dev/sda3 950740992 1013655551 31457280 7 HPFS/NTFS
/dev/sda4 1013655552 1015754751 1049600 12 Compaq diagnostics
事情是这样的:
[root@localhost ~]# fdisk /dev/sda
Command (m for help): d
Partition number (1-8): 3
Command (m for help): d
Partition number (1-8): 4
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First sector (950743040-1953520064, default 950743040): 950740992
Value out of range.
First sector (950743040-1953520064, default 950743040):
第一个分区需要从 95074 开始0992但新的可能只从 95074 开始3040。
我该如何继续?
答案1
我发现的修复分区顺序的最佳解决方案:
Enter into the disk partition place:
fdisk /dev/sda
Command (m for help): m
Command action
...
l list known partition types
m print this menu
p print the partition table
q quit without saving changes
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): x
Expert command (m for help): m
Command action
...
f fix partition order
m print this menu
p print the partition table
q quit without saving changes
r return to main menu
v verify the partition table
w write table to disk and exit
Expert command (m for help): f
Done.
Expert command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
完毕!
答案2
重叠分区问题的出现部分是由于 PC 分区的异常所致。
分区表正好有 4 个“主分区”条目的空间。如果您需要超过 4 个分区,则有一种称为“扩展”分区的机制 - 它实际上会创建一个大分区(在您的例子中是分区 #2),而该分区又有自己的子分区表,允许添加称为“逻辑”分区的附加条目。
您所做的是创建一个从扇区 208845 到 1953520064 的扩展分区,但同时还创建了额外的主分区 3 和 4,与为“扩展”分区保留的磁盘空间重叠。
解决问题最简单的方法如下:
- 使用 Linux fdisk 删除分区 3 和 4
- 使用与之前相同的扇区起始/结束值将它们重新创建(再次使用 fdisk)为扩展分区内的逻辑分区
如果您希望逻辑分区顺序反映其在磁盘上的“物理”位置,fdisk
也可以提供帮助。只需按“x”即可激活扩展功能并使用F ix 分区顺序功能。此后,您可能需要针对 Linux 系统调整fstab
s - Windows 具有基于 GUID 的分区标识,因此不必关心顺序。
答案3
请注意:我尝试了 fdisk 中的高级修复选项并重新启动了系统。这带来了灾难性的后果,在我的例子中,/dev/sda8 变成了 /dev/sda5,而 /boot/grub 并没有因此而改变。
因此,解决这个问题以避免混乱的明显方法是:
$ fdisk /dev/sda
x
f
w
$ update-grub
$ grub-install
但首先确保您已经安装了 grub 命令(如上所述),因为它在某些系统中似乎已被弃用。