# TODO this one needs some work to work with lots of different # encryption schemes run_hook () { /bin/modprobe -a -q dm-crypt >/dev/null 2>&1 if [ -e "/sys/class/misc/device-mapper" ]; then read dev_t < /sys/class/misc/device-mapper/dev /bin/mknod "/dev/mapper/control" c $(/bin/replace "${dev_t}" ':') if /usr/sbin/cryptsetup isLuks ${root} >/dev/null 2>&1; then echo "" echo "A password is required to access the root filesystem:" #loop until we get a real password while ! /usr/sbin/cryptsetup luksOpen ${root} root; do sleep 2; done if [ -e "/dev/mapper/root" ]; then export root="/dev/mapper/root" else err "Password succeeded, but root creation failed, aborting..." exit 1 fi elif [ "x${crypto}" != "x" ]; then do_oldcrypto () { if [ $# -ne 5 ]; then err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip" err "Non-LUKS decryption not attempted..." else exe="/usr/sbin/cryptsetup create root ${root}" [ "x$(eval echo ${1})" != "x" ] && exe="$exe --hash \"$(eval echo ${1})\"" [ "x$(eval echo ${2})" != "x" ] && exe="$exe --cipher \"$(eval echo ${2})\"" [ "x$(eval echo ${3})" != "x" ] && exe="$exe --key-size \"$(eval echo ${3})\"" [ "x$(eval echo ${4})" != "x" ] && exe="$exe --offset \"$(eval echo ${4})\"" [ "x$(eval echo ${5})" != "x" ] && exe="$exe --skip \"$(eval echo ${5})\"" echo "" echo "A password is required to access the root filesystem:" eval "${exe}" fi } msg "Non-LUKS encrypted device found..." do_oldcrypto $(/bin/replace -q "${crypto}" ':') if [ $? -ne 0 ]; then err "Non-LUKS device decryption failed. verify format: " err " crypto=hash:cipher:keysize:offset:skip" exit 1 else if [ -e "/dev/mapper/root" ]; then export root="/dev/mapper/root" else err "Password succeeded, but root creation failed, aborting..." exit 1 fi fi fi fi }