--- rc.sysinit.orig 2009-06-10 02:37:07.000000000 +0200 +++ rc.sysinit 2009-06-11 01:34:17.000000000 +0200 @@ -193,6 +193,17 @@ else echo "$cpass" | $CS $copts create $cname $csrc >/dev/null fi + elif [ `echo $cpass | grep "^/dev.*:.*:"` ]; then + ckdev=${cpass%%:*} + ckoffset=${cpass#*:} + cksize=${ckoffset#*:} + ckoffset=${ckoffset%:*} + /bin/dd if=$ckdev of=/dev/shm/ckeyfile bs=1 skip=$ckoffset count=$cksize 2>/dev/null + if $CS isLuks $csrc 2>/dev/null; then + $CS -d /dev/shm/ckeyfile $copts luksOpen $csrc $cname >/dev/null + else + $CS -d /dev/shm/ckeyfile $copts create $cname $csrc >/dev/null + fi else if $CS isLuks $csrc 2>/dev/null; then $CS -d $cpass $copts luksOpen $csrc $cname >/dev/null