This commit was manufactured by cvs2svn to create tag
[opensuse:installation-images.git] / data / root / etc / inst_setup
1 #! /bin/sh
2 #
3
4 #                              ***  NOTE  ***
5 #
6 # linuxrc now takes care of integrating the instsys. No need to fiddle with
7 # symlinks and such here.
8 #
9 # linuxrc-based tools are in /lbin.
10 #
11
12 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/lib/YaST2/bin:/usr/X11/bin
13
14 if [ -f /.timestamp ] ; then
15   read build_time < /.timestamp
16   now_time=`TZ= LANG= LC_ALL= date +%Y%m%d`
17   if [ "$now_time" -lt "$build_time" ] ; then
18        echo
19        echo "your system time is not correct:"
20        TZ= date
21        echo "setting system time to:"
22        TZ= LANG= LC_ALL= date ${build_time#????*}1234${build_time%*????}.56
23        echo
24        sleep 3
25   fi
26 fi
27
28 if [ -x /sbin/udev -a -x /sbin/udevstart ] ; then
29 echo -n "creating device nodes .."
30 /sbin/udevstart
31 echo ". done"
32 fi
33 # FIXME fix udev to not delete valid device nodes
34 # /proc/self/fd/N will fail
35 exec < /dev/console > /dev/console 2>&1 3>&1
36
37 if [ ! -x /sbin/hotplug -a -x /sbin/udev ] ; then
38 echo using udev as hotplug helper
39 echo /sbin/udev > /proc/sys/kernel/hotplug
40 fi
41
42 yast="$1"
43 shift
44 echo $yast > /tmp/linuxrc_installer_name
45 export YAST2_SSH=false
46 unset SSH_FAILED
47 stty sane
48
49 if [ -s /etc/install.inf ]; then
50   hostname=`sed -n -e 's,^Hostname: ,,p' /etc/install.inf`
51 else
52   hostname=`hostname`
53 fi
54 #
55 # kernel 2.6 uses linuxkeycodes for all keyboards
56 # 2.4 kernels may still use ADB keycodes, but all the maps have the new encoding 
57 # since post 9.0. Just switch the kernel side if the default is still ADB
58 test -f /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes && echo 1 > /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes
59
60 #
61 # echo -en \\033c
62 #
63 # linuxrc passes the root directory of the freshly mounted instsys in
64 # the environment variable INSTSYS.
65 #
66 # a few files should be restored when installation has completed if we
67 # return to linuxrc.
68 FILES_TO_RESTORE="/etc/ld.so.cache"
69 for file in $FILES_TO_RESTORE
70 do
71     test -e $file && mv $file $file.initrd
72 done
73 #
74
75 # effectively makes the kernel module dir tree writable
76 /lbin/lndir $INSTSYS/lib/modules /lib/modules
77 # make depmod happy if the running kernel doesnt match
78 mkdir -p /lib/modules/`uname -r`
79
80 echo "integrating the shared objects of the installation system..."
81 ldconfig
82
83 # driver update: rebuild yast update tree
84 [ -L /y2update ] && rm -f /y2update
85 [ -d /update/y2update ] && mv /update/y2update /update/y2update.bak
86 for i in /update/[0-9]*/y2update ; do
87   [ -d "$i" ] && cp -a "$i" /update
88 done
89 if [ -d /update/y2update ] ; then
90   rm -rf /update/y2update.bak
91 else
92   [ -d /update/y2update.bak ] && mv /update/y2update.bak /update/y2update
93 fi
94
95 # driver update: add files to inst-sys
96 for i in /update/[0-9]*/inst-sys ; do
97   [ -d "$i" ] && adddir "$i" /
98 done
99
100 # driver update: run update.pre scripts
101 for i in /update/[0-9]*/install/update.pre ; do
102   [ -x "$i" ] && "$i"
103 done
104
105 if test -x /sbin/syslogd
106 then
107     checkproc /sbin/syslogd || {
108         echo "starting syslog (messages are logged to /dev/tty4)..."
109         sh -c '/sbin/syslogd >&1'
110     }
111 fi
112
113 if test -x /sbin/klogd
114 then
115     checkproc /sbin/klogd || {
116         echo "starting klogd ..."
117         /sbin/klogd -c 1
118 }
119 fi
120
121 arch=$(uname -m)
122
123 case "$arch" in
124   i?86)
125     # remove modules to free memory
126     if [ "$REMOVE_MODULES" = 1 ] ; then
127       rm -f /modules/*
128     fi
129   ;;
130 esac
131
132 # Update module config.
133 #
134 # Note: modules from initrd are below *-override-* and will take precedence.
135 #
136 echo "integrating kernel modules of the installation system..."
137 depmod -a 2>/dev/null
138
139 # exists only on s390
140 test -r /etc/netsetup.inf && cat /etc/netsetup.inf >> /etc/install.inf
141
142 # boot with usessh=1 or use linuxrc to enable ssh 
143 if grep -q "^UseSSH:.*1" /etc/install.inf ; then
144         test -x /sbin/inst_setup_ssh  &&  . /sbin/inst_setup_ssh
145 fi
146
147 # for yast debugging.
148 grep -iwq y2debug < /proc/cmdline && {
149 export Y2DEBUG=1
150 export Y2MAXLOGSIZE=50000
151 export Y2MAXLOGNUM=5
152 test -d $INSTSYS/root/.yast2 && cp -a $INSTSYS/root/.yast2 /root
153 }
154
155 export XCURSOR_THEME=crystalwhite
156
157 # yast1 doesn't like it
158 rm -f /etc/fstab
159
160 # start shell, useful on iSeries or via serial console
161 rm -f /.start_shell
162 grep -qwi start_shell /proc/cmdline && echo 42 > /.start_shell
163 function start_shell() {
164 echo 
165 echo "ATTENTION"
166 echo "Starting shell... (use 'exit' to proceed)"
167 bash --init-file /root/.bash_login
168 }
169
170 if [ -f /.start_shell ] ; then
171         start_shell
172 fi
173
174 # anounce VNC via slpd
175 if grep -qi "^VNC:.*1" /etc/install.inf ; then
176         echo starting slpd to anounce VNC...
177         test -x /usr/sbin/slpd  &&  /usr/sbin/slpd
178         /usr/bin/slptool register "service:YaST.installation.suse:vnc://${hostname}:5901"
179 fi
180
181 ec=
182 if [ "$YAST2_SSH" = "true" ] ; then
183 cat <<EOF
184
185       ***  login using 'ssh -X root@${hostname}'  ***
186       ***  run '$yast' to start the installation  ***
187
188 EOF
189 while true ; do
190 #echo -n .
191 sleep 3
192 # this file is created from YaST2.firstboot after installation
193 test ! -f /tmp/YaST2_ssh_installation_finished && continue
194 # you can touch this file to keep the ssh shell
195 # useful for debugging the installer
196 test -f /tmp/YaST2_keep_sshd_running && continue
197 break
198 done
199
200 ec=$(cat /tmp/YaST2_ssh_installation_finished)
201 rm -f /tmp/YaST2_ssh_installation_finished
202 elif [ "$yast" = yast ] ; then
203 # now, run yast
204 echo "starting yast..."
205   /sbin/yast "$@" ; ec=$?
206 elif [ "$yast" ] ; then
207 # now, run yast
208 echo "starting $yast..."
209   "$yast" "$@" ; ec=$?
210 fi
211
212 # start shell, useful on iSeries or via serial console
213 if [ -f /.start_shell ] ; then
214         start_shell
215 fi
216
217 test -r /etc/netsetup.inf && cat /etc/netsetup.inf >> /etc/install.inf
218 # still needed?
219 #[ $ec -ne 0 ] && echo "An Error happened during installation"
220 #ec=0
221
222 # stop slpd
223 killall slpd 2>/dev/null >/dev/null
224 # stop vnc
225 killall Xvnc 2>/dev/null >/dev/null
226 # stop sshd
227 killall sshd 2>/dev/null >/dev/null
228
229 umount devpts 2>/dev/null
230
231 for file in $FILES_TO_RESTORE
232 do
233     test -e $file.initrd && mv $file.initrd $file
234 done
235
236 rm -f /etc/modules.conf
237 rm -f /.start_shell
238
239 exit $ec