ACTION!="add|change", GOTO="luks_end"
KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode"
-ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="plymouth-ask $env{DEVNAME} luks-$env{ID_FS_UUID}"
+ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="cryptroot-ask $env{DEVNAME} luks-$env{ID_FS_UUID}"
LABEL="luks_end"
#!/bin/bash
-[[ -x /sbin/plymouthd && -x /bin/plymouth ]]
\ No newline at end of file
+exit 1
+[[ -x /sbin/plymouthd && -x /bin/plymouth ]]
inst_hook pre-udev 10 "$moddir"/plymouth-start.sh
inst_hook pre-pivot 90 "$moddir"/plymouth-newroot.sh
inst_rules "$moddir/63-luks.rules"
-inst "$moddir"/plymouth-ask.sh /lib/udev/plymouth-ask
+inst "$moddir"/cryptroot-ask.sh /lib/udev/cryptroot-ask
inst cryptsetup
ACTION!="add|change", GOTO="luks_end"
KERNEL!="sr*", IMPORT{program}="vol_id --export $tempnode"
-ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="/bin/sh -c 'echo $env{DEVNAME} luks-$env{ID_FS_UUID} >>/cryptroot'"
+ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="cryptroot-ask $env{DEVNAME} luks-$env{ID_FS_UUID}"
LABEL="luks_end"
--- /dev/null
+#!/bin/sh
+
+[ -b /dev/mapper/$2 ] && exit 0
+(
+ flock -s 200
+ /sbin/cryptsetup luksOpen -T1 $1 $2 </dev/console >/dev/console 2>&1
+) 200>/.console.lock
+
+++ /dev/null
-#!/bin/sh
-[ -s /cryptroot ] && {
- udevadm control --stop-exec-queue
- while read cryptopts; do
- ( exec >/dev/console 2>&1 </dev/console
- set $cryptopts
- [ -b /dev/mapper/$2 ] || ( /sbin/cryptsetup luksOpen $cryptopts || emergency_shell )
- )
- done </cryptroot
- >/cryptroot
- udevadm control --start-exec-queue
- udevadm settle --timeout=30
-}
#!/bin/bash
inst cryptsetup
inst_rules "$moddir/63-luks.rules"
-inst_hook mount 10 "$moddir/cryptroot.sh"
\ No newline at end of file
+inst "$moddir"/cryptroot-ask.sh /lib/udev/cryptroot-ask
+
[ "$ROOTFS_MOUNTED" ] && break;
sleep 1
i=$(($i+1))
- [ $i -gt 10 ] && emergency_shell
+ (
+ flock -s 200
+ [ $i -gt 10 ] && emergency_shell
+ ) 200>/.console_lock
done
# by the time we get here, the root filesystem should be mounted.
#!/bin/bash
-dracut_install mount mknod mkdir modprobe pidof sleep chroot echo sed sh ls
+dracut_install mount mknod mkdir modprobe pidof sleep chroot echo sed sh ls flock
# install our scripts and hooks
inst "$moddir/init" "/init"
inst "$moddir/switch_root" "/sbin/switch_root"