如何将逻辑分区转换为主分区?

如何将逻辑分区转换为主分区?

我的主分区已经满了,但我删除了一些,现在我想将其中一个逻辑分区设为主分区。我可以使用 gparted 或其他免费工具来做到这一点吗?

谢谢

答案1

在做任何事情之前,请先进行完整的金属备份,因为这些类型的流程很容易出错。

“轻松按钮”是Acronis 磁盘管理器售价 24 美元。

另一种方法是编辑分区表。

注意:我不认为此过程在使用 EFI 的系统(例如 Mac)上有效。

为此,从 Linux Live CD 启动并运行:

sudo sfdisk -d /dev/sda > partitions.txt

...在您可以写入的文件夹中。这将为您提供一个名为的文件,partitions.txt其中包含您的分区表。然后使用您喜欢的文本编辑器编辑该文件,并通过更改数字和顺序将逻辑分区置于扩展分区之上。

例如,如果您要将 sda5 设为主分区,请将“sda5”更改为“sda1”(或 2/3/4),并将其余数字向下推。重点是要确保起始、大小和 ID 相同。

然后运行:

sudo sfdisk --force /dev/sda < partitions.txt

答案2

一般的

在某些有限的限制下,可以将逻辑分区转换为主分区。然而,这是一个相当不常见的操作,所以我不知道有任何工具可以在一个操作中立即支持这一操作,尽管您应该能够借助 parted、fdisk 或类似程序自行完成此操作,尽管可能通过手动重新计算分区的开始/结束来实现。

几年前我写道一个程序打印分区表的内容。假设您的磁盘按以下方式分区:

                      Disk /dev/hda (CHS=30401/255/63)
                      WDC WD3200JS-00PDB0

                     +------------------------------+
            0 - 1043 |             hda1             |   8189 Mb
                     +------------------------------+
         1044 - 2087 |             hda2             |   8189 Mb
                     +------------------------------+
         2088 - 4699 |             hda3             |  20489 Mb
   + - - - - - - - - +------------------------------+
   .     4700 - 5483 |             hda5             |   6150 Mb
   .                 +------------------------------+
   .     5484 - 5999 |             hda6             |   4048 Mb
   .                 +------------------------------+
   .     6000 - 7044 |             hda7             |   8197 Mb
   .                 +------------------------------+
   .     7045 - 8089 |             hda8             |   8197 Mb
h d a 4              +------------------------------+
   .            8090 |             hda9             |  40986 Mb
   .           13314 |                              |
   .                 +------------------------------+
   .           13315 |                              |
   .                 |                              |
   .                 |            hda10             | 134027 Mb
   .                 |                              |
   .           30400 |                              |
   + - - - - - - - - +------------------------------+

这里 hda4 是包含逻辑分区的扩展分区。通过缩小 hda4(覆盖磁柱 4700 到 13314 或磁柱 5484 到 30400),可以将 hda5 或 hda10 设为主分区。

现在从严格的理论角度来看,也许可以将主分区放在扩展分区内(而不是缩小扩展分区并只能更改末尾的分区),但谁知道这会引发多少兼容性问题。只有极少数程序/人员(如果有的话)会认为这是一种合理的分区布局。

在上面的具体例子中,分区表除了扩展分区之外已经包含 3 个主分区,因此没有剩余的条目来创建主分区;您必须删除 hda1、hda2 或 hda3 中的一个,才能将 hda5 或 hda10 更改为主分区。

你的问题

您说您有空闲条目来创建新的主分区,所以应该没问题。但是您没有指定要转换的逻辑分区的任何详细信息,因此如果您不提供更多详细信息,我无法判断这是否可行。

步骤

  1. 在开始处理分区表之前,请保存/打印一份原样的分区表副本。这可以用我的打印程序,或者分开使用单位扇区时(“Fdisk -l”也可以使用,但这仅在分区从精确的圆柱边界开始时才可靠(传统上一直如此,但变得越来越不常见))。

  2. 确保第 1 点的副本可在纸上或您正在修改的磁盘以外的其他存储器上找到。

  3. 对于以下所有步骤,请确保分区编辑程序在执行上述操作时不会以任何方式触碰文件系统(例如,对于 parted,您应该使用“mkpart”而不是“mkpartfs”)。

  4. 删除所有逻辑分区(例如hda5至hda10),然后删除扩展分区(例如hda4)。

  5. 重新创建扩展分区,现在移动起始或结束位置,以便要更改的分区位于扩展分区之外(例如,hda4 覆盖磁柱面 4700 到 13314 或磁柱面 5484 到 30400,只是磁柱面号不是 100% 可靠的,您应该使用精确的扇区号)。

  6. 重新创建除需要更改的逻辑分区之外的所有逻辑分区(例如,将 hda6 更改为 hda10 或将 hda5 更改为 hda9),并确保它们开始和结束的位置与之前完全相同(这就是为什么您要对绝对扇区号进行操作)。

  7. 重新创建应更改为主分区的分区,起始/结束位置与之前完全相同。在此步骤中,能够给出绝对扇区中的位置非常重要,因为新主分区通常会与原始逻辑分区的位置偏移 63 个扇区。

  8. 打印出分区表的新副本并进行比较。唯一的区别应该是新的主分区、扩展分区的开始/结束,以及可能的逻辑分区的重新编号。


对于上面的例子,如果删除了原来的 hda3 分区(以便为创建主分区提供空闲条目),并将 hda5 转换为主分区(然后变为 hda3),则布局将如下所示:

                     +------------------------------+
            0 - 1043 |             hda1             |   8189 Mb
                     +------------------------------+
         1044 - 2087 |             hda2             |   8189 Mb
                     +------------------------------+
         2088 - 4699 |            unused            |  20489 Mb
                     +------------------------------+
         4700 - 5483 |             hda3             |   6150 Mb
   + - - - - - - - - +------------------------------+
   .     5484 - 5999 |             hda5             |   4048 Mb
   .                 +------------------------------+
   .     6000 - 7044 |             hda6             |   8197 Mb
   .                 +------------------------------+
   .     7045 - 8089 |             hda7             |   8197 Mb
h d a 4              +------------------------------+
   .            8090 |             hda8             |  40986 Mb
   .           13314 |                              |
   .                 +------------------------------+
   .           13315 |                              |
   .                 |                              |
   .                 |             hda9             | 134027 Mb
   .                 |                              |
   .           30400 |                              |
   + - - - - - - - - +------------------------------+

请注意,与原始情况相比,所有剩余的逻辑分区都重新编号。

答案3

我的修复零件程序是一个开源工具,可以完成这项工作,尽管根据 MBR 的限制和当前布局的限制,可以转换的内容会受到限制。(FixParts 是一个分区表编辑器;它不能缩小或移动分区,因此如果您的主分区都挤在一起,中间没有空间,那么您唯一可以转换为逻辑分区的就是第一个分区。)

答案4

Paragon Partition Pro 可启动磁盘可轻松将逻辑磁盘转换为主磁盘。刚刚就做到了。

相关内容