aboutsummaryrefslogtreecommitdiff
path: root/release/rc.local
diff options
context:
space:
mode:
Diffstat (limited to 'release/rc.local')
-rwxr-xr-xrelease/rc.local133
1 files changed, 49 insertions, 84 deletions
diff --git a/release/rc.local b/release/rc.local
index 0b8df48b2085..a2c1676313c5 100755
--- a/release/rc.local
+++ b/release/rc.local
@@ -1,92 +1,57 @@
#!/bin/sh
-# $FreeBSD$
-
-: ${BSDDIALOG_OK=0}
-: ${BSDDIALOG_CANCEL=1}
-: ${BSDDIALOG_HELP=2}
-: ${BSDDIALOG_EXTRA=3}
-: ${BSDDIALOG_ESC=5}
-: ${BSDDIALOG_ERROR=255}
-
-MACHINE=`uname -m`
+#
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (c) 2022 Jessica Clarke <jrtc27@FreeBSD.org>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+
+bsdinstall_multicons_disabled()
+{
+ local var value
+
+ var=bsdinstall.multicons_disable
+ value=`kenv -q $var`
+ case "${value:-NO}" in
+ [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
+ return 0
+ ;;
+ [Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0)
+ return 1
+ ;;
+ *)
+ warn "$var is not set properly, ignoring"
+ return 1
+ ;;
+ esac
+}
# 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
+if bsdinstall_multicons_disabled; then
+ /usr/libexec/bsdinstall/startbsdinstall primary
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 " cons25w cons25w terminal"
- echo
- echo -n "Console type [vt100]: "
- read TERM
- TERM=${TERM:-vt100}
+ /usr/libexec/bsdinstall/runconsoles /usr/libexec/bsdinstall/startbsdinstall %
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" --yes-label "Reboot" --no-label "Live CD" --yesno "Installation of FreeBSD complete! Would you like to reboot into the installed system now?" 0 0 && reboot
- 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
-