]> TLD Linux GIT Repositories - packages/dracut.git/blobdiff - crypttab-keyscript.patch
- added support for keyscripts in crypttab
[packages/dracut.git] / crypttab-keyscript.patch
diff --git a/crypttab-keyscript.patch b/crypttab-keyscript.patch
new file mode 100644 (file)
index 0000000..1438099
--- /dev/null
@@ -0,0 +1,58 @@
+diff -ur dracut-047.orig/modules.d/90crypt/cryptroot-ask.sh dracut-047/modules.d/90crypt/cryptroot-ask.sh
+--- dracut-047.orig/modules.d/90crypt/cryptroot-ask.sh 2018-02-19 09:00:33.000000000 +0000
++++ dracut-047/modules.d/90crypt/cryptroot-ask.sh      2018-07-02 11:37:44.222951181 +0000
+@@ -106,6 +106,9 @@
+         header=*)
+             cryptsetupopts="${cryptsetupopts} --${1}"
+             ;;
++        keyscript=*)
++            keyscript=${1##keyscript=}
++            ;;
+     esac
+     shift
+ done
+@@ -163,6 +166,14 @@
+     done
+ fi
++if [ ! -z "$keyscript" -a -x "$keyscript" ]; then
++    info "Executing keyscript $keyscript"
++    eval $keyscript
++    if [ $? -eq 0 ]; then
++        ask_passphrase=0
++    fi
++fi
++
+ if [ $ask_passphrase -ne 0 ]; then
+     luks_open="$(command -v cryptsetup) $cryptsetupopts luksOpen"
+     ask_for_password --ply-tries 5 \
+diff -ur dracut-047.orig/modules.d/90crypt/module-setup.sh dracut-047/modules.d/90crypt/module-setup.sh
+--- dracut-047.orig/modules.d/90crypt/module-setup.sh  2018-02-19 09:00:33.000000000 +0000
++++ dracut-047/modules.d/90crypt/module-setup.sh       2018-07-02 10:57:20.952095619 +0000
+@@ -96,10 +96,26 @@
+                         forceentry="yes"
+                         break
+                         ;;
++                    keyscript=*)
++                        keyscript=${1##keyscript=}
++                        break
++                        ;;
+                 esac
+                 shift
+             done
++            if [ ! -z "${keyscript}" ]; then
++                if [ -x "${keyscript}" ]; then
++                    if [ ! -d "${initdir}/etc/keyscripts" ]; then
++                        mkdir "${initdir}/etc/keyscripts" 2>/dev/null
++                    fi
++                    inst_script "${keyscript}" /etc/keyscripts/${keyscript##*/}
++                    _luksoptions=${_luksoptions/${keyscript%%=*}/\/etc\/keyscripts\/${keyscript##*/}}
++                else
++                    dwarning "Missing keyscript referenced in crypttab: ${keyscript}"
++                fi
++            fi
++
+             # include the entry regardless
+             if [ "${forceentry}" = "yes" ]; then
+                 echo "$_mapper $_dev $_luksfile $_luksoptions"