在驱动器的开始和结束处进行分区并迁移到较小的 SSD

在驱动器的开始和结束处进行分区并迁移到较小的 SSD

我需要将一个 256GB HDD 迁移到 240GB SSD,但 EFI 分区位于我的 HDD 的最末端。

我已经备份了:

sudo dd if=/dev/sda of=backup.img

但我无法将该图像放入我的 SSD 驱动器,因为该图像是 256GB。

磁盘有 165GB 的数据和 68GB 的​​空白空间以及最后 20MB 的 EFI 分区(抱歉,Windows 应用程序中的标签很粗糙),因此我可以使用 dd 或任何其他 Linux 工具来表示类似以下内容:

sudo dd if=/dev/sda of=/dev/sdb SKIP_SECTORS_FROM_166GB_TO_186GB

我可以使用任何 Linux 工具(parted?)将 EFI 分区 20GB 向左移动并使用 dd 将前 236GB 的数据复制到 SSD 驱动器吗?

(我有 CloneZilla Live USB。)

答案1

当然,如果您有空间,您可以使用 gparted 将分区移到原始驱动器的左侧,然后克隆它。您还可以使用dd两次运行来小心地跳过一个范围:第一次使用count=x参数获取第一部分,第二次使用skip=yandseek=x参数获取源中 y 之后的所有内容并将其复制到从 x 开始的目标。除非您指定,否则单位默认为扇区bs=。您还需要编辑分区表以反映 ESP 的重新定位位置。

答案2

谢谢您的回答!

我尝试使用 parted 和 gparted 移动分区,但两者都无法移动 EFI 分区。所以我做了以下事情:

  1. 我将文件从 /dev/sda3 (D:) 复制到 /dev/sda1 (C:),并删除了 /dev/sda3 (D:) 分区。
  2. 我只有 3 个主分区,因此我在空扇区的开头创建了新的主分区 [我仅检查了 EFI 分区的 gparted 长度(以扇区为单位)以创建具有相同长度的新 FAT32 分区]
  3. 我在 DD 中将所有扇区从 EFI 分区复制到新分区
  4. 我使用 parting 删除了旧的 EFI 分区
  5. 我将所有分区都放在第一个 116GB 的 HDD 中,因此我使用 DD 命令仅将这 116GB 复制到 SSD:

    `sudo dd if=/dev/sda of=/dev/sdb bs=512KB count=237568 status=progress`
    

我将 SSD 驱动器连接到笔记本电脑的 SATA 端口,Windows 启动正常。

这就是我的 SDD 的样子

相关内容