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

Ric*_*ard 5 partition hard-drive

我的主分区已用完,但我删除了一些,现在我想让我的逻辑分区之一成为主分区。我可以使用 gparted 或其他免费工具执行此操作吗?

谢谢

Ada*_*and 6

在你做任何事情之前,做一个完整的金属备份,因为这些类型的过程会出错。

“简单按钮”是24 美元的Acronis Disk Director

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

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

为此,请启动 linux live CD 并运行:

sudo sfdisk -d /dev/sda > partitions.txt
Run Code Online (Sandbox Code Playgroud)

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

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

然后运行:

sudo sfdisk --force /dev/sda < partitions.txt
Run Code Online (Sandbox Code Playgroud)


hlo*_*dal 5

一般的

在某些有限的约束下,可以将逻辑分区转换为主分区。然而,这是一个相当不常见的操作,所以我不知道有任何工具可以在一个操作中开箱即用地支持此操作,尽管您应该能够在 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 |                              |
   + - - - - - - - - +------------------------------+
Run Code Online (Sandbox Code Playgroud)

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

现在从严格的理论角度来看,也许可以将主分区放在扩展中(而不是缩小扩展分区并且只能更改末尾的分区),但是谁知道您会遇到哪些兼容性问题?会由此触发。这将被极少数程序/人(如果有/任何人)认为是合理的分区布局。

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

你的问题

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

执行步骤

  1. 在开始弄乱分区表之前,按原样保存/打印分区表的副本​​。这可以通过我的printpar程序完成,或者在使用单位扇区时使用parted(也可以使用“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 |                              |
   + - - - - - - - - +------------------------------+
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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