diff --git a/root/etc/initcpio/hooks/lukskeyfile b/root/etc/initcpio/hooks/lukskeyfile new file mode 100644 index 0000000..fce69a5 --- /dev/null +++ b/root/etc/initcpio/hooks/lukskeyfile @@ -0,0 +1,27 @@ +#!/bin/ash + +run_hook() { + if [ -n "$lukskeyfile" ]; then + # This is a needed kernel parameter for this hook + modprobe -a -q loop dm-crypt >/dev/null 2>&1 + # Refer to help from `mkinitcpio -H lukskeyfile`. + IFS=: read rootKeyDev rootKey cryptkeyLoc </dev/null 2>&1; then + cat "/mnt/${rootKey}" > "${cryptkeyLoc}" + else + echo "Failed to mount ${rootKeyDev} on /mnt" + /bin/sh + fi + else + echo "Failed to find ${rootKeyDev} containing LUKS root key." + fi + fi +} diff --git a/root/etc/initcpio/install/lukskeyfile b/root/etc/initcpio/install/lukskeyfile new file mode 100644 index 0000000..5e78430 --- /dev/null +++ b/root/etc/initcpio/install/lukskeyfile @@ -0,0 +1,27 @@ +#!/bin/bash + +build() { + add_dir "/mnt" + add_module loop + add_module dm-crypt + add_runscript +} + +help() { + cat <