重新安装到现有的加密分区

dec*_*yte 5 encryption boot luks system-installation reinstall

我的磁盘布局是这样的:

  • 加密分区 /
  • 加密分区 /home
  • 未加密分区 /boot

不久前我对 Ubuntu 进行了完整的重新安装(包括擦除的磁盘)时,我设置了这个。现在,升级到最新的 Ubuntu 后,有些东西坏了,我决定从头开始重新安装。但是,由于我有一个单独的分区 for/home和另一个分区 for /,它们都已经加密,我想重用这些,而不是从头开始。特别是为了节省备份我的时间/home并在全新安装后再次恢复它。

在通过安装程序之前,我解锁了 2 个加密分区。这使我对这些选择//home新的安装。我执行此预安装解锁是因为我无法从安装程序 UI 解锁分区。

一切似乎都安装得很好。

但是当我重新启动进入系统时,我从未收到解锁提示。5 点启动闪屏只是存在一段时间,然后它下降到(initramfs)提示。

我该怎么做才能在启动时获得解锁提示?我可以更改/boot分区中某个文件中的某些设置吗?我需要在安装过程中做一些不同的事情吗?我不介意再重新安装一次(因为它不需要很多时间,是的!)。我只是不想做备份/恢复/home(因为它需要很多时间,嘘!)。

小智 8

问题是/etc/crypttab在新系统中没有正确设置。您可以通过启动到实时环境然后安装新系统来修复它。以下是您需要执行的操作的概述,但可能需要为您的系统更改设备名称。

$ sudo -i
# cryptsetup open /dev/sda5 sda5_crypt # For root partition
# cryptsetup open /dev/sda6 sda6_crypt # For home partition
# lvchange -ay  # activates the logical volumes if you use llvm
# mkdir /mnt/ubuntu
# mount /dev/mapper/sda5_crypt /mnt/ubuntu
# mount /dev/mapper/sda6_crypt /mnt/ubuntu/home
# mount /dev/sda1 /mnt/ubuntu/boot
# mount --bind /dev /mnt/ubuntu/dev
# mount --bind /sys /mnt/ubuntu/sys
# mount -t proc none /mnt/ubuntu/proc
Run Code Online (Sandbox Code Playgroud)

现在系统已安装,您可以添加/mnt/ubuntu/etc/crypttab. 它应该看起来像这样:

sda5_crypt UUID=12345678-9abc-def012345-6789abcdef01 none luks
sda6_crypt UUID=87654321-cba9-543210fed-01fedcba9876 none luks
Run Code Online (Sandbox Code Playgroud)

您可以使用 找到 UUID ls -l /dev/disk/by-uuid。请注意,使用的 UUID 应该属于加密分区,而不是解密分区。

您还应该查看/mnt/ubuntu/etc/fstab并确保解密的分区由sdaX_crypt您在 中分配的名称引用/mnt/ubuntu/etc/crypttab。如果您在安装之前在 OS 安装程序中解密了设备,则它们可能会被其他一些名称所引用,而不是您自己指定的名称(例如luks-<uuid>)。如果你没有这样做,你可能会cryptsetup: lvm is not available在启动过程中收到一条错误消息。

最后,您可以 chroot 进入新系统以更新 initramfs。

# chroot /mnt/ubuntu /bin/bash
# update-initramfs -u
Run Code Online (Sandbox Code Playgroud)

然后您就可以重新启动进入新系统了。

  • 我不明白为什么你将 `dev`、`sys` 和 `proc` 挂载到 `/boot` 而不是 `/`。当我改变这个时,一切对我来说都很好。如果您同意这是一个错误,请相应地[编辑]您的答案。(抄送@decibyte) (5认同)