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