git: d577d6178bde - main - bsdinstall release: Move code to a new startbsdinstall wrapper

From: Jessica Clarke <jrtc27_at_FreeBSD.org>
Date: Mon, 03 Oct 2022 16:09:43 UTC
The branch main has been updated by jrtc27:

URL: https://cgit.FreeBSD.org/src/commit/?id=d577d6178bdeff86dbff0b954659ac5e23c17b2a

commit d577d6178bdeff86dbff0b954659ac5e23c17b2a
Author:     Jessica Clarke <jrtc27@FreeBSD.org>
AuthorDate: 2022-10-03 16:09:16 +0000
Commit:     Jessica Clarke <jrtc27@FreeBSD.org>
CommitDate: 2022-10-03 16:09:16 +0000

    bsdinstall release: Move code to a new startbsdinstall wrapper
    
    This separates out the install media-specific environment (creating
    bsdinstall_etc) from actually running the installer on a given console.
    This will be used by a future change to start the installer on multiple
    consoles.
    
    Reviewed by:    brooks, gjb
    Differential Revision:  https://reviews.freebsd.org/D36803
---
 release/rc.local                         | 96 +------------------------------
 tools/build/mk/OptionalObsoleteFiles.inc |  1 +
 usr.sbin/bsdinstall/Makefile             |  3 +
 usr.sbin/bsdinstall/startbsdinstall      | 97 ++++++++++++++++++++++++++++++++
 4 files changed, 102 insertions(+), 95 deletions(-)

diff --git a/release/rc.local b/release/rc.local
index 9adaea468ae7..943c175ddd52 100755
--- a/release/rc.local
+++ b/release/rc.local
@@ -1,101 +1,7 @@
 #!/bin/sh
 # $FreeBSD$
 
-: ${BSDDIALOG_OK=0}
-: ${BSDDIALOG_CANCEL=1}
-: ${BSDDIALOG_HELP=2}
-: ${BSDDIALOG_EXTRA=3}
-: ${BSDDIALOG_ESC=5}
-: ${BSDDIALOG_ERROR=255}
-
 # resolv.conf from DHCP ends up in here, so make sure the directory exists
 mkdir /tmp/bsdinstall_etc
 
