# Copyright 2006-2006 Gentoo Foundation; Distributed under the GPL v2
# $Header: $
+ 23 Oct 2006; Chris Gianelloni <wolf31o2@gentoo.org> generic/linuxrc:
+ Added patch from bug #152441 to improve LUKS support.
+
23 Oct 2006; Chris Gianelloni <wolf31o2@gentoo.org> x86/kernel-config-2.6,
x86_64/kernel-config-2.6:
Updated kernel configs for amd64/x86 for bug #151609 and bug #152299.
nfsroot\=*)
NFSROOT=`parse_opt "${x}"`
;;
+ crypt_root\=*)
+ CRYPT_ROOT=`parse_opt "${x}"`
+ ;;
esac
done
# Setup md device nodes if they dont exist
setup_md_device
-# Start EVMS
+# Scan volumes
startVolumes
+# Iinitialize encrypted root device
+if [ -n "${CRYPT_ROOT}" ]
+then
+ cryptsetup luksOpen ${CRYPT_ROOT} root || exit -1
+
+ if [ -n "${REAL_ROOT}" ]
+ then
+ # Rescan volumes
+ startVolumes
+ else
+ REAL_ROOT="/dev/mapper/root"
+ fi
+fi
+
# Set up unionfs
mkdir -p ${NEW_ROOT}
setup_unionfs
then
got_good_root=1
- #check if LUKS setup is needed
- elif [ `echo ${REAL_ROOT} | sed -e "s/\([^:]*\):.*/\1/"` = "luks" ]
- then
- LUKSdev=`echo ${REAL_ROOT} | sed -e "s/luks:\(.*\)/\1/"`
- if [ -e /sbin/cryptsetup ]
- then
- if cryptsetup isLuks ${LUKSdev}
- then
- good_msg "LUKS partition - opening $LUKSdev"
- cryptsetup luksOpen ${LUKSdev} root &&
- REAL_ROOT=/dev/mapper/root &&
- got_good_root=1
- else
- bad_msg "${LUKSDEV} is not a LUKS partition"
- REAL_ROOT=""
- fi
- else
- bad_msg "This initrd does not support LUKS"
- REAL_ROOT=""
- fi
else
bad_msg "Block device ${REAL_ROOT} is not a valid root device..."
REAL_ROOT=""