aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Deutschmann <whissi@gentoo.org>2019-07-16 00:27:16 +0200
committerThomas Deutschmann <whissi@gentoo.org>2019-07-16 00:27:16 +0200
commitf559150dd16fc42e5bf4be4d24101e947ee21d60 (patch)
treee6bd74339d02719ce9a78072e4f8926e3af597cf
parentlinuxrc: Add rootdelay timeout indicator (diff)
downloadgenkernel-f559150dd16fc42e5bf4be4d24101e947ee21d60.tar.gz
genkernel-f559150dd16fc42e5bf4be4d24101e947ee21d60.tar.bz2
genkernel-f559150dd16fc42e5bf4be4d24101e947ee21d60.zip
linuxrc: Really prompt for new root block device when got_good_root is 0
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
-rw-r--r--defaults/linuxrc37
1 files changed, 18 insertions, 19 deletions
diff --git a/defaults/linuxrc b/defaults/linuxrc
index f1cbec1..518efc6 100644
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -695,14 +695,13 @@ do
fi
done # End of sleep loop waiting on root
- if [ -z "${REAL_ROOT}" ]
+ if [ ${ROOTDELAY_100MSEC} -le 0 ]
then
- # No REAL_ROOT determined/specified. Prompt user for root block device.
- prompt_user "REAL_ROOT" "root block device"
- got_good_root=0
+ echo
+ fi
# Check for a block device or /dev/nfs or zfs encryption
- elif [ -b "${REAL_ROOT}" ] || [ "${REAL_ROOT}" = "/dev/nfs" ] || [ "${ROOTFSTYPE}" = "zfs" ]
+ if [ -n "${REAL_ROOT}" ] && [ -b "${REAL_ROOT}" ] || [ "${REAL_ROOT}" = "/dev/nfs" ] || [ "${ROOTFSTYPE}" = "zfs" ]
then
if [ "${ROOTFSTYPE}" = "zfs" ]
then
@@ -718,37 +717,33 @@ do
zfs load-key "${ZFS_ENCRYPTIONROOT}"
retval=$?
# if the key loaded fine, confirm got_good_root to exit second while loop
- if [ ${retval} -eq 0 ]
+ if [ ${retval} -ne 0 ]
then
- got_good_root=1
- else
bad_msg "${ROOT_DEV} is encrypted and not mountable without key"
- prompt_user "REAL_ROOT" "root block device"
got_good_root=0
+ break
fi
fi
fi
else
got_good_root=1
fi
- else
- bad_msg "Block device ${REAL_ROOT} is not a valid root device ..."
- REAL_ROOT=""
- got_good_root=0
fi
- done
+ break
+ done
- if [ "${CDROOT}" = 1 -a "${got_good_root}" = '1' -a "${REAL_ROOT}" != "/dev/nfs" ]
+ if [ "${got_good_root}" = '1' -a "${CDROOT}" = 1 -a "${REAL_ROOT}" != "/dev/nfs" ]
then
# CD already mounted; no further checks necessary
break
- elif [ "${LOOPTYPE}" = 'sgimips' ]
+ elif [ "${got_good_root}" = '1' -a "${LOOPTYPE}" = 'sgimips' ]
then
# sgimips mounts the livecd root partition directly
# there is no isofs filesystem to worry about
break
- else
+ elif [ "${got_good_root}" = '1' ]
+ then
good_msg "Mounting ${REAL_ROOT} as root ..."
if [ "${ROOTFSTYPE}" = 'zfs' ]
@@ -797,14 +792,18 @@ do
else
bad_msg "The filesystem mounted at ${REAL_ROOT} does not appear to be a valid /, try again"
got_good_root=0
- REAL_ROOT=''
fi
else
bad_msg "Could not mount specified ROOT, try again"
got_good_root=0
- REAL_ROOT=''
fi
fi
+
+ if [ "${got_good_root}" = '0' ]
+ then
+ bad_msg "Block device ${REAL_ROOT} is not a valid root device ..."
+ prompt_user "REAL_ROOT" "root block device"
+ fi
done
# End determine root device