# Copyright 2006-2006 Gentoo Foundation; Distributed under the GPL v2
# $Header: $
+ 13 Nov 2006; Chris Gianelloni <wolf31o2@gentoo.org>
+ generic/initrd.scripts, generic/linuxrc:
+ Added patch to support resuming from encrypted swap. The patch was submitted
+ to bug #152441.
+
25 Oct 2006; Chris Gianelloni <wolf31o2@gentoo.org> genkernel:
This is the 3.4.4 release.
fi
}
-startLUKS() {
- if [ -n "${LUKS_ROOT}" ]
+# Open a LUKS device
+# $1 LUKS device
+# $2 LUKS name
+openLUKS() {
+ LUKS_DEVICE="$1"
+ LUKS_NAME="$2"
+ if [ -e /sbin/cryptsetup ]
then
- if [ -e /sbin/cryptsetup ]
- then
- if cryptsetup isLuks ${LUKS_ROOT}
+ while [ 1 ]
+ do
+ if [ "${LUKS_DEVICE}" = '' ]
then
- good_msg "Opening LUKS device ${LUKS_ROOT}"
-
- cryptsetup luksOpen ${LUKS_ROOT} root
- if [ ! "$?" -eq '0' ]
- then
- bad_msg "Failed open LUKS device ${LUKS_ROOT}"
- fi
-
- if [ -n "${REAL_ROOT}" ]
+ # LUKS device could not be opened. Prompt user for device.
+ bad_msg "The LUKS ${LUKS_NAME} block device is not detected."
+ echo " Please specify a ${LUKS_NAME} LUKS device to open, "q" to skip, or "shell" for a shell..."
+ echo -n "LUKS ${LUKS_NAME}() :: "
+ read LUKS_DEVICE
+ continue
+ elif [ "${LUKS_DEVICE}" = 'shell' ]
+ then
+ run_shell
+
+ LUKS_DEVICE=''
+ continue
+ elif [ "${LUKS_DEVICE}" = 'q' ]
+ then
+ break
+ else
+ if cryptsetup isLuks ${LUKS_DEVICE}
then
- # Rescan volumes
- startVolumes
+ good_msg "Opening LUKS device ${LUKS_DEVICE}"
+
+ cryptsetup luksOpen ${LUKS_DEVICE} ${LUKS_NAME}
+ if [ ! "$?" -eq '0' ]
+ then
+ bad_msg "Failed open LUKS device ${LUKS_DEVICE}"
+ else
+ break
+ fi
else
- REAL_ROOT="/dev/mapper/root"
+ bad_msg "The LUKS device ${LUKS_DEVICE} does not contain a LUKS header"
fi
- else
- bad_msg "The LUKS device ${LUKS_ROOT} does not contain a LUKS hearder"
fi
+ LUKS_DEVICE=''
+ done
+ else
+ bad_msg "The initrd does not support LUKS"
+ fi
+}
+
+startLUKS() {
+ if [ -n "${LUKS_ROOT}" ]
+ then
+ openLUKS "${LUKS_ROOT}" "root"
+ if [ -n "${REAL_ROOT}" ]
+ then
+ # Rescan volumes
+ startVolumes
else
- bad_msg "The initrd does not support LUKS"
+ REAL_ROOT="/dev/mapper/root"
fi
fi
+ if [ -n "${LUKS_SWAP}" ]
+ then
+ openLUKS "${LUKS_SWAP}" "swap"
+ break
+ fi
}
sdelay() {