On 03/10/2022 18:09, Jessica Clarke wrote:
The branch main has been updated by jrtc27:
URL:
https://cgit.FreeBSD.org/src/commit/?id=d577d6178bdeff86dbff0b954659ac5e23c17b2a
commit d577d6178bdeff86dbff0b954659ac5e23c17b2a
Author: Jessica Clarke <jrt...@freebsd.org>
AuthorDate: 2022-10-03 16:09:16 +0000
Commit: Jessica Clarke <jrt...@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 @@
This commit copy&paste code from scripts/auto to a new file. Why weren't
the SPDX, Copyright and License copied and added?
I was inactive for a few months. Do we have a new policy to add new
files in BASE without legal info, bsd license, etc?
https://cgit.freebsd.org/src/tree/usr.sbin/bsdinstall/startbsdinstall
+#!/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
+