将加密的 Ubuntu 从旧 HDD 传输到新 SSD

将加密的 Ubuntu 从旧 HDD 传输到新 SSD

我在旧硬盘上安装了带 LUKS 加密的 Ubuntu 18.04。我没有隐藏任何东西,只是在安装过程中要求我设置密码,我照做了。我决定升级并购买了 SSD。我想将 Ubuntu 连同所有设置一起传输到新的 SSD。我有一个便携式硬盘和可启动的 USB 闪存驱动器,里面有其他 Ubuntu。如果我从这个闪存驱动器启动并创建磁盘映像(使用 gnome-disk 实用程序),我可以将此映像还原到新的 ssd 吗?Ubuntu 可以在新的 SSD 上毫无问题地运行吗?

我也想知道,将来我可以用新电脑做类似的技巧吗?或者重新安装 Ubuntu 是避免与固件、驱动程序等硬件冲突的最佳方法吗?

答案1

您所要求的虽然比您预期的稍微复杂一些,但也是可能的。我管理多台工作用电脑,并已将使用 LUKS 加密的映像克隆到其他品牌/型号的机器上,并取得了巨大成功。

选项 1:使用 dd 并将 HDD 直接克隆到 SSD

如果您不熟悉备份和恢复系统映像,则此选项最简单且最有可能成功。 但是,它可能需要您获得一个适配器,以便您可以通过 USB 将 SSD 连接到计算机(类似这样的如果是 SATA 驱动器)。此外,您的 SSD 大小必须等于或大于您的 HDD。

基本上,您可以通过 USB 端口将 SSD 连接到计算机,然后从连接了 SSD 驱动器的 Live USB 启动。您的内置 HDD 可能位于 ,/dev/sda而通过 USB 连接的 SSD 可能位于/dev/sdb/dev/sdc。现在要克隆驱动器,您只需打开终端并运行
sudo dd if=/dev/sda of=/dev/sdb bs=4M status=progress,假设您的 SSD 是/dev/sdb

这将把您的 HDD 逐位克隆到您的 SSD 上。这个过程可能需要很长时间!完成后,只需从计算机中移除 HDD 并将其替换为 SSD。一切都应该启动得完全相同,只是速度更快。
 

选项 2:使用 gnome-disks 克隆整个磁盘(OP 建议的)

这个选项可能是第二简单的。它还要求您的 SSD 大小等于或大于您的 HDD,您将保存映像的外部驱动器必须至少具有与 HDD 大小相同的可用空间。这是因为 gnome-disks 本质上会创建现有系统的逐位副本。

对于其他任何人来说,这个过程都非常简单。使用实时 USB 启动系统。打开 gnome-disks 实用程序。连接另一个具有足够可用空间的存储设备。在实用程序中选择内部 HDD。单击右上角的汉堡菜单并选择“创建磁盘映像...”保存映像后,关闭机器并交换 HDD 和 SSD。然后重新启动实时 USB 并重新打开 gnome-disks 实用程序。选择 SSD,单击汉堡菜单并恢复磁盘映像。
 

选项 3:使用 partclone 克隆单个未加密/解密的分区

这是迄今为止最复杂且风险最大的选项,但经过一些研究还是可行的。这种方法有几个额外的好处。第一,如果您的系统有大量可用空间,磁盘映像将小很多。第二,如果您真的不想要磁盘加密,您可以删除它,尽管您不必这样做。第三,此选项使您能够迁移到比 HDD 小但有足够的空间容纳系统和 HDD 上的所有文件的 SSD。

这是一个很好的起点。我将概述您在这种特定情况下将采取的流程:

  1. 使用实时 USB 启动您的系统。

  2. 使用 dd 备份硬盘的前 2MB。这将存储有关分区表的所有信息
    dd if=/dev/sda of=/path/to/external/drive/sda.mbr bs=2M count=1

  3. 在 HDD 上备份您的 LUKS 标头(仅当您想使用加密恢复时)。
    cryptsetup luksHeaderBackup ...将在这里为您提供帮助。

  4. 解锁你的 LUKS 分区

  5. 只有当你迁移到较小的 SSD 时,调整分区大小,使其适合 SSD。LVM 和 LUKS 有工具可帮助完成此过程。请注意,如果此处出现问题,您可能会丢失现有系统。

  6. 对于每个分区,运行 partclone,保存每个分区的映像(带或不带压缩)。请注意,解密的 LUKS 分区列在 /dev/mapper/ 中,而不是 /dev/sdaX 中。

  7. 关闭计算机,将 HDD 换成 SSD,然后使用实时 USB 重新启动

  8. 使用 dd 将 .mbr 文件转储到新驱动器上
    dd if=/path/to/external/drive/sda.mbr of=/dev/sda bs=2M

  9. 运行 partprobe 来检测我们刚刚在 /dev/sda 上创建的分区

  10. 将 LUKS 标头恢复到应为 LUKS 分区的位置

  11. 解锁 LUKS 分区,记下它在 /dev/mapper/ 中的设备

  12. 使用 partclone 将所有内容恢复到其正确的分区,确保将解密的分区恢复到 /dev/mapper/[YOUR_DECRYPTED_LUKS_DEVICE]

  13. 对所有克隆的文件系统运行文件系统检查

你终于完成了!这个步骤有很多可能出错的地方,所以如果你对我上面描述的操作不熟悉的话,我不建议你这样做。

如果您要这样做,摆脱系统加密,您将跳过步骤 9 和 10,并将解密的分区映像恢复到常规分区。然后,您必须挂载并 chroot 到已安装的系统,删除文件/etc/crypttab并运行update-initramfs -k all -u,以便您的启动映像知道您不再使用加密。您还需要更新/etc/fstab文件以指向您的(根)分区的正确设备/

相关内容