![如何在 Linux 上使用预定义 UUID 重新创建加密的 dm-crypt/LUKS 分区?](https://linux22.com/image/1436124/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%8A%E4%BD%BF%E7%94%A8%E9%A2%84%E5%AE%9A%E4%B9%89%20UUID%20%E9%87%8D%E6%96%B0%E5%88%9B%E5%BB%BA%E5%8A%A0%E5%AF%86%E7%9A%84%20dm-crypt%2FLUKS%20%E5%88%86%E5%8C%BA%EF%BC%9F.png)
我有/和交换区使用 dm-crypt/LUKS 加密的 Ubuntu 14.04 LTS(和 Linux Mint 17.1 LTS)。/和交换区住在/dev/mapper/UUID_1和/dev/mapper/UUID_2. 是否有可能重新创建/dev/mapper/UUID(例如在不同的硬盘上)(当然具有相同的 UUID)?这样可以在发生灾难时使用 TAR 恢复系统。如您所知,TAR 记录了复制分区的 UUID。此外,grub.cfg、/etc/fstab 和 initframs 也包含该编号。
sudo tune2fs /dev/mapper/UUID -U UUID
命令不起作用。
cryptsetup luksUUID /设备/——唯一唯一标识符
只能更改外部容器的 UUID。
谢谢您的回复。
答案1
每个加密分区都有两个 UUID。
文件系统的UUID
在 GRUB 中使用/etc/fstab
(因此更改后不要忘记使用sudo update-grub
)。可以使用以下命令进行更改:
sudo tune2fs ‐U "<fsUUID>" /dev/mapper/<luksUUID>
...在哪里是对应 LUKS 分区的 UUID(可以在 中查找/etc/crypttab
)并且<fsUUID>
需要设置文件系统 UUID。例如:
sudo tune2fs ‐U "81db8bc2-6cc1-4272-beab-8c1d667cfa93" /dev/mapper/310919c2-aec9-4641-b3d2-6d523395db34
LUKS 分区的 UUID
用于/etc/crypttab
。可以更改为:
sudo cryptsetup luksUUID --uuid "<luksUUID>" /dev/sdxX
...在哪里是否需要设置 LUKS 分区的 UUID,以及/dev/sdxX是 LUKS 加密的设备名称。例如:
sudo cryptsetup luksUUID --uuid "310919c2-aec9-4641-b3d2-6d523395db34" /dev/sda1
但最好恢复整个 LUKS 标头(如果您不打算更改加密密钥)。LUKS 标头不存储分区大小,因此它可用于恢复到几乎任何分区大小。此外,恢复标头足以重新设置 LUKS 分区格式(即在这种情况下不需要 luksFormat)。可以使用以下方法完成luksHeaderRestore
(备份使用与 非常相同的方式完成luksHeaderBackup
):
sudo cryptsetup luksHeaderRestore --header-backup-file "<HeaderBackupFile>" /dev/sdxX
...在哪里是需要设置的LUKS分区的UUID。例如:
sudo cryptsetup luksHeaderRestore --header-backup-file "/home/user/MyLuksHeader.Backup" /dev/sda1
概括
因此恢复步骤如下:
- 创建新分区。
- 恢复 LUKS 标头。
- 解锁 LUKS 分区
- 使用以下任一方法恢复文件系统:
- 恢复文件系统映像(例如使用
partclone
)。 - 重新创建文件系统:
- 格式化新设备。
- 解压备份。
- 如果需要,恢复文件系统 UUID。
- 恢复文件系统映像(例如使用
还
请注意,使用 LUKS 和文件系统的标签而不是 UUID 可以简化配置并使其更具可读性。
答案2
重新创建隐秘的根据给定的 UUID 进行分区,类似地输入:
sudo cryptsetup luksFormat --verify-passphrase --uuid dec95850-23ad-4f54-b5c2-4f13ea48c571 /dev/sdb4
(使用以下命令加密 /dev/sdb4 分区:隐秘的),
sudo cryptsetup open --type luks /dev/sdb4 sdb4_crypt
(打开卢克斯容器并将其附加为 /dev/mapper/sdb4_crypt),
sudo mke2fs -v -t ext4 -U f65aa2cb-d7a3-4e45-858b-2b12a50e1b45 /dev/mapper/sdb4_crypt
(格式化卢克斯容器作为ext4文件系统并分配给定的 UUID)
mount /dev/mapper/sdb4_crypt /media/<user>/f65aa2cb-d7a3-4e45-858b-2b12a50e1b45
(安装luks容器在给定路径下。
当作业完成后,我们可以卸载容器并关闭容器:
sudo umount /media/<user>/f65aa2cb-d7a3-4e45-858b-2b12a50e1b45
sudo cryptsetup luksClose sdb4_crypt
要使用给定的 UUID 重新创建交换分区:
sudo cryptsetup luksFormat --verify-passphrase --uuid e1baa59a-f24f-450c-a5a8-67f9d2f3338e /dev/sdc2
sudo cryptsetup open --type luks /dev/sdc2 sdc2_crypt
sudo mkswap -U 5313264e-6212-46f5-936d-f903eb2a2231 /dev/mapper/sdc2_crypt
可以使用以下命令关闭容器:
cryptsetup luksClose sdc2_crypt