diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2019-07-16 00:27:16 +0200 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2019-07-16 00:27:16 +0200 |
commit | f559150dd16fc42e5bf4be4d24101e947ee21d60 (patch) | |
tree | e6bd74339d02719ce9a78072e4f8926e3af597cf | |
parent | linuxrc: Add rootdelay timeout indicator (diff) | |
download | genkernel-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/linuxrc | 37 |
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 |