我一直在尝试在运行 Kali Linux 2022.3 的 HP EliteBook 850 G8 上使用 TPM2 进行 LUKS 磁盘加密。但是,我正在努力将 TPM2 磁盘解密添加到 Initramfs 中。
到目前为止我已采取的步骤:
- 确保 TPM2 已启用并且可供操作系统访问
- 使用以下命令将 TPM 作为密钥库 1 添加到已加密的硬盘驱动器中
systemd-cryptenroll --tpm2-device=auto /dev/nvme0n1p3
- 通过运行验证 LUKS 设置是否正确
cryptsetup luksDump /dev/nvme0n1p3
失败的原因:
按照上面列出的步骤,我尝试修改/etc/crypttab
以允许在启动期间解锁我的 LUKS2 加密磁盘,类似于 Bitlocker 的工作方式。因此,我将文件更改crypttab
为以下内容:
nvme0n1p3_crypt UUID=<Redacted> none luks,discard,tpm2-device=auto
然后尝试使用 重建 initramfs update-initramfs -u -k all
,这给了我以下错误:
└─# sudo update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-5.18.0-kali5-amd64
cryptsetup: WARNING: nvme0n1p3_crypt: ignoring unknown option 'tpm2-device'
让我困惑的是,我认为这个选项应该存在于 248 及更高版本的 systemd 中。尽管有 v251,但它无法识别此选项。
谁能解释一下这里发生的事情吗?这是基于 Debian 的系统特有的东西还是我遗漏了一些东西?非常感谢任何帮助或提示。
系统环境:
操作系统版本:
└─# lsb_release -a
No LSB modules are available.
Distributor ID: Kali
Description: Kali GNU/Linux Rolling
Release: 2022.3
Codename: kali-rolling
系统版本:
└─# systemd --version
systemd 251 (251.3-1)
+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY -P11KIT -QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified
答案1
您可以切换到dracut
,它或多或少开箱即用地支持此配置。
但有一些注意事项,如果您使其无法启动,请准备好从恢复 shell 修复您的设置。就我而言,dracut 是hostonly="yes"
必需的,因此它将包含/etc/crypttab
在 initrd 映像中。
或者,还有tpm2-initramfs-tool
.它做同样的事情,尽管它可能与 不兼容systemd-cryptenroll
,而且似乎配置起来更困难。