我的磁盘布局如下:
- 加密分区
/
- 加密分区
/home
- 未加密分区
/boot
上次我完全重新安装(包括擦除磁盘)Ubuntu 时设置了此功能。现在,升级到最新的 Ubuntu 后,有些东西坏了,我决定从头开始重新安装。但是,由于我有一个单独的分区/home
和另一个分区/
,这两个分区都已加密,我想重复使用它们,而不是从头开始。特别是为了节省备份/home
和全新安装后再次恢复所需的时间。
在安装之前,我解锁了 2 个加密分区。这样我就可以选择这些分区进行新安装。我之所以/
在/home
安装前进行解锁,是因为我无法从安装程序 UI 解锁分区。
一切似乎都安装良好。
但当我重新启动系统时,我从未收到解锁提示。5 点启动画面只出现了一小会儿,然后就变成了提示(initramfs)
。
我该怎么做才能在启动时获得解锁提示?我可以更改/boot
分区中某个文件中的某些设置吗?我在安装过程中需要做一些不同的事情吗?我不介意再重新安装一次(因为它不会花费很多时间,耶!)。我只是不想进行备份/恢复/home
(因为它会花费很多时间,嘘!)。
答案1
问题是/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
现在系统已安装,您可以添加/mnt/ubuntu/etc/crypttab
。它看起来应该像这样:
sda5_crypt UUID=12345678-9abc-def012345-6789abcdef01 none luks
sda6_crypt UUID=87654321-cba9-543210fed-01fedcba9876 none luks
您可以使用 找到 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
然后您就可以重新启动进入新系统了。