aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Gianelloni <wolf31o2@gentoo.org>2006-06-09 14:34:09 +0000
committerChris Gianelloni <wolf31o2@gentoo.org>2006-06-09 14:34:09 +0000
commit3186bfc54c5e5db508d47340012a320f607bd8f3 (patch)
tree02c15190beba47d4951d0824a9dbc510b38f00e2 /generic
parentAdded code to allow the root file-system to be a module. This is for bug #11... (diff)
downloadgenkernel-3186bfc54c5e5db508d47340012a320f607bd8f3.tar.gz
genkernel-3186bfc54c5e5db508d47340012a320f607bd8f3.tar.bz2
genkernel-3186bfc54c5e5db508d47340012a320f607bd8f3.zip
Add a modified version of the two LUKS patches that made their way into bugzilla for bug #122421.
git-svn-id: svn+ssh://svn.gentoo.org/var/svnroot/genkernel/trunk@405 67a159dc-881f-0410-a524-ba9dfbe2cb84
Diffstat (limited to 'generic')
-rw-r--r--generic/initrd.scripts4
-rw-r--r--generic/linuxrc21
2 files changed, 23 insertions, 2 deletions
diff --git a/generic/initrd.scripts b/generic/initrd.scripts
index ea03023..4ded9ff 100644
--- a/generic/initrd.scripts
+++ b/generic/initrd.scripts
@@ -575,10 +575,10 @@ setup_md_device() {
[ -z "$1" ] && device="${REAL_ROOT}" || device="$1"
[ -z "${device}" ] && return # LiveCD
- if [ `echo ${device}|sed -e 's#\(/dev/md\)[[:digit:]]\+#\1#'` = "/dev/md" ]
+ if [ `echo ${device}|sed -e 's#\(luks:\)\?\(/dev/md\)[[:digit:]]\+#\2#'` = "/dev/md" ]
then
good_msg 'Detected real_root as a md device. Setting up the device node...'
- MD_NUMBER=`echo ${device}|sed -e 's#/dev/md\([[:digit:]]\+\)#\1#'`
+ MD_NUMBER=`echo ${device}|sed -e 's#\(luks:\)\?/dev/md\([[:digit:]]\+\)#\2#'`
if [ ! -e /dev/md${MD_NUMBER} ]
then
mknod /dev/md${MD_NUMBER} b 9 ${MD_NUMBER} >/dev/null 2>&1
diff --git a/generic/linuxrc b/generic/linuxrc
index 99d1219..d0ff83b 100644
--- a/generic/linuxrc
+++ b/generic/linuxrc
@@ -365,6 +365,27 @@ do
elif [ -b "${REAL_ROOT}" ] || [ "${REAL_ROOT}" = "/dev/nfs" ]
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=""