Initramfs + Luks-仅一个密码提示


2

我要实现的目标:

  • 在启动期间仅被要求输入密码一次;
  • 其他(非根)分区使用/root/目录内的密钥文件。

到目前为止,我取得了以下成就:

  • (A)系统正在启动,但是要求输入两次密码(一次输入/,两次输入/usr)。
  • 或:(B)系统未引导,要求输入一次密码,但随后拒绝安装,/usr说找不到LVM组/卷。我掉进了外壳,可以看到它/root/.keyfile不可用。/尚未安装。

组态

文件: /etc/crypttab

案例A

sdc3_crypt /dev/sdc3 none luks md0_crypt /dev/md0 none luks

情况B

sdc3_crypt /dev/sdc3 none luks md0_crypt /dev/md0 /root/.keyfile luks

什么完全不起作用

  • 创建脚本文件以手动查找打开所需的驱动器:in /etc/initramfs-tools/scripts/local-premount可以在之前调用/,但是in /etc/initramfs-tools/scripts/local-bottom可以在要打开之后调用/usr(因此为时已晚)。

fstab事务中条目的顺序。你确定你/之前安装/usrfstab
文森特·于

这是一个好问题。我认为/是最重要的。我必须等到回家后再确认。
Etienne Bruines

Answers:


0

此Wiki页面上(很遗憾,我找不到德语版本的英文),建议您使用脚本/lib/cryptsetup/scripts/decrypt_derived从打开的根设备生成密钥。我将尝试翻译重要的部分,但是我没有尝试过该过程。

要添加密钥,您必须以root用户身份执行

mkdir /mnt/ram && mount -t ramfs -o size=1m ramfs /mnt/ram && chmod 600 /mnt/ram
/lib/cryptsetup/scripts/decrypt_derived <root_dev> > /mnt/ram/tmp.key && cryptsetup luksAddKey <usr_dev> /mnt/ram/tmp.key && rm /mnt/ram/tmp.key
umount /mnt/ram && rmdir /mnt/ram 

其中,<root_name>作为显示在你的根设备的名称/dev/mapper(可能sdc3_crypt),并且<usr_dev>该装置在那里/usr是(可能/dev/md0)。

crypttab的行是

  <usr_name>         UUID=<UUID>          <root_name>           luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

记得跑步

update-initramfs -u -k all 

更改crypttab之后。

您应该为您的usr设备保留一个“普通”密码,否则,如果您的根设备损坏,您将无法打开它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.