-kbdcontrol -d >/dev/null 2>&1
-if [ $? -eq 0 ]; then
-	# Syscons: use xterm, start interesting things on other VTYs
-	TERM=xterm
-
-	# Don't send ESC on function-key 62/63 (left/right command key)
-	kbdcontrol -f 62 '' > /dev/null 2>&1
-	kbdcontrol -f 63 '' > /dev/null 2>&1
-
-	if [ -z "$EXTERNAL_VTY_STARTED" ]; then
-		# Init will clean these processes up if/when the system
-		# goes multiuser
-		touch /tmp/bsdinstall_log
-		tail -f /tmp/bsdinstall_log > /dev/ttyv2 &
-		/usr/libexec/getty autologin ttyv3 &
-		EXTERNAL_VTY_STARTED=1
-	fi
-else
-	# Serial or other console
-	echo
-	echo "Welcome to FreeBSD!"
-	echo
-	echo "Please choose the appropriate terminal type for your system."
-	echo "Common console types are:"
-	echo "   ansi     Standard ANSI terminal"
-	echo "   vt100    VT100 or compatible terminal"
-	echo "   xterm    xterm terminal emulator (or compatible)"
-	echo
-	echo -n "Console type [vt100]: "
-	read TERM
-	TERM=${TERM:-vt100}
-fi
-export TERM
-
-# Query terminal size; useful for serial lines.
-resizewin -z
-
-if [ -f /etc/installerconfig ]; then
-	if bsdinstall script /etc/installerconfig; then
-		bsddialog --backtitle "FreeBSD Installer" --title "Complete" --no-cancel --ok-label "Reboot" --pause "Installation of FreeBSD complete! Rebooting in 10 seconds" 10 30 10
-		reboot
-	else
-		bsddialog --backtitle "FreeBSD Installer" --title "Error" --textbox /tmp/bsdinstall_log 0 0
-	fi
-	exit 
-fi
-
-bsddialog --backtitle "FreeBSD Installer" --title "Welcome" --extra-button --extra-label "Shell" --ok-label "Install" --cancel-label "Live CD" --yesno "Welcome to FreeBSD! Would you like to begin an installation or use the live CD?" 0 0
-
-case $? in
-$BSDDIALOG_OK)	# Install
-	# If not netbooting, have the installer configure the network
-	dlv=`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null`
-	if [ ${dlv:=0} -eq 0 -a ! -f /etc/diskless ]; then
-		BSDINSTALL_CONFIGCURRENT=yes; export BSDINSTALL_CONFIGCURRENT
-	fi
-
-	trap true SIGINT	# Ignore cntrl-C here
-	bsdinstall
-	if [ $? -eq 0 ]; then
-		bsddialog --backtitle "FreeBSD Installer" --title "Complete" --ok-label "Reboot" --extra-button --extra-label "Shutdown" --cancel-label "Live CD" --yesno "Installation of FreeBSD complete! Would you like to reboot into the installed system now?" 0 0
-
-		case $? in
-		$BSDDIALOG_OK)		# Reboot
-			reboot
-			;;
-		$BSDDIALOG_EXTRA)	# Shutdown
-			shutdown -p now
-			;;
-		$BSDDIALOG_CANCEL)	# Live CD
-			exit 0
-			;;
-		esac
-	else
-		. /etc/rc.local
-	fi
-	;;
-$BSDDIALOG_CANCEL)	# Live CD
-	exit 0
-	;;
-$BSDDIALOG_EXTRA)	# Shell
-	clear
-	echo "When finished, type 'exit' to return to the installer."
-	/bin/sh
-	. /etc/rc.local
-	;;
-esac
-
+/usr/libexec/bsdinstall/startbsdinstall
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index 484089d47203..f0ddd90b784c 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -474,6 +474,7 @@ OLD_FILES+=usr/libexec/bsdinstall/runconsoles
 OLD_FILES+=usr/libexec/bsdinstall/script
 OLD_FILES+=usr/libexec/bsdinstall/scriptedpart
 OLD_FILES+=usr/libexec/bsdinstall/services
+OLD_FILES+=usr/libexec/bsdinstall/startbsdinstall
 OLD_FILES+=usr/libexec/bsdinstall/time
 OLD_FILES+=usr/libexec/bsdinstall/umount
 OLD_FILES+=usr/libexec/bsdinstall/wlanconfig
diff --git a/usr.sbin/bsdinstall/Makefile b/usr.sbin/bsdinstall/Makefile
index d09bef110518..e71cae726536 100644
--- a/usr.sbin/bsdinstall/Makefile
+++ b/usr.sbin/bsdinstall/Makefile
@@ -10,6 +10,9 @@ GENHDRS=	opt_osname.h
 SRCS+=		${GENHDRS}
 CLEANFILES+=	${GENHDRS}
 
+SCRIPTS+=	startbsdinstall
+SCRIPTSDIR_startbsdinstall=	${LIBEXECDIR}/bsdinstall
+
 opt_osname.h: .PHONY
 	if ! grep -q "^#define OSNAME \"${OSNAME}\"$"" ${.TARGET}; then \
 		echo "#define OSNAME \"${OSNAME}\"" > ${.TARGET}; \
