summaryrefslogtreecommitdiffstats
path: root/linhes/mkinitcpio-openswap/openswap.hook
diff options
context:
space:
mode:
Diffstat (limited to 'linhes/mkinitcpio-openswap/openswap.hook')
-rw-r--r--linhes/mkinitcpio-openswap/openswap.hook25
1 files changed, 25 insertions, 0 deletions
diff --git a/linhes/mkinitcpio-openswap/openswap.hook b/linhes/mkinitcpio-openswap/openswap.hook
new file mode 100644
index 0000000..9a96ad4
--- /dev/null
+++ b/linhes/mkinitcpio-openswap/openswap.hook
@@ -0,0 +1,25 @@
+run_hook ()
+{
+ ## read openswap configurations
+ source /openswap.conf
+
+ ## Optional: To avoid race conditions
+ x=0;
+ while [ ! -b "$keyfile_device" ] && [ $x -le 10 ]; do
+ x=$((x+1))
+ sleep .2
+ done
+ ## End of optional
+
+ if [ -z "$keyfile_device" ] || [ -z "$keyfile_filename" ]
+ then
+ ## case when no keyfile provided in configurations
+ cryptsetup open $cryptsetup_options "$swap_device" "$crypt_swap_name"
+ else
+ ## case when keyfile is provided in configurations
+ mkdir openswap_keymount
+ mount $keyfile_device_mount_options "$keyfile_device" openswap_keymount
+ cryptsetup open $cryptsetup_options --key-file "openswap_keymount/$keyfile_filename" "$swap_device" "$crypt_swap_name"
+ umount openswap_keymount
+ fi
+}