aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2007-07-27 06:24:28 +0000
committerRobin H. Johnson <robbat2@gentoo.org>2007-07-27 06:24:28 +0000
commit43b1f3aa7e142836d95675a21da331185bebb0c7 (patch)
tree85f85c86721a720df135c7f9acc355471300f8bd /generic
parentenhanced netboot linuxrc from gustavoz (diff)
downloadgenkernel-43b1f3aa7e142836d95675a21da331185bebb0c7.tar.gz
genkernel-43b1f3aa7e142836d95675a21da331185bebb0c7.tar.bz2
genkernel-43b1f3aa7e142836d95675a21da331185bebb0c7.zip
Fixup for bugs from patch in bug 174294.
The previous patch from bug #174294 still contained some bugs in the linuxrc and scripts, that caused a failure during boot. Clean them up with one more patch from Nelson Batalha <nelson_batalha@hotmail.com>, again on bug #174294. git-svn-id: svn+ssh://svn.gentoo.org/var/svnroot/genkernel/trunk@523 67a159dc-881f-0410-a524-ba9dfbe2cb84
Diffstat (limited to 'generic')
-rw-r--r--generic/initrd.scripts23
-rw-r--r--generic/linuxrc65
2 files changed, 51 insertions, 37 deletions
diff --git a/generic/initrd.scripts b/generic/initrd.scripts
index 4493bf89..2a03d81e 100644
--- a/generic/initrd.scripts
+++ b/generic/initrd.scripts
@@ -108,26 +108,33 @@ findkeymount() {
# Check for a block device to mount
if [ -b "${x}" ]
then
- good_msg "Attempting to mount key media:- ${x}"
- mount -r -t auto ${x} ${NEW_ROOT}/mnt/key \
+ if [ ${crypt_silent} = '' ]
+ then
+ good_msg "Attempting to mount key media:- ${x}"
+ fi
+
+ mount -r -t auto ${x} ${NEW_ROOT}/mnt/keydev \
> /dev/null 2>&1
- fi
if [ "$?" = '0' ]
then
# Check for the key
- if [ -e ${NEW_ROOT}/mnt/key/${SUBDIR}/${KEYNAME} ]
+ if [ -e ${NEW_ROOT}/mnt/keydev/${LUKS_ROOT_KEY} ]
then
- KEY_ROOT="${x}"
+ LUKS_ROOT_KEYDEV="${x}"
+ umount ${NEW_ROOT}/mnt/keydev
break
else
- umount ${NEW_ROOT}/mnt/key
+ umount ${NEW_ROOT}/mnt/keydev
fi
fi
fi
done
- if [ "${KEY_ROOT}" != '' ]
+ if [ "${LUKS_ROOT_KEYDEV}" != '' ]
then
- good_msg "Key media found on ${x}"
+ if [ ${crypt_silent} = '' ]
+ then
+ good_msg "Key media found on ${x}"
+ fi
fi
fi
}
diff --git a/generic/linuxrc b/generic/linuxrc
index 6d7c74b0..269a27ef 100644
--- a/generic/linuxrc
+++ b/generic/linuxrc
@@ -72,16 +72,13 @@ do
CDROOT=1
CDROOT_DEV=`parse_opt "${x}"`
;;
- # Start livecd loop, looptype options and encryption
+ # Start livecd loop, looptype options
loop\=*)
LOOP=`parse_opt "${x}"`
;;
looptype\=*)
LOOPTYPE=`parse_opt "${x}"`
;;
- loop_crypt\=*)
- LOOP_CRYPT=`parse_opt "${x}"`
- ;;
# Start Device Manager options
devfs)
USE_DEVFS_NORMAL=1
@@ -182,6 +179,9 @@ do
crypt_swap\=*)
LUKS_SWAP=`parse_opt "${x}"`
;;
+ crypt_silent\=*)
+ LUKS_SILENT=`parse_opt "${x}"`
+ ;;
real_rootflags\=*)
REAL_ROOTFLAGS=`parse_opt "${x}"`
;;
@@ -236,8 +236,11 @@ setup_md_device
# Scan volumes
startVolumes
-# Initialize LUKS root device
-startLUKS
+# Initialize LUKS root device except for livecd's
+if [ "${CDROOT}" -ne '1' ]
+then
+ startLUKS
+fi
# Set up unionfs
mkdir -p ${NEW_ROOT}
@@ -264,7 +267,7 @@ then
mount -t tmpfs tmpfs ${NEW_ROOT}
fi
- for i in dev mnt mnt/cdrom mnt/livecd mnt/key tmp tmp/.initrd mnt/gentoo sys
+ for i in dev mnt mnt/cdrom mnt/livecd mnt/keydev tmp tmp/.initrd mnt/gentoo sys
do
mkdir -p ${NEW_ROOT}/$i
chmod 755 ${NEW_ROOT}/$i
@@ -496,37 +499,41 @@ then
# If encrypted, find key and mount, otherwise mount as usual
- if [ "${LOOP_CRYPT}" != '' ]
+ if [ "${LUKS_ROOT}" != '' ]
then
- good_msg 'You booted an encrypted livecd'
- KEYNAME=$(head -n 1 ${NEW_ROOT}/mnt/cdrom/livecd)
+ if [ "${LUKS_SILENT}" = '' ]
+ then
+ good_msg 'You booted an encrypted livecd'
+ fi
- if [ "${KEYNAME}" = '' ]
- then
- good_msg 'It's not locked with a gpg key, attempting to decrypt manually'
- losetup -e ${LOOP_CRYPT} /dev/loop1 ${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP}
-
+ LUKS_ROOT_KEY=$(head -n 1 ${NEW_ROOT}/mnt/cdrom/livecd)
- else
- good_msg 'Livecd locked with gpg key'
+ if [ "${LUKS_ROOT_KEY}" ]
+ then
bootstrapKey
- good_msg 'Attempting to decrypt with key'
- losetup -K ${NEW_ROOT}/mnt/key/${SUBDIR}/${KEYNAME} -e ${LOOP_CRYPT} /dev/loop1 \
- ${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP}
fi
-
- test_success 'Unencrypting loop'
+
+ losetup /dev/loop0 ${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP}
+
+ test_success 'Preparing loop filesystem'
+
+ LUKS_ROOT='/dev/loop0'
+
+ startLUKS
case ${LOOPTYPE} in
- squashfs)
- MOUNTTYPE="squashfs"
normal)
MOUNTTYPE="ext2"
- esac
+ ;;
+ *)
+ MOUNTTYPE="${LOOPTYPE}"
+ ;;
+ esac
- mount -t ${MOUNTTYPE} -o ro /dev/loop1 ${NEW_ROOT}/mnt/livecd
-
- test_success 'Mount filesystem, checking key'
+
+ mount -t ${MOUNTTYPE} -o ro /dev/mapper/root ${NEW_ROOT}/mnt/livecd
+
+ test_success 'Mount filesystem'
FS_LOCATION='mnt/livecd'
@@ -590,7 +597,7 @@ then
test_success 'mount /dev/loop0 /'
FS_LOCATION='mnt/livecd'
fi
-
+ fi
#
# End cdrom looptype determination and mounting if necessary
#