diff --git a/usr.sbin/bsdinstall/startbsdinstall b/usr.sbin/bsdinstall/startbsdinstall
new file mode 100644
index 000000000000..3a5a07e85b4d
--- /dev/null
+++ b/usr.sbin/bsdinstall/startbsdinstall
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+: ${BSDDIALOG_OK=0}
+: ${BSDDIALOG_CANCEL=1}
+: ${BSDDIALOG_HELP=2}
+: ${BSDDIALOG_EXTRA=3}
+: ${BSDDIALOG_ESC=5}
+: ${BSDDIALOG_ERROR=255}
+
+kbdcontrol -d >/dev/null 2>&1
+if [ $? -eq 0 ]; then
+	# Syscons: use xterm, start interesting things on other VTYs
+	TERM=xterm
+
+	# Don't send ESC on function-key 62/63 (left/right command key)
+	kbdcontrol -f 62 '' > /dev/null 2>&1
+	kbdcontrol -f 63 '' > /dev/null 2>&1
+
+	if [ -z "$EXTERNAL_VTY_STARTED" ]; then
+		# Init will clean these processes up if/when the system
+		# goes multiuser
+		touch /tmp/bsdinstall_log
+		tail -f /tmp/bsdinstall_log > /dev/ttyv2 &
+		/usr/libexec/getty autologin ttyv3 &
+		EXTERNAL_VTY_STARTED=1
+	fi
+else
+	# Serial or other console
+	echo
+	echo "Welcome to FreeBSD!"
+	echo
+	echo "Please choose the appropriate terminal type for your system."
+	echo "Common console types are:"
+	echo "   ansi     Standard ANSI terminal"
+	echo "   vt100    VT100 or compatible terminal"
+	echo "   xterm    xterm terminal emulator (or compatible)"
+	echo
+	echo -n "Console type [vt100]: "
+	read TERM
+	TERM=${TERM:-vt100}
+fi
+export TERM
+
+# Query terminal size; useful for serial lines.
+resizewin -z
+
+if [ -f /etc/installerconfig ]; then
+	if bsdinstall script /etc/installerconfig; then
+		bsddialog --backtitle "FreeBSD Installer" --title "Complete" --no-cancel --ok-label "Reboot" --pause "Installation of FreeBSD complete! Rebooting in 10 seconds" 10 30 10
+		reboot
+	else
+		bsddialog --backtitle "FreeBSD Installer" --title "Error" --textbox /tmp/bsdinstall_log 0 0
+	fi
+	exit 
+fi
+
+bsddialog --backtitle "FreeBSD Installer" --title "Welcome" --extra-button --extra-label "Shell" --ok-label "Install" --cancel-label "Live CD" --yesno "Welcome to FreeBSD! Would you like to begin an installation or use the live CD?" 0 0
+
+case $? in
+$BSDDIALOG_OK)	# Install
+	# If not netbooting, have the installer configure the network
+	dlv=`/sbin/sysctl -n vfs.nfs.diskless_valid 2> /dev/null`
+	if [ ${dlv:=0} -eq 0 -a ! -f /etc/diskless ]; then
+		BSDINSTALL_CONFIGCURRENT=yes; export BSDINSTALL_CONFIGCURRENT
+	fi
+
+	trap true SIGINT	# Ignore cntrl-C here
+	bsdinstall
+	if [ $? -eq 0 ]; then
+		bsddialog --backtitle "FreeBSD Installer" --title "Complete" --ok-label "Reboot" --extra-button --extra-label "Shutdown" --cancel-label "Live CD" --yesno "Installation of FreeBSD complete! Would you like to reboot into the installed system now?" 0 0
+
+		case $? in
+		$BSDDIALOG_OK)		# Reboot
+			reboot
+			;;
+		$BSDDIALOG_EXTRA)	# Shutdown
+			shutdown -p now
+			;;
+		$BSDDIALOG_CANCEL)	# Live CD
+			exit 0
+			;;
+		esac
+	else
+		. "$0"
+	fi
+	;;
+$BSDDIALOG_CANCEL)	# Live CD
+	exit 0
+	;;
+$BSDDIALOG_EXTRA)	# Shell
+	clear
+	echo "When finished, type 'exit' to return to the installer."
+	/bin/sh
+	. "$0"
+	;;
+esac
+