zlevis-dracut/zlevis.sh
2025-04-05 22:11:21 +02:00

21 lines
665 B
Bash
Executable file

#!/bin/sh
# First make sure the zfs kmod is loaded
modprobe zfs 2>/dev/null
udevadm settle
# Inspired by Alpine Linux's mkinitfs script - search for encrypted pool's by means of the cmdline root atribute
local _root_vol="${root}"
local _root_pool="${_root_vol%%/*}"
# Import the root pool
zpool import -N -d /dev $_root_pool
# If the pool is encrypted run `zlevis decrypt` to decrypt using the tpm2
if [ $(zpool list -H -o feature@encryption $_root_pool) = "active" ]; then
local _encryption_root=$(zfs get -H -o value encryptionroot $_root_vol)
if [ "$_encryption_root" != "-" ]; then
zlevis decrypt $_root_pool || echo "zlevis decryption failed!"
fi
fi