LUKS 分区自动挂载在启动时失败

LUKS 分区自动挂载在启动时失败

我有一个加密的 Ubuntu 14.04 桌面设置。加密的根分区是使用 Ubuntu 安装程序默认参数创建的(选择“擦除磁盘并安装 Ubuntu”和“加密新的 Ubuntu 安装”)。这部分工作正常(它在启动时要求输入密码并打开根分区和交换分区)。

后来我添加了第二个驱动器,使用存储在根分区上的密钥文件单独加密。目的是让它在根分区打开时自动打开。为此,第二个驱动器被添加到 crypttab(通过 UUID)并将其加密文件系统添加到 fstab(通过标签、挂载点/stg)。

在启动时,输入主解密密码后,我得到了这个:安装 /stg 时出错。按 S 跳过安装或按 M 进行手动恢复

奇怪的是,如果我按只需运行mount -a,它就会成功挂载。我没有看到 中有任何可疑之处/var/log/syslog

这是怎么回事?我可以检查什么来诊断问题?


[UPD - 增加了一些细节]该驱动器sdb具有一个分区的 MBR 分区表。使用以下命令初始化加密文件系统:

cryptsetup luksFormat /dev/sdb1 /root/stg.key
cryptsetup luksOpen /dev/sdb1 stg_crypt -d/root/stg.key
mkfs.ext4 /dev/mapper/stg_crypt -Lstg-tmp

在/etc/crypttab中(为简洁起见,实际的 uuid 用文本“uuid-of-...”替换):

# this entry was created by Ubuntu installer
sda5_crypt UUID=uuid-of-sda5 none luks,discard

# this entry was added by me
stg_crypt  UUID=uuid-of-sdb1 /root/stg.key luks,discard

/etc/fstab

# these entries were created by Ubuntu installer
/dev/mapper/ubuntu--vg-root   /      ext4 errors=remount-ro 0 1
UUID=uuid-of-sda1             /boot  ext2 defaults          0 2
/dev/mapper/ubuntu--vg-swap_1 none   swap sw                0 0

# this entry was added by me
LABEL=stg-tmp                 /stg   ext4 errors=remount-ro 1 2

答案1

有趣的是,用设备路径替换中的标签引用fstab可以解决问题!即:LABEL=stg-tmp更改为/dev/mapper/stg_crypt

我还尝试了 UUID 引用,但没有用。因此,显然启动期间的 LABEL 和 UUID 引用对物理分区有效,但对加密分区无效。但它们mount -a对任何分区都有效。

作为解决方案,这并不是很令人满意(例如,它缺乏解释)但它解决了当前的问题,所以我想现在还可以。

答案2

首先想到的是,intramfs 没有看到密钥文件(正常行为)

一些修复包括:

像这里提到的那样,为 /stg 添加/创建备用密码

为 Luks 添加回退功能 (向下滚动到添加后备密码部分)

添加 dd if=/dev/usbkey bs=512 skip=4 count=8 | cryptsetup luksOpen /dev/md0 luksVolume --key-file=- && mount /dev/mapper/luksVolume /mnt/

在创建或使用 cryptsetup-reencrypt 时(在 repos 中但不是默认安装的)

相关内容