crypt: fix printf
[platform/upstream/dracut.git] / modules.d / 90crypt / parse-crypt.sh
1 #!/bin/sh
2 if getarg rd_NO_LUKS; then
3     info "rd_NO_LUKS: removing cryptoluks activation"
4     rm -f /etc/udev/rules.d/70-luks.rules
5 else
6     {
7         echo 'SUBSYSTEM!="block", GOTO="luks_end"'
8         echo 'ACTION!="add|change", GOTO="luks_end"'
9     } > /etc/udev/rules.d/70-luks.rules
10
11     LUKS=$(getargs rd_LUKS_UUID)
12     unset settled
13     [ -n "$(getargs rd_LUKS_KEYPATH)" ] && \
14             [ -z "$(getargs rd_LUKS_KEYDEV_UUID)" ] && \
15             settled='--settled'
16
17     if [ -n "$LUKS" ]; then
18         for luksid in $LUKS; do 
19             luksid=${luksid##luks-}
20             {
21                 printf 'ENV{ID_FS_TYPE}=="crypto_LUKS", '
22                 printf 'ENV{ID_FS_UUID}=="*%s*", ' $luksid
23                 printf 'RUN+="/sbin/initqueue --unique --onetime %s ' "$settled"
24                 printf -- '--name cryptroot-ask-%%k /sbin/cryptroot-ask '
25                 printf '$env{DEVNAME} luks-$env{ID_FS_UUID}"\n'
26             } >> /etc/udev/rules.d/70-luks.rules
27
28             printf '[ -e /dev/disk/by-uuid/*%s* ] || exit 1\n' $luksid \
29                     >> /initqueue-finished/crypt.sh
30             {
31                 printf '[ -e /dev/disk/by-uuid/*%s* ] || ' $luksid
32                 printf 'warn "crypto LUKS UUID "%s" not found"\n' $luksid
33             } >> /emergency/00-crypt.sh
34         done
35     else
36         echo 'ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="/sbin/initqueue' $settled \
37                 '--unique --onetime --name cryptroot-ask-%k' \
38                 '/sbin/cryptroot-ask $env{DEVNAME} luks-$env{ID_FS_UUID}"' \
39                 >> /etc/udev/rules.d/70-luks.rules
40     fi
41
42     echo 'LABEL="luks_end"' >> /etc/udev/rules.d/70-luks.rules
43 fi