LUKS 加密,无法使用 /etc/crypttab 打开

LUKS 加密,无法使用 /etc/crypttab 打开
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL

text
url --url=http://caching-proxy/repos/rhel8/8.5/rhn/base/unstable
repo --name=cache-rhn-base --baseurl=http://caching-proxy/repos/rhel8/8.5/rhn/base/unstable --install
repo --name=cacherhn-appstream --baseurl=http://caching-proxy/repos/rhel8/8.5/rhn/appstream/unstable --install
lang en_US.UTF-8
keyboard us
rootpw simplePass
timezone Etc/UTC --isUtc
#authconfig --enableshadow --passalgo=sha512 (*authconfig deprecated, use authselect instead)
selinux --enforcing
firewall --disabled

bootloader --location=mbr --append="loglevel=7"
clearpart --all --initlabel
part /boot --fstype=xfs --size=512
part pv.01 --grow --size=1

volgroup vg01 pv.01
logvol / --fstype=xfs --name=lvroot --vgname=vg01 --size=4096 --grow --encrypted --passphrase=SecretPassword

%packages
@core
#osversion: rhel8
# Default package to be removed... eg:
-firewalld
#-omit random pkgs

# start packages
clevis
clevis-dracut
clevis-luks
dracut-config-generic   # we need this image to be portable
dracut-norescue         # rescue mode isn't useful here
## bunch of pkgs, omitted
%end

%post --interpreter=/bin/bash
INITIAL_LUKS_PWFILE=/boot/temp-keyfile
echo SecretPassword > ${INITIAL_LUKS_PWFILE}
udevadm settle
#echo "/dev/mapper/vg01-lvroot / xfs defaults 0 0" >> /etc/fstab
blkid /dev/mapper/vg01-lvroot -s UUID -o value > /tmp/luks-uuid
echo "vg01-lvroot UUID=$(cat /tmp/luks-uuid) ${INITIAL_LUKS_PWFILE} luks,keyfile-timeout=30s" > /etc/crypttab

KERNEL_VERSION=$(rpm -q kernel --qf '%{V}-%{R}.%{arch}\n')
INITRAMFS_FILE=/boot/initramfs-$KERNEL_VERSION.img
DRACUT_CMD="dracut --install ${INITIAL_LUKS_PWFILE} --install /etc/crypttab --verbose -f $INITRAMFS_FILE $KERNEL_VERSION"
echo ${DRACUT_CMD} > /tmp/dracut-cmd     
eval ${DRACUT_CMD} &> /tmp/dracut-output #run the command, save the output.
%end

上述操作确实会导致/etc/crypttab文件中的一个条目/mnt/sysroot/etc/crypttab,它看起来像这样:

luks-<uuid> <uuid> /boot/temp-keyfile luks,keyfile-timeout=30s

但是,它并不能解锁设备,仍然要求我手动输入密码。

我用来尝试诊断问题的一种方法是运行lsinitrd | grep '/etc/crypttab',我注意到它不在 initramfs 中。所以我--install /etc/crypttab在 kickstart 脚本中运行了它,当我 grep 搜索它时,我确实找到了它。然而,这导致图像在启动时(通过 Packer)卡在灰屏背景上的 3 个白点上。(而且,我觉得--install /etc/crypttab没有必要!)

相关内容