mirror of
https://gitlab.archlinux.org/tpowa/archboot.git
synced 2024-09-19 19:40:37 +02:00
61 lines
2.5 KiB
Text
61 lines
2.5 KiB
Text
|
# 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
|
||
|
}
|