diff options
author | 2006-06-09 14:34:09 +0000 | |
---|---|---|
committer | 2006-06-09 14:34:09 +0000 | |
commit | 3186bfc54c5e5db508d47340012a320f607bd8f3 (patch) | |
tree | 02c15190beba47d4951d0824a9dbc510b38f00e2 /generic | |
parent | Added code to allow the root file-system to be a module. This is for bug #11... (diff) | |
download | genkernel-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.scripts | 4 | ||||
-rw-r--r-- | generic/linuxrc | 21 |
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="" |