diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2007-07-27 06:24:28 +0000 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2007-07-27 06:24:28 +0000 |
commit | 43b1f3aa7e142836d95675a21da331185bebb0c7 (patch) | |
tree | 85f85c86721a720df135c7f9acc355471300f8bd /generic | |
parent | enhanced netboot linuxrc from gustavoz (diff) | |
download | genkernel-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.scripts | 23 | ||||
-rw-r--r-- | generic/linuxrc | 65 |
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 # |