TPM 2.0 Install

Hello everyone…I have been trying to experiment with the TPM 2.0 modules in my computers to see if I can make Garuda run with them. I have had little success, and I know I have asked this question before (found here). However, I keep trying to fight with it and have no success.

So, to prevent me from blowing everything up, I have built a virtual machine to try and perfect the process and add it to my Joplin notes before I make things so much more worse for myself. And, if somehow it doesn’t work out well for me after following instructions, then I have made an image where I can just simply reset the process again and again and so fourth as you can see here…

Now, lets get the information that is expected of me out there first:

 ╭─fenris@tpm in ~ as 🧙 took 0s
 ╰─λ sudo garuda-inxi
System:
  Kernel: 6.18.7-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 15.2.1
    clocksource: tsc avail: hpet,acpi_pm
    parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
    root=UUID=877b7c0d-e9fb-425a-b9d7-216cbda173df rw rootflags=subvol=@
    quiet rd.luks.uuid=0f6e405e-edf6-4b98-bc2d-9f8230d0795a loglevel=3
  Desktop: Xfce v: 4.20.1 tk: Gtk v: 3.24.51 wm: xfwm4 v: 4.20.0
    with: xfce4-panel tools: xfce4-screensaver dm: LightDM v: 1.32.0
    Distro: Garuda base: Arch Linux
Machine:
  Type: Vmware System: VMware product: VMware20,1 v: N/A serial: <filter>
    Chassis: No Enclosure type: 1 serial: N/A
  Mobo: Intel model: 440BX Desktop Reference Platform serial: N/A
    uuid: cf154d56-6383-30ad-3479-ea6a36b5e79a Firmware: UEFI vendor: VMware
    v: VMW201.00V.24866131.B64.2507211911 date: 07/21/2025
CPU:
  Info: model: AMD Ryzen 9 6900HX with Radeon Graphics bits: 64 type: MCP SMP
    arch: Zen 3+ gen: 3 level: v3 note: check built: 2022 process: TSMC n6 (7nm)
    family: 0x19 (25) model-id: 0x44 (68) stepping: 1 microcode: 0xA404108
  Topology: cpus: 2x dies: 1 clusters: 1 cores: 4 smt: <unsupported> cache:
    L1: 2x 256 KiB (512 KiB) desc: d-4x32 KiB; i-4x32 KiB L2: 2x 2 MiB (4 MiB)
    desc: 4x512 KiB L3: 2x 16 MiB (32 MiB) desc: 1x16 MiB
  Speed (MHz): avg: 3294 min/max: N/A base/boost: 3141/3141 volts: 3.3 V
    cores: 1: 3294 2: 3294 3: 3294 4: 3294 5: 3294 6: 3294 7: 3294 8: 3294
    bogomips: 52700
  Flags-basic: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3
  Vulnerabilities: <filter>
