我的笔记本电脑最初是 Windows,后来我添加了扩展分区并安装了 Linux。
我现在正在回收更多的 Windows 分区,但是却有一个令人恼火的额外分区。
我认为那/dev/sda1
是 Windows 启动分区(包含文件bootmgr
等BOOTNXT
)。
/dev/sda2
是 Windows 分区。
我认为/dev/sda3
是 Windows 恢复分区(包含目录WindowsRE
)。
/dev/sda4
明明是带linux的扩展分区。
我可以移动/dev/sda3
到 旁边/dev/sda2
,移动/dev/sda4
到 旁边/dev/sda3
然后展开/dev/sda4
,但是,我宁愿移动到/dev/sda2
旁边/dev/sda4
。
是否有可能移动 /dev/sda3
前/dev/sda2
?
我正在考虑一些类似于移动/dev/sda2
到空白处然后用dd
它来复制/dev/sda3
到间隙的事情。
我不确定这种方法,因为我不知道它如何影响分区号和 grub 等。
答案1
/dev/sda3
之前可以搬走吗/dev/sda2
?
可以“移动”现有分区/dev/sda3
,使其重新定位在/dev/sda1
和之间/dev/sda2
,但不能只使用分区编辑器的“移动”命令。
您已经用完了四个 MBR 分区条目,因此对分区 sda1 到 sda4 的任何重新排列都将首先需要删除一个丢失了文件系统和文件的分区。
因此必须对已删除的分区进行文件系统备份和恢复。
涉及的步骤如下:
- 备份 的文件系统
/dev/sda3
。 - 删除
/dev/sda3
。 - 使用分区编辑器“移动”(移位)
/dev/sda3
到右侧。(由于只使用了此分区的 2/5,因此可以先缩小/dev/sda3
(右侧),然后移位/dev/sda3
,但在右侧留出空间,然后扩展(右侧)/dev/sda3
回到其原始大小,这样可以实现时间优化。) - 在和
/dev/sda3
之间的新的未分配区域中创建(并格式化)一个新的。/dev/sda1
/dev/sda2
- 恢复 的文件系统
/dev/sda3
。
我正在考虑一些类似于移动
/dev/sda2
到空白处然后用dd
它来复制/dev/sda3
到间隙的事情。
您不能简单地使用如下命令日重新定位分区。
所有块都将被复制,但分区及其文件系统仍将位于其原始位置,因为分区表尚未更新。
如果您认为自己真的知道自己在做什么:
上面的步骤 #2 应该只会影响分区表,而不会触及分区中的数据。
因此,理论上可以通过修改步骤 #4 来代替备份和恢复:创建一个新的/dev/sda3
,然后日将旧分区的数据(使用 的块地址/dev/sda
)复制到新分区。
答案2
您的磁盘使用 MBR 方案进行分区。MBR 比较老旧,而且有限制:您最多可以有 4 个顶层分区,因此如果您想要更多分区,则需要创建一个可以进一步分区的“扩展分区”。但是,如果您想将分区移出扩展分区或移入扩展分区,或者如果您想将其扩展到扩展分区之外,那么这会变得非常麻烦。
如果您不使用 Windows,我建议您将磁盘转换为 GPT 方案。GPT 的分区限制为 128,您不会很快用完它 :) 对于 Windows,如果您想使用 GPT,您还必须在 UEFI 模式下启动,但 Linux 没有此限制。
第一的,进行备份。我们姊妹网站上的这个答案描述了如何在 Linux 下将 MBR 转换为 GPT(您应该从实时 USB 执行此操作)。重点关注转换磁盘部分 - 您不需要 EFI 系统分区和 GRUB 重新安装,因为您仍将使用 BIOS/CSM 方法启动(尽管 UEFI 启动很棒,您可以考虑一下)。如果一切顺利,您将能够直接启动到 Linux。如果不行,下一步是使用某种救援磁盘或通过 chrooting 到您的本地安装(如果您熟悉该过程)来修复 GRUB。
然后您可以自由移动分区,因为您不再受限于 4 个分区和扩展分区边界。
如果您想要重新排序分区,我推荐的方法是创建一个新分区,然后使用 Clonezilla(或 partclone,后者更高级、级别更低,但可以让您更好地控制该过程)克隆旧分区。请注意,新分区不能小于旧分区。
我再强调一下:进行可靠、可恢复的备份在尝试任何事之前。Clonezilla 也是您的朋友。