# Generate a random key for HMACdd if=/dev/urandom of=/tmp/integrity-key.bin bs=32 count=1# Format with integrity using HMAC-SHA256integritysetup format --integrity-key-file /tmp/integrity-key.bin \
--tag-size 32 --sector-size 4096 --integrity hmac-sha256 /dev/sdX2# Open the integrity deviceintegritysetup open --integrity-key-file /tmp/integrity-key.bin \
/dev/sdX2 integrity0
Encrypt HDD:
# Set up LUKS on top of integritycryptsetup luksFormat --type luks2 /dev/mapper/integrity0cryptsetup open /dev/mapper/integrity0 cryptroot### Create LVM volume# Create physical volumepvcreate /dev/mapper/cryptroot# Create volume groupvgcreate vg0 /dev/mapper/cryptroot# Create logical volumes - adjust swap size as neededlvcreate -L 8G vg0 -n swaplvcreate -l 100%FREE vg0 -n root# Format volumesmkfs.ext4 /dev/vg0/rootmkswap /dev/vg0/swap### Enroll Keys# For TPM (if available)systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7+14 /dev/mapper/integrity0# For your YubiKeysystemd-cryptenroll --fido2-device=auto /dev/mapper/integrity0# Save the integrity key to the LUKS header for automatic mounting# Create a temporary keyfiledd if=/dev/urandom of=/tmp/luks-key.bin bs=32 count=1# Add the keyfile to LUKScryptsetup luksAddKey /dev/mapper/integrity0 /tmp/luks-key.bin# Store the integrity key with the keyfile referencemkdir -p /etc/cryptsetup-keys.dcp /tmp/integrity-key.bin /etc/cryptsetup-keys.d/integrity0.keychmod 600 /etc/cryptsetup-keys.d/integrity0.key
Format Partitions:
# Format the EFI partitionmkfs.fat -F32 /dev/sdX1# Mount partitionsmount /dev/vg0/root /mntmkdir -p /mnt/bootmount /dev/sdX1 /mnt/boot# Enable swapswapon /dev/vg0/swap