Graphics:
  Device-1: VMware SVGA II Adapter driver: vmwgfx v: 2.21.0.0 ports:
    active: Virtual-1 empty: Virtual-2, Virtual-3, Virtual-4, Virtual-5,
    Virtual-6, Virtual-7, Virtual-8 bus-ID: 00:0f.0 chip-ID: 15ad:0405
    class-ID: 0300
  Display: x11 server: X.Org v: 21.1.21 compositor: xfwm4 v: 4.20.0 driver:
    X: loaded: modesetting unloaded: fbdev alternate: vesa,vmware gpu: vmwgfx
    display-ID: :0.0 screens: 1
  Screen-1: 0 s-res: 1904x887 s-dpi: 96 s-size: 503x234mm (19.80x9.21")
    s-diag: 555mm (21.84")
  Monitor-1: Virtual-1 res: mode: 1904x887 hz: 60 scale: 100% (1) size: N/A
    modes: max: 1904x887 min: 640x480
  API: OpenGL Message: Unable to show GL data. glxinfo is missing.
  Info: Tools: de: xfce4-display-settings x11: xdpyinfo, xprop, xrandr
Audio:
  Device-1: Ensoniq ES1371/ES1373 / Creative Labs CT2518 driver: snd_ens1371
    v: kernel bus-ID: 02:02.0 chip-ID: 1274:1371 class-ID: 0401
  API: ALSA v: k6.18.7-zen1-1-zen status: kernel-api tools: N/A
  Server-1: PipeWire v: 1.4.10 status: n/a (root, process) with:
    1: pipewire-pulse status: active 2: wireplumber status: active
    3: pipewire-alsa type: plugin 4: pw-jack type: plugin
    tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Intel 82371AB/EB/MB PIIX4 ACPI vendor: VMware Virtual Machine
    type: network bridge driver: N/A modules: i2c_piix4 port: N/A
    bus-ID: 00:07.3 chip-ID: 8086:7113 class-ID: 0680
  Device-2: Intel 82545EM Gigabit Ethernet vendor: VMware PRO/1000 MT
    Single Port driver: e1000 v: kernel port: 1040 bus-ID: 02:01.0
    chip-ID: 8086:100f class-ID: 0200
  IF: ens33 state: up speed: 1000 Mbps duplex: full mac: <filter>
  Info: services: NetworkManager, smbd, systemd-timesyncd
Drives:
  Local Storage: total: 36 GiB used: 8.92 GiB (24.8%)
  SMART Message: Required tool smartctl not installed. Check --recommends
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: VMware model: Virtual NVMe Disk
    VMware NVME size: 36 GiB block-size: physical: 512 B logical: 512 B
    speed: 128 Gb/s lanes: 32 tech: SSD serial: <filter> fw-rev: 1.4
    temp: 29.9 C scheme: GPT
Partition:
  ID-1: / raw-size: 35.7 GiB size: 35.7 GiB (100.00%) used: 8.92 GiB (25.0%)
    fs: btrfs block-size: 4096 B dev: /dev/dm-0 maj-min: 253:0
    mapped: luks-0f6e405e-edf6-4b98-bc2d-9f8230d0795a
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 984 KiB (0.3%) fs: vfat block-size: 512 B dev: /dev/nvme0n1p1
    maj-min: 259:1
  ID-3: /home raw-size: 35.7 GiB size: 35.7 GiB (100.00%)
    used: 8.92 GiB (25.0%) fs: btrfs block-size: 4096 B dev: /dev/dm-0
    maj-min: 253:0 mapped: luks-0f6e405e-edf6-4b98-bc2d-9f8230d0795a
  ID-4: /var/log raw-size: 35.7 GiB size: 35.7 GiB (100.00%)
    used: 8.92 GiB (25.0%) fs: btrfs block-size: 4096 B dev: /dev/dm-0
    maj-min: 253:0 mapped: luks-0f6e405e-edf6-4b98-bc2d-9f8230d0795a
  ID-5: /var/tmp raw-size: 35.7 GiB size: 35.7 GiB (100.00%)
    used: 8.92 GiB (25.0%) fs: btrfs block-size: 4096 B dev: /dev/dm-0
    maj-min: 253:0 mapped: luks-0f6e405e-edf6-4b98-bc2d-9f8230d0795a
Swap:
  Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: zram size: 7.71 GiB used: 0 KiB (0.0%) priority: 100
    comp: zstd avail: lzo-rle,lzo,lz4,lz4hc,deflate,842 dev: /dev/zram0
Sensors:
  Src: lm-sensors+/sys Message: No sensor data found using /sys/class/hwmon
    or lm-sensors.
Info:
  Memory: total: 8 GiB available: 7.71 GiB used: 1.52 GiB (19.7%)
  Processes: 378 Power: uptime: 11m states: freeze,standby,mem,disk
    suspend: s2idle avail: shallow wakeups: 0 hibernate: platform
    avail: shutdown, reboot, suspend, test_resume image: 3.07 GiB
    services: upowerd,xfce4-power-manager Init: systemd v: 259
    default: graphical tool: systemctl
  Packages: pm: pacman pkgs: 1238 libs: 355 tools: paru Compilers:
    gcc: 15.2.1 Shell: Bash (sudo) v: 5.3.9 running-in: xfce4-terminal
    inxi: 3.3.40
Garuda (2.12.3-2):
  System install date:     2026-01-31
  Garuda release:          250801
  Last full system update: 2026-01-31
  Is partially upgraded:   No
  Relevant software:       snapper NetworkManager dracut garuda-hardware-profile-standard garuda-hardware-profile-standard-x11 garuda-hardware-profile-vm
  Windows dual boot:       No/Undetected
  Failed units:            
--- System Health Check Report ---
25/26 checks run in 2.64 seconds ⌛
Powered by garuda-health 🦅

✅ System health check passed. No issues found.

 ╭─fenris@tpm in ~ as 🧙 took 7s
 ╰─λ 

What I have been trying to follow: systemd-cryptenroll

I have also been trying to follow this video here: https://www.youtube.com/watch?v=rcXV3MNwaao

So far, I was able to get to this stage here:

 ╭─fenris@tpm in ~ as 🧙 took 1m28s
 ╰─λ systemd-cryptenroll --tpm2-device=list
PATH        DEVICE     DRIVER 
/dev/tpmrm0 VMW0004:00 tpm_tis

 ╭─fenris@tpm in ~ as 🧙 took 0s
 ╰─λ systemd-cryptenroll --tpm2-device=/dev/tpmrm0
Block device backing /var/ is not a LUKS2 device.

 ╭─fenris@tpm in ~ as 🧙 took 0s
[🔴] × 

So what I am trying to do is, unlock the system with a password like you normally do when you encrypt Linux. However, I would like it to also use what ever is coming off that TPM to add to the unlocking process.

To make it clear, I’m looking to use --tpm2-with-pin=BOOL so TPM 2.0 keys + a password is used to unlock the drive and continue to load Garuda. What I’m expecting to see is the following in the image below, but also uses TPM 2.0 keys…

Does anyone know how to properly do this in Garuda or could please guide me through the process?

Thank you

1 Like