Re: git: d577d6178bde - main - bsdinstall release: Move code to a new startbsdinstall wrapper
Date: Tue, 11 Apr 2023 14:19:00 UTC
On 11 Apr 2023, at 15:14, Alfonso S. Siciliano <asiciliano@FreeBSD.org> wrote: > > 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 <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 @@ > > > 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 The code had no such info before; I merely moved it (moved / cut+paste, not copy+paste) and lightly adapted it as needed. Adding copyright and license information would presumably be worthwhile but is a separate activity and would require trawling through the history of the code. It probably started life small enough that copyright wasn’t relevant and then slowly grew to a point where it sort of is (though there’s nothing hugely interesting here). Jess >> +#!/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 >> +