crypt: assemble 70-luks.rules dynamically
[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     LUKS=$(getargs rd_LUKS_UUID=)
11     if [ -n "$LUKS" ]; then
12         for luksid in $LUKS; do 
13         printf 'ENV{ID_FS_TYPE}=="crypto_LUKS", ENV{ID_FS_UUID}=="*%s*", RUN+="/sbin/initqueue --unique --onetime --name cryptroot-ask-%%k /sbin/cryptroot-ask $env{DEVNAME} luks-$env{ID_FS_UUID}"\n' $luksid \
14             >> /etc/udev/rules.d/70-luks.rules  
15         done
16     else
17         echo 'ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="/sbin/initqueue --unique --onetime --name cryptroot-ask-%k /sbin/cryptroot-ask $env{DEVNAME} luks-$env{ID_FS_UUID}"' \
18             >> /etc/udev/rules.d/70-luks.rules  
19     fi
20     echo LABEL="luks_end" >> /etc/udev/rules.d/70-luks.rules
21
22 fi
23