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
This commit is contained in:
parent
a2464ee127
commit
d577d6178b
@ -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
|
||||
|
@ -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
|
||||
|
@ -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}; \
|
||||
|
97
usr.sbin/bsdinstall/startbsdinstall
Normal file
97
usr.sbin/bsdinstall/startbsdinstall
Normal file
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user