Installer import into contrib (real import this time)
[dragonfly.git] / contrib / bsdinstaller-1.1.6 / root_skels / installer / usr / local / bin / installer
1 #!/bin/sh
2
3 # installer - start installer frontend and backend as per pfi config.
4 # $Id: installer,v 1.18 2005/03/19 05:31:14 cpressey Exp $
5 # $DragonFly: src/contrib/bsdinstaller-1.1.6/root_skels/installer/usr/local/bin/Attic/installer,v 1.1.1.1 2008/03/12 22:15:45 dave Exp $
6
7 ### SUBS ###
8
9 background_backend()
10 {
11         RENDEZVOUS=$1
12         TRANSPORT=$2
13         cp /usr/local/sbin/dfuibe_installer /var/run/dfuibe_installer
14         /var/run/dfuibe_installer -r $RENDEZVOUS -t $TRANSPORT >/dev/null 2>&1
15         RESULT=$?
16         case "$RESULT" in
17         0)
18                 ;;
19         5)
20                 $pfi_shutdown_command
21                 ;;
22         *)
23                 ;;
24         esac
25 }
26
27 installer_start()
28 {
29         # Console start sequence:
30         # - Backend (and all other logging) goes to console (ttyv0)
31         # - curses frontend starts on ttyv1.
32         # - Uses vidcontrol -s 2 to switch to ttyv1 once the frontend is up.
33
34         echo -n "Starting installer.  "
35
36         if [ -r /etc/defaults/pfi.conf ]; then
37                 . /etc/defaults/pfi.conf
38         fi
39
40         if [ -r /etc/pfi.conf ]; then
41                 echo "Reading /etc/pfi.conf ..."
42                 . /etc/pfi.conf
43         else
44                 echo "/etc/pfi.conf not found, starting interactive install."
45         fi
46
47         # We can set up any install variables and such
48         # here by examining pfi_* variables.
49
50         if [ "X$pfi_run" != "X" ]; then
51                 pfi_frontend=none
52                 $pfi_run
53         fi
54
55         case "X$pfi_dfui_transport" in
56         Xcaps)
57                 sysctl kern.caps_enabled=1
58                 RENDEZVOUS="installer"
59                 ;;
60         Xnpipe)
61                 RENDEZVOUS="installer"
62                 ;;
63         Xtcp)
64                 RENDEZVOUS="9999"
65                 ;;
66         *)
67                 echo "Unsupported DFUI transport '$pfi_dfui_transport'."
68                 return
69                 ;;
70         esac
71
72         if [ "X$SERIAL" = "XYES" ]; then
73                 background_backend $RENDEZVOUS $pfi_dfui_transport &
74                 sleep 1
75                 ESCDELAY=$pfi_curses_escdelay \
76                     /usr/local/sbin/dfuife_curses \
77                         -r $RENDEZVOUS \
78                         -t $pfi_dfui_transport \
79                         -b /usr/local/share/dfuife_curses/fred.txt \
80                     2>/dev/null
81                 pfi_frontend=none
82         fi
83
84         case "X$pfi_frontend" in
85         Xqt)
86                 background_backend $RENDEZVOUS $pfi_dfui_transport &
87                 sleep 1
88                 rcrun forcestart moused
89                 X -configure
90                 mv /root/xorg.conf.new /etc/X11/xorg.conf
91                 echo "exec dfuife_qt" > /root/.xinitrc
92                 xinit
93                 ;;
94         Xcgi)
95                 $pfi_backend -r $RENDEZVOUS -t $pfi_dfui_transport
96                 RESULT=$?
97                 ;;
98         Xcurses)
99                 ps auwwwxxx > /tmp/ps.txt
100                 if grep -q dfuife_curses /tmp/ps.txt; then
101                         # Frontend is already running.
102                 else
103                         ESCDELAY=$pfi_curses_escdelay \
104                             /usr/local/sbin/dfuife_curses \
105                                 -r $RENDEZVOUS \
106                                 -t $pfi_dfui_transport \
107                                 -b /usr/local/share/dfuife_curses/fred.txt \
108                             2>/dev/ttyv0 </dev/ttyv1 >/dev/ttyv1 &
109                 fi
110                 rm -f /tmp/ps.txt
111                 sleep 1
112                 vidcontrol -s 2
113                 $pfi_backend -r $RENDEZVOUS -t $pfi_dfui_transport
114                 RESULT=$?
115                 sleep 1
116                 killall dfuife_curses
117                 vidcontrol -s 1
118                 ;;
119         Xnone)
120                 RESULT=0
121                 ;;
122         *)
123                 echo "Unknown installer frontend '$pfi_frontend'."
124                 return
125                 ;;
126         esac
127
128         case "$RESULT" in
129         0)
130                 ;;
131         5)
132                 $pfi_shutdown_command
133                 ;;
134         *)
135                 ;;
136         esac
137 }
138
139 ### MAIN ###
140
141 if [ "X$1" = "Xserial" ]; then
142         SERIAL=YES
143 fi
144
145 TTY=`w | awk '{ print $2 }' | tail -n1`
146 if [ "tty$TTY" = "ttyd0" ]; then
147         SERIAL=YES
148 fi
149
150 ps auwwwxxx > /tmp/ps.txt
151 if grep -q dfuibe_installer /tmp/ps.txt; then
152         # Installer is already running. Log in normally.
153         rm -f /tmp/ps.txt
154 else
155         rm -f /tmp/ps.txt
156         installer_start
157 fi
158
159 ### END of installer ###