1#! /bin/sh -m
2# $NetBSD: install.sh,v 1.5 2023/02/12 19:27:20 abs Exp $
3#
4# -
5#  Copyright (c) 2010 The NetBSD Foundation, Inc.
6#  All rights reserved.
7#
8#  This code is derived from software contributed to The NetBSD Foundation
9#  by Martin Husemann <martin@NetBSD.org>.
10#
11#  Redistribution and use in source and binary forms, with or without
12#  modification, are permitted provided that the following conditions
13#  are met:
14#  1. Redistributions of source code must retain the above copyright
15#     notice, this list of conditions and the following disclaimer.
16#  2. Redistributions in binary form must reproduce the above copyright
17#     notice, this list of conditions and the following disclaimer in the
18#     documentation and/or other materials provided with the distribution.
19#
20#  THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22#  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23#  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24#  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30#  POSSIBILITY OF SUCH DAMAGE.
31
32
33# setup basic environment
34PATH=/sbin:/bin:/usr/bin:/usr/sbin:/
35export PATH
36
37termfile=/tmp/sysinst.term
38
39# Check if we are on a framebuffer or on serial console and default
40# the terminal type accordingly.
41# There is no /var/db/dev.cdb, so sysctl might not map the devicename properly;
42# ttyE0 is 90,0 -> 0x5a00
43case $(sysctl -nx kern.consdev) in
44 0000000000005a0*)
45    TERM=wsvt25
46    ;;
47 *)
48    if [ -r ${termfile} ]; then
49          . ${termfile}
50    else
51          TERM=vt220
52    fi
53    ;;
54esac
55
56export TERM
57HOME=/
58export HOME
59BLOCKSIZE=1k
60export BLOCKSIZE
61EDITOR=ed
62export EDITOR
63SHELL=/bin/sh
64export SHELL
65
66umask 022
67
68stty newcrt werase ^W intr ^C kill ^U erase ^?
69if [ $TERM != "wsvt25" ]; then
70          cat << "EOM"
71
72
73You are using a serial console, we do not know your terminal emulation.
74Please select one, typical values are:
75
76          vt100
77          ansi
78          xterm
79
80EOM
81          echo -n "Terminal type (just hit ENTER for '$TERM'): "
82          read ans
83          if [ -n "$ans" ];then
84              TERM=$ans
85          fi
86fi
87
88# run the installation or upgrade script.
89cd /
90cmd=/usr/sbin/sysinst
91
92while [ -n "${cmd}" ]
93do
94          ${cmd}
95          if [ $? = 4 ]; then
96                    echo "Oops, something went wrong - we will try again"
97                    exit
98          else
99                    if [ -n "$(jobs)" ]; then
100                              tput clear
101                              echo "You have stopped sysinst, return to it by" \
102                                        "typing 'exit' or ^D."
103                              ${SHELL} -i -E
104                              cmd="fg"
105                    else
106                              cmd=""
107                    fi
108          fi
109done
110
111# remember terminal type, now that we know it for sure
112echo "TERM=${TERM}" > ${termfile}
113echo
114echo "To return to the installer, quit this shell by typing 'exit' or ^D."
115exec ${SHELL} -E
116