如何修复分区表排序?


2

我打算安装一个全新的Linux发行版(Mageia),并将其视为重组分区的机会。我想在开始时使用所有非Linux(Windows,还原等)分区,而在结尾时使用Linux,因此如果要测试更多发行版,可以更轻松地创建新的Linux分区。

我使用GParted删除了现有的Linux分区(我备份了要保留的数据),并将其余的分区移到了前面。稍后,我将在Mageia安装程序中创建Linux分区。

花了一些时间,但最终GParted顺利完成。Mageia的安装也毫无障碍。

引导到Mageia时,我的ATI Radeon视频卡出现了一些(不相关?)问题(仍未解决),使我只能使用控制台,而在重新引导时,我看到了Error: Can't have overlapping partitions拉链。

没问题,我想,我将再次启动GParted并进行修复。G,GParted显示整个磁盘都未分配。好,回到Linux。从命令行开始分开给了我

[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可以解决此问题。

  1. 如何使用testdisk?界面很混乱。
  2. 我可以从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开始。

我该如何进行?


似乎有可能提出一个问题。我怎么做?
Koohoolinn

您可以标记它以引起主持人注意并要求进行迁移,或发布到“关闭投票”聊天频道-迁移需要具有较高声誉的用户五张迁移票。

Answers:


2

重叠的分区问题部分是由于PC分区的奇怪性引起的。

分区表具有恰好4个“主分区”条目的空间。如果您需要四个以上的分区,则有一种称为“扩展”分区的机制-它实际上创建了一个大分区(在您的情况下为#2分区),该分区又拥有自己的子分区表,允许添加称为“逻辑”分区。

您要做的是创建一个从扇区208845到1953520064的扩展分区,还要创建其他主要分区3和4,这些分区与为“扩展”分区保留的磁盘空间重叠。

解决问题的最简单方法如下:

  • 使用Linux fdisk删除分区3和4
  • 使用与以前相同的扇区开始/结束值在扩展分区内重新创建它们(再次使用fdisk)作为逻辑分区

如果您希望逻辑分区顺序反映它们在磁盘上的“物理”位置,fdisk也可以提供帮助。只要按下“X”来激活扩展功能,并使用˚F 九分区顺序功能。fstab在那之后,您可能需要针对Linux系统进行调整-Windows具有基于GUID的分区标识,因此无需理会顺序。


1

警告:我在fdisk中尝试了高级修复选项,然后重新启动了系统。因为我的/ dev / sda8变成了/ dev / sda5,并且/ boot / grub并没有因此改变,所以这具有灾难性的影响。

因此,避免此问题的明显解决方法是:

$ fdisk /dev/sda
x
f
w
$ update-grub
$ grub-install

但首先请确保已经安装了grub命令(上述),因为在某些系统中似乎已弃用该命令。


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.

完成!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.