diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts index 87f1398..dc7e301 100644 --- a/defaults/initrd.scripts +++ b/defaults/initrd.scripts @@ -2017,79 +2017,78 @@ rootdev_init() { done - if [ "${got_good_root}" = "1" ] && is_livecd && ! is_nfs - then + if [ "${got_good_root}" = "1" ] && is_livecd && ! is_nfs; then # CD already mounted; no further checks necessary break - elif [ "${LOOPTYPE}" = "sgimips" ] - then + fi + if [ "${LOOPTYPE}" = "sgimips" ]; then # sgimips mounts the livecd root partition directly # there is no isofs filesystem to worry about break - else - good_msg "Mounting $REAL_ROOT as root..." + fi + + good_msg "Mounting $REAL_ROOT as root..." - if [ "${ROOTFSTYPE}" = 'zfs' ] + if [ "${ROOTFSTYPE}" = 'zfs' ] + then + if [ "$(zfs get -H -o value mountpoint ${REAL_ROOT})" = 'legacy' ] then - if [ "$(zfs get -H -o value mountpoint ${REAL_ROOT})" = 'legacy' ] - then - MOUNT_STATE=rw - else - MOUNT_STATE=rw,zfsutil - fi + MOUNT_STATE=rw else - MOUNT_STATE=ro + MOUNT_STATE=rw,zfsutil fi + else + MOUNT_STATE=ro + fi - # Try to mount the device as ${NEW_ROOT} - if is_nfs; then - findnfsmount + # Try to mount the device as ${NEW_ROOT} + if is_nfs; then + findnfsmount + else + # mount ro so fsck doesn't barf later + if [ "${REAL_ROOTFLAGS}" = '' ]; then + good_msg "Using mount -t ${ROOTFSTYPE} -o ${MOUNT_STATE}" + mount -t ${ROOTFSTYPE} -o ${MOUNT_STATE} ${REAL_ROOT} ${NEW_ROOT} else - # mount ro so fsck doesn't barf later - if [ "${REAL_ROOTFLAGS}" = '' ]; then - good_msg "Using mount -t ${ROOTFSTYPE} -o ${MOUNT_STATE}" - mount -t ${ROOTFSTYPE} -o ${MOUNT_STATE} ${REAL_ROOT} ${NEW_ROOT} - else - good_msg "Using mount -t ${ROOTFSTYPE} -o ${MOUNT_STATE},${REAL_ROOTFLAGS}" - mount -t ${ROOTFSTYPE} -o ${MOUNT_STATE},${REAL_ROOTFLAGS} ${REAL_ROOT} ${NEW_ROOT} - fi + good_msg "Using mount -t ${ROOTFSTYPE} -o ${MOUNT_STATE},${REAL_ROOTFLAGS}" + mount -t ${ROOTFSTYPE} -o ${MOUNT_STATE},${REAL_ROOTFLAGS} ${REAL_ROOT} ${NEW_ROOT} fi + fi - # If mount is successful break out of the loop - # else not a good root and start over. - if [ "$?" = '0' ] - then - # now that the root filesystem is mounted, before - # checking the validity of ${NEW_ROOT} and ${REAL_INIT}, - # ensure that ${NEW_ROOT}/etc/initramfs.mounts entries - # are mounted. - ensure_initramfs_mounts - - # NFS does not need further checks here. - if is_nfs; then - break - fi + # If mount is successful break out of the loop + # else not a good root and start over. + if [ "$?" = '0' ] + then + # now that the root filesystem is mounted, before + # checking the validity of ${NEW_ROOT} and ${REAL_INIT}, + # ensure that ${NEW_ROOT}/etc/initramfs.mounts entries + # are mounted. + ensure_initramfs_mounts - if [ ! -d "${NEW_ROOT}/dev" ]; then - _msg="The filesystem ${REAL_ROOT}," - _msg="${_msg} mounted at ${NEW_ROOT}" - _msg="${_msg} does not contain /dev" - _msg="${_msg}, init will likely fail..." - bad_msg "${_msg}" - fi - if [ ! -x "${NEW_ROOT}${REAL_INIT}" ]; then - _msg="The filesystem ${REAL_ROOT}," - _msg="${_msg} mounted at ${NEW_ROOT}" - _msg="${_msg} does not contain a valid" - _msg="${_msg} init=${REAL_INIT}" - bad_msg "${_msg}" - fi + # NFS does not need further checks here. + if is_nfs; then break - else - bad_msg "Could not mount specified ROOT, try again" - got_good_root=0 - REAL_ROOT='' fi + + if [ ! -d "${NEW_ROOT}/dev" ]; then + _msg="The filesystem ${REAL_ROOT}," + _msg="${_msg} mounted at ${NEW_ROOT}" + _msg="${_msg} does not contain /dev" + _msg="${_msg}, init will likely fail..." + bad_msg "${_msg}" + fi + if [ ! -x "${NEW_ROOT}${REAL_INIT}" ]; then + _msg="The filesystem ${REAL_ROOT}," + _msg="${_msg} mounted at ${NEW_ROOT}" + _msg="${_msg} does not contain a valid" + _msg="${_msg} init=${REAL_INIT}" + bad_msg "${_msg}" + fi + break + else + bad_msg "Could not mount specified ROOT, try again" + got_good_root=0 + REAL_ROOT='' fi done }