惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
J
Java Code Geeks
G
Google Developers Blog
美团技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
月光博客
月光博客
B
Blog
WordPress大学
WordPress大学
云风的 BLOG
云风的 BLOG
博客园_首页
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
Jina AI
Jina AI
S
SegmentFault 最新的问题
H
Help Net Security
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
Google DeepMind News
Google DeepMind News

Arch Linux Forums

Avidemux crashes without strace / Applications & Desktop Environments how to apply patches with non-linux linends / Newbie Corner Replicating CachyOS on vanilla Arch (or at least getting close) / Arch Discussion What's arch linux GUI package manager ? / Newbie Corner Hibernation failing due to insufficient memory / System Administration profiledef.sh editting question / Installation trying to script kde plasma wallpaper settings / Programming & Scripting Looking for new Audacious package maintainer / Creating & Modifying Packages issues installing arch with LUKS2 encryption / Newbie Corner QEMU PXE booting does not work with OVMF.4m.fd / Applications & Desktop Environments Wired lan regular disconnect / Newbie Corner Need Help setting up ARCH in my G16 G634JZR iwlwifi started failing consistently, trying to determine root cause Windows randomly jumping between monitors after GNOME 50 update No display via DP or HDMI after boot. / Kernel & Hardware how to change acpi platform_profile? / Newbie Corner Linux denied all kernel modules which not loaded right now Use iPhone as Webcam for Arch Linux Video Output Failure on nvidia-580xx-dkms on TTY --> Desktop switch (Page 2) / Kernel & Hardware I was going to rant ..WINE32 Sabotage compliments of Arvind Krishna / Arch Discussion [SOLVED] LUKS drive auto unlocked by TPM when expected not to / Networking, Server, and Protection Hibernate/suspend from X = dark panel; from TTY = works (ASUS G14, hyb (Page 2) / Laptop Issues Headphone jack noise/buzz / Newbie Corner segmentation fault in cc1plus when building CLK / AUR Issues, Discussion & PKGBUILD Requests Console alternative to meld / GNU/Linux Discussion Problem with paru git clone / Newbie Corner XKB questions / Applications & Desktop Environments gnome-keyring-daemon is not working correctly / Applications & Desktop Environments [SOLVED] Steam opens and immediately closes constantly / Newbie Corner Firefox rounded edges on Sway / Applications & Desktop Environments
Will this TPM setup work? / System Administration
jwodder · 2026-06-28 · via Arch Linux Forums

I'm putting together a plan for a future Arch installation, and I'd like people with more knowledge & experience to audit my steps for setting up TPM to automatically decrypt a root LUKS partition on boot.

It's my understanding that binding to just PCR 7 when enrolling in TPM results in a TPM setup that can be bypassed (See https://oddlama.org/blog/bypassing-disk … m2-unlock/), and the wiki's suggestion of also binding to PCR 15 can apparently be bypassed as well.  Thus, I'm planning to also bind to PCR 11, but the wiki doesn't do the best job covering this, so I'd like to get my steps checked.

In addition to setting up TPM securely, the goal here includes doing it in such a way that no manual re-enrollment is required after a kernel upgrade.

Scenario

The steps in dm-crypt/Encrypting an entire system: LUKS on a partition with TPM2 and Secure Boot have been followed, up to but not including "Enrolling the TPM".  This includes using sbctl to sign the UKI and boot loader.

The TPM Setup

For these steps, assume that the encrypted LUKS partition (which will be decrypted and mounted as the filesystem root) is /dev/sda2.

  1. Edit the kernel parameters in /etc/kernel/cmdline to include:

    rd.luks.options=tpm2-measure-pcr=yes,tpm2-device=auto
  2. Install ukify, qrencode, and tpm2-tss

  3. Create a high-entropy recovery key for the LUKS partition by running:

    sudo systemd-cryptenroll --recovery-key /dev/sda2

    This will print out a QR code that can be scanned to obtain the key.

  4. Create the keys that will be used to sign the Unified Kernel Image for PCR 11:

    cd /etc/systemd
    sudo ukify genkey \
        --pcr-private-key=tpm2-pcr-private-key.pem \
        --pcr-public-key=tpm2-pcr-public-key.pem
    sudo ukify genkey \
        --pcr-private-key=tpm2-pcr-private-key-initrd.pem \
        --pcr-public-key=tpm2-pcr-public-key-initrd.pem
  5. Configure ukify by creating the file /etc/kernel/uki.conf with the contents:

    [PCRSignature:all]
    PCRPrivateKey=/etc/systemd/tpm2-pcr-private-key.pem
    PCRPublicKey=/etc/systemd/tpm2-pcr-public-key.pem
    
    [PCRSignature:initrd]
    Phases=enter-initrd
    PCRPrivateKey=/etc/systemd/tpm2-pcr-private-key-initrd.pem
    PCRPublicKey=/etc/systemd/tpm2-pcr-public-key-initrd.pem

    I am assuming that I don't need to configure signing of the kernel in a "UKI" section here, as sbctl should take care of that via its mkinitcpio post-hook.

  6. Finally, enroll:

    sudo systemd-cryptenroll \
        --wipe-slot=0 \
        --tpm2-device=auto \
        --tpm2-pcrs=7+15:sha256=0000000000000000000000000000000000000000000000000000000000000000 \
        --tpm2-public-key=/etc/systemd/tpm2-pcr-public-key-initrd.pem \
        --tpm2-public-key-pcrs=11 \
        /dev/sda2
Questions
  • Will this properly enroll the LUKS key in the TPM so that the root partition is automatically unlocked on boot?

  • Will this continue to work after a kernel upgrade or initramfs regeneration using mkinitcpio without having to manually run systemd-cryptenroll?

  • Do I need the "PCRSignature:all" section and its keys, or can I get rid of them?

  • Can I safely add the "rd.luks.options" kernel parameters to /etc/kernel/cmdline before setting up TPM?  Assume there is one or more reboot in between.

  • Does the use of ukify (which uses systemd-measure, which seems to assume systemd-stub is in use) limit my boot loader options in any way, or does this only work with systemd-boot?