Added patch to support resuming from encrypted swap. The patch was submitted to bug #152441.

git-svn-id: svn+ssh://svn.gentoo.org/var/svnroot/genkernel/trunk@457 67a159dc-881f-0410-a524-ba9dfbe2cb84
cleanup-cruft
Chris Gianelloni 18 years ago
parent 978f6cb361
commit 8edf1cba7d

@ -2,6 +2,11 @@
# Copyright 2006-2006 Gentoo Foundation; Distributed under the GPL v2 # Copyright 2006-2006 Gentoo Foundation; Distributed under the GPL v2
# $Header: $ # $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: 25 Oct 2006; Chris Gianelloni <wolf31o2@gentoo.org> genkernel:
This is the 3.4.4 release. This is the 3.4.4 release.

@ -549,35 +549,73 @@ startVolumes() {
fi fi
} }
startLUKS() { # Open a LUKS device
if [ -n "${LUKS_ROOT}" ] # $1 LUKS device
# $2 LUKS name
openLUKS() {
LUKS_DEVICE="$1"
LUKS_NAME="$2"
if [ -e /sbin/cryptsetup ]
then then
if [ -e /sbin/cryptsetup ] while [ 1 ]
then do
if cryptsetup isLuks ${LUKS_ROOT} if [ "${LUKS_DEVICE}" = '' ]
then then
good_msg "Opening LUKS device ${LUKS_ROOT}" # LUKS device could not be opened. Prompt user for device.
bad_msg "The LUKS ${LUKS_NAME} block device is not detected."
cryptsetup luksOpen ${LUKS_ROOT} root echo " Please specify a ${LUKS_NAME} LUKS device to open, "q" to skip, or "shell" for a shell..."
if [ ! "$?" -eq '0' ] echo -n "LUKS ${LUKS_NAME}() :: "
then read LUKS_DEVICE
bad_msg "Failed open LUKS device ${LUKS_ROOT}" continue
fi elif [ "${LUKS_DEVICE}" = 'shell' ]
then
if [ -n "${REAL_ROOT}" ] run_shell
LUKS_DEVICE=''
continue
elif [ "${LUKS_DEVICE}" = 'q' ]
then
break
else
if cryptsetup isLuks ${LUKS_DEVICE}
then then
# Rescan volumes good_msg "Opening LUKS device ${LUKS_DEVICE}"
startVolumes
cryptsetup luksOpen ${LUKS_DEVICE} ${LUKS_NAME}
if [ ! "$?" -eq '0' ]
then
bad_msg "Failed open LUKS device ${LUKS_DEVICE}"
else
break
fi
else else
REAL_ROOT="/dev/mapper/root" bad_msg "The LUKS device ${LUKS_DEVICE} does not contain a LUKS header"
fi fi
else
bad_msg "The LUKS device ${LUKS_ROOT} does not contain a LUKS hearder"
fi 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 else
bad_msg "The initrd does not support LUKS" REAL_ROOT="/dev/mapper/root"
fi fi
fi fi
if [ -n "${LUKS_SWAP}" ]
then
openLUKS "${LUKS_SWAP}" "swap"
break
fi
} }
sdelay() { sdelay() {

@ -175,6 +175,9 @@ do
crypt_root\=*) crypt_root\=*)
LUKS_ROOT=`parse_opt "${x}"` LUKS_ROOT=`parse_opt "${x}"`
;; ;;
crypt_swap\=*)
LUKS_SWAP=`parse_opt "${x}"`
;;
esac esac
done done
@ -226,7 +229,7 @@ setup_md_device
# Scan volumes # Scan volumes
startVolumes startVolumes
# Iinitialize LUKS root device # Initialize LUKS root device
startLUKS startLUKS
# Set up unionfs # Set up unionfs

Loading…
Cancel
Save