Richard Asked: 2009-08-02 10:19:35 +0800 CST2009-08-02 10:19:35 +0800 CST 2009-08-02 10:19:35 +0800 CST 如何将逻辑分区转换为主分区? 772 我的主分区已满,但我删除了一些,现在我想将我的一个逻辑分区设为主分区。我可以使用 gparted 或其他免费工具执行此操作吗? 谢谢 hard-drive partition 6 个回答 Voted Adam Brand 2009-08-02T11:02:30+08:002009-08-02T11:02:30+08:00 在你做任何事情之前,做一个完整的金属备份,因为这些类型的过程确实出错了。 “简单按钮”是Acronis Disk Director,售价 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 hlovdal 2009-08-03T05:52:23+08:002009-08-03T05:52:23+08:00 一般的 在一些有限的限制下,可以将逻辑分区转换为主分区。然而,这是一个相当少见的操作,所以我不知道有任何工具可以在一个操作中开箱即用地支持它,尽管您应该能够在 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 更改为主分区。 你的问题 你说你有空闲条目来创建一个新的主分区,所以应该没问题。但是,您没有为要转换的逻辑分区指定任何详细信息,因此如果您不提供更多详细信息,我不能说这是否可能。 步骤 在开始弄乱分区表之前保存/打印分区表的副本。这可以使用我的printpar程序来完成,或者在使用单位扇区时使用parted(也可以使用“Fdisk -l”,但这只有在分区从精确的圆柱边界开始时才可靠(传统上一直是这种情况,但是越来越少见))。 确保第 1 点的副本在纸上或您正在修改的磁盘以外的其他存储上可用。 对于以下所有步骤,请确保分区编辑程序在执行上述操作时不会以任何方式接触文件系统(即,对于 parted,您应该使用“mkpart”而不是“mkpartfs”)。 删除所有逻辑分区(例如hda5到hda10),然后删除扩展分区(例如hda4)。 重新创建扩展分区,现在移动开始或结束,以便要更改的分区最终位于扩展分区之外(例如 hda4 覆盖柱面 4700 到 13314 或柱面 5484 到 30400,只是柱面编号不是 100% 可靠的,您应该使用准确的扇区号)。 重新创建除要更改的逻辑分区之外的所有逻辑分区(例如,从 hda6 到 hda10 或从 hda5 到 hda9),确保它们像以前一样在非常精确的位置开始和结束(这就是为什么要对绝对扇区号进行操作)。 重新创建应该更改为主分区的分区,也可以在与以前相同的位置开始/结束。在这一步中,能够给出绝对扇区中的位置非常重要,因为与原始逻辑分区相比,新的主分区通常会创建 63 个扇区。 打印出分区表的新副本并进行比较。唯一的区别应该是新的主分区、扩展分区的开始/结束,以及可能重新编号的逻辑分区。 对于上面的示例,如果原始 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 | | + - - - - - - - - +------------------------------+ 请注意,与原始情况相比,所有剩余的逻辑分区都重新编号。 Rod Smith 2012-12-05T15:06:58+08:002012-12-05T15:06:58+08:00 我的FixParts程序是一个可以完成这项工作的开源工具,尽管会根据 MBR 的限制和当前布局施加的限制限制可以转换的内容。(FixParts 是一个单独的分区表编辑器;它不能缩小或移动分区,所以如果您的主分区彼此挤在一起,彼此之间没有空间,那么您唯一可以转换为逻辑分区的分区就是第一个分区.) Richard 2009-08-02T11:22:58+08:002009-08-02T11:22:58+08:00 我使用了系统救援 cd TestDisk 并在快速扫描后列出了我的所有分区,我将 L 翻转为 P 然后重写了分区表 它很脏,但它有效 greg 2009-09-23T09:51:44+08:002009-09-23T09:51:44+08:00 Paragon Partition Pro 可启动磁盘轻松地将逻辑转换为主磁盘。刚做了。 Hendy Irawan 2011-03-22T00:51:12+08:002011-03-22T00:51:12+08:00 您可以使用分区向导(有免费版本)并按照本文中的说明进行操作。
在你做任何事情之前,做一个完整的金属备份,因为这些类型的过程确实出错了。
“简单按钮”是Acronis Disk Director,售价 24 美元。
另一种方法是编辑分区表。
注意:此过程在使用 EFI 的系统(如 Mac)上不起作用(我不认为)。
为此,请从 linux live CD 启动并运行:
...在您可以写入的文件夹中。这将为您提供一个名为的文件
partitions.txt
,其中包含您的分区表。然后使用您喜欢的文本编辑器编辑该文件,并通过更改数字和顺序将您的逻辑分区放在扩展分区之上。例如,如果您的 sda5 是您要设为主要的分区,请将“sda5”更改为“sda1”(或 2/3/4)并将其余数字向下推。要点是您要确保开始、大小和 id 相同。
然后运行:
一般的
在一些有限的限制下,可以将逻辑分区转换为主分区。然而,这是一个相当少见的操作,所以我不知道有任何工具可以在一个操作中开箱即用地支持它,尽管您应该能够在 parted、fdisk 或类似程序的帮助下自己完成,尽管可能通过手动重新计算分区的开始/结束。
几年前我写了一个程序来打印分区表的内容。假设您的磁盘按以下方式分区:
这里 hda4 是包含逻辑分区的扩展分区。通过缩小 hda4(以覆盖柱面 4700 到 13314 或柱面 5484 到 30400),可以将 hda5 或 hda10 变成主分区。
现在从严格的理论角度来看,也许可以将主分区放在扩展分区内(而不是缩小扩展分区并且只能在末端更改分区),但是谁知道您会遇到哪些兼容性问题会由此触发。这将被极少数的程序/人(如果有的话/任何人)认为是合理的分区布局。
在上面的具体例子中,分区表中除了扩展分区之外已经包含了3个主分区,所以没有留下创建主分区的条目;您必须删除 hda1、hda2 或 hda3 之一才能将 hda5 或 hda10 更改为主分区。
你的问题
你说你有空闲条目来创建一个新的主分区,所以应该没问题。但是,您没有为要转换的逻辑分区指定任何详细信息,因此如果您不提供更多详细信息,我不能说这是否可能。
步骤
在开始弄乱分区表之前保存/打印分区表的副本。这可以使用我的printpar程序来完成,或者在使用单位扇区时使用parted(也可以使用“Fdisk -l”,但这只有在分区从精确的圆柱边界开始时才可靠(传统上一直是这种情况,但是越来越少见))。
确保第 1 点的副本在纸上或您正在修改的磁盘以外的其他存储上可用。
对于以下所有步骤,请确保分区编辑程序在执行上述操作时不会以任何方式接触文件系统(即,对于 parted,您应该使用“mkpart”而不是“mkpartfs”)。
删除所有逻辑分区(例如hda5到hda10),然后删除扩展分区(例如hda4)。
重新创建扩展分区,现在移动开始或结束,以便要更改的分区最终位于扩展分区之外(例如 hda4 覆盖柱面 4700 到 13314 或柱面 5484 到 30400,只是柱面编号不是 100% 可靠的,您应该使用准确的扇区号)。
重新创建除要更改的逻辑分区之外的所有逻辑分区(例如,从 hda6 到 hda10 或从 hda5 到 hda9),确保它们像以前一样在非常精确的位置开始和结束(这就是为什么要对绝对扇区号进行操作)。
重新创建应该更改为主分区的分区,也可以在与以前相同的位置开始/结束。在这一步中,能够给出绝对扇区中的位置非常重要,因为与原始逻辑分区相比,新的主分区通常会创建 63 个扇区。
打印出分区表的新副本并进行比较。唯一的区别应该是新的主分区、扩展分区的开始/结束,以及可能重新编号的逻辑分区。
对于上面的示例,如果原始 hda3 分区被删除(以提供创建主分区的空闲条目)并将 hda5 转换为主分区(然后变为 hda3),则布局如下:
请注意,与原始情况相比,所有剩余的逻辑分区都重新编号。
我的FixParts程序是一个可以完成这项工作的开源工具,尽管会根据 MBR 的限制和当前布局施加的限制限制可以转换的内容。(FixParts 是一个单独的分区表编辑器;它不能缩小或移动分区,所以如果您的主分区彼此挤在一起,彼此之间没有空间,那么您唯一可以转换为逻辑分区的分区就是第一个分区.)
我使用了系统救援 cd TestDisk 并在快速扫描后列出了我的所有分区,我将 L 翻转为 P 然后重写了分区表
它很脏,但它有效
Paragon Partition Pro 可启动磁盘轻松地将逻辑转换为主磁盘。刚做了。
您可以使用分区向导(有免费版本)并按照本文中的说明进行操作。