1 | #!/bin/bash |
---|
2 | #(C)DatuX 2005 - all rights reserved |
---|
3 | rm /INSTALLOK 2>/dev/null |
---|
4 | |
---|
5 | . dialoglib.sh || exit 1 |
---|
6 | PRODUCT=`cat /proc/cmdline | sed 's/.*theme://g' | cut -c1` |
---|
7 | BRAND="Syn-3" |
---|
8 | PKGPATH=../packages |
---|
9 | TARGETPATH=/mnt/instroot |
---|
10 | |
---|
11 | |
---|
12 | #open a few vt's for debugging |
---|
13 | openvt bash |
---|
14 | openvt bash |
---|
15 | openvt bash |
---|
16 | |
---|
17 | #################################### Set background when in X |
---|
18 | if [ "$DISPLAY" ]; then |
---|
19 | xv -root -quit -max -smooth /etc/splash/S/800x600.jpg |
---|
20 | fi |
---|
21 | |
---|
22 | #################################### Select langauge |
---|
23 | TITLE="Language selection" |
---|
24 | QUERY="`_SelectLanguage`" |
---|
25 | LANGS= |
---|
26 | for ID in `ls lang_*|sort -r|sed s/lang_//|sed 's/.sh//'`; do |
---|
27 | LANGS="$LANGS '$ID' '`_Lang_$ID`' " |
---|
28 | done |
---|
29 | |
---|
30 | export LANG |
---|
31 | LANG= |
---|
32 | while [ "$LANG" = "" ]; do |
---|
33 | LANG=`menu $LANGS` || abort |
---|
34 | done |
---|
35 | |
---|
36 | #reload with new language |
---|
37 | . dialoglib.sh || exit 1 |
---|
38 | |
---|
39 | |
---|
40 | #################################### STEP 1 |
---|
41 | #language, license and installmode |
---|
42 | TITLE="`_Step1License`" |
---|
43 | |
---|
44 | if [ $DISPLAY ]; then |
---|
45 | license license.txt || abort |
---|
46 | else |
---|
47 | license license.txt |
---|
48 | accept "`_DoYouAcceptTheLicense`" || abort |
---|
49 | fi |
---|
50 | |
---|
51 | ## Select install mode |
---|
52 | MODES="NORMAL '`_NormalMode`' |
---|
53 | ADVANCED '`_AdvancedMode`' |
---|
54 | SECONDARY '`_SlaveMode`' |
---|
55 | " |
---|
56 | #disabled, we hebben nu een hybride image die ook makkelijk naar usb kan |
---|
57 | #COPY '`_CopyInstaller`' |
---|
58 | |
---|
59 | TITLE="`_SelectInstallMode`" |
---|
60 | QUERY="`_SelectInstallMode`" |
---|
61 | MODE= |
---|
62 | while [ "$MODE" = "" ]; do |
---|
63 | MODE=`menu $MODES` || abort |
---|
64 | |
---|
65 | #copy installer will return to this menu |
---|
66 | if [ "$MODE" == "COPY" ]; then |
---|
67 | sh copyinstallerask.sh /mnt/cdrom |
---|
68 | MODE="" |
---|
69 | fi |
---|
70 | done |
---|
71 | |
---|
72 | |
---|
73 | |
---|
74 | #################################### STEP 2 |
---|
75 | TITLE="`_Step2Configuration`" |
---|
76 | |
---|
77 | ########### check system |
---|
78 | progress "`_CheckingSystem`" |
---|
79 | DISCS=`unuseddisks` |
---|
80 | if [ "$DISCS" == "" ]; then |
---|
81 | abort "`_ErrorNoDisksDetected`" |
---|
82 | fi |
---|
83 | |
---|
84 | if [ "$MODE" != "ADVANCED" ]; then |
---|
85 | if ! ifconfig eth0 &>/dev/null; then |
---|
86 | abort "`_ErrorNoNetworkCards`" |
---|
87 | fi |
---|
88 | fi |
---|
89 | |
---|
90 | ########### select discs to use |
---|
91 | for DISC in $DISCS; do |
---|
92 | #get extra info for use to regonize disc |
---|
93 | SELECT="$SELECT $DISC '`getdiskinfo $DISC`' 0"; |
---|
94 | done |
---|
95 | |
---|
96 | |
---|
97 | QUERY=`_SelectDiscsToUse` |
---|
98 | DISCS= |
---|
99 | while ! [ "$DISCS" ]; do |
---|
100 | DISCS=`checklist $SELECT` || abort |
---|
101 | done |
---|
102 | |
---|
103 | #disabled, working on this |
---|
104 | #if yesno `_AutomaticPartitioning`; then |
---|
105 | if true; then |
---|
106 | #automatic partitioning |
---|
107 | |
---|
108 | ########## confirmation for discs |
---|
109 | QUERY="`_WarningDisksWillBeErased` |
---|
110 | |
---|
111 | `echo $DISCS|sed 's/ /\n/g'` |
---|
112 | |
---|
113 | `_DoYouWantToContinue` |
---|
114 | " |
---|
115 | QUERY="`quote "$QUERY"`"; |
---|
116 | if ! nextcancel $QUERY; then |
---|
117 | abort |
---|
118 | fi; |
---|
119 | else |
---|
120 | shell 'Dit is nog niet af, fix nu zelf de partities en gebruik initboot.sh en initdata.sh voor de data en boot partities' |
---|
121 | fi |
---|
122 | |
---|
123 | #Specifify the default settings for autopart.sh here: |
---|
124 | #default sizes for partitions |
---|
125 | export SIZE_BOOT=128M |
---|
126 | export SIZE_ROOT=10G |
---|
127 | export SIZE_SWAP=4G |
---|
128 | export SIZE_HOME= |
---|
129 | export SIZE_FREE=10G |
---|
130 | export USE_GPT=1 |
---|
131 | export USE_MD=1 |
---|
132 | if [ "$MODE" != "NORMAL" ]; then |
---|
133 | if ! yesno "Do you want to use GPT partioning? (select NO to use legacy msdos paritioning)"; then |
---|
134 | USE_GPT= |
---|
135 | fi |
---|
136 | |
---|
137 | if ! yesno "Do you want to use software RAID? (Linux MD)\nChoose NO if you have a hardware RAID controller or a single disk thats >2TB.\n(If you selected multple disks, the disks will be combined in logical volume.)"; then |
---|
138 | USE_MD= |
---|
139 | fi |
---|
140 | |
---|
141 | QUERY="Enter boot partition size. Default: $SIZE_BOOT" |
---|
142 | SIZE_BOOT=`inputbox $SIZE_BOOT` |
---|
143 | |
---|
144 | QUERY="Enter root partition size. Default: $SIZE_ROOT" |
---|
145 | SIZE_ROOT=`inputbox $SIZE_ROOT` |
---|
146 | |
---|
147 | QUERY="Enter swap partition size. Default: $SIZE_SWAP Leave blank for no swap." |
---|
148 | SIZE_SWAP=`inputbox $SIZE_SWAP` |
---|
149 | |
---|
150 | QUERY="Enter home partition size. Leave blank to use all free space." |
---|
151 | SIZE_HOME=`inputbox $SIZE_HOME` |
---|
152 | |
---|
153 | if [ "$SIZE_HOME" == "" ]; then |
---|
154 | QUERY="How much snapshot space do you want? Default: $SIZE_FREE" |
---|
155 | SIZE_FREE=`inputbox $SIZE_FREE` |
---|
156 | fi |
---|
157 | fi |
---|
158 | |
---|
159 | |
---|
160 | #secondary server network configuration |
---|
161 | if [ "$MODE" == "SECONDARY" ] ; then |
---|
162 | |
---|
163 | if [ "$DISPLAY" ]; then |
---|
164 | xterm ./redundancy_status.sh & |
---|
165 | sleep 1 |
---|
166 | fi |
---|
167 | |
---|
168 | export COUNT |
---|
169 | COUNT=0 |
---|
170 | CARDS="`linkbeep -l|cut -f3-4|while read CARD; do echo "'eth$COUNT' '$CARD'";(( COUNT++ ));done`" |
---|
171 | QUERY="`_SelectNetworkCard`" |
---|
172 | CARD= |
---|
173 | while [ "$CARD" = "" ]; do |
---|
174 | CARD=`menu $CARDS` || abort |
---|
175 | done |
---|
176 | MAC=`cat /sys/class/net/$CARD/address` |
---|
177 | |
---|
178 | |
---|
179 | ZONES="`cat zones.txt`" |
---|
180 | QUERY="`_SelectNetworkZone`" |
---|
181 | ETH= |
---|
182 | while [ "$ETH" = "" ]; do |
---|
183 | ETH=`menu $ZONES` || abort |
---|
184 | done |
---|
185 | |
---|
186 | QUERY="`_EnterPrimaryIP`" |
---|
187 | while ! ./checkip.sh "$LOCAL_IP"; do |
---|
188 | LOCAL_IP=`inputbox 169.254.13.1` |
---|
189 | done |
---|
190 | |
---|
191 | QUERY="`_EnterSecondaryIP`" |
---|
192 | while ! ./checkip.sh "$REMOTE_IP"; do |
---|
193 | REMOTE_IP=`inputbox 169.254.13.2` |
---|
194 | done |
---|
195 | |
---|
196 | if yesno "Is auto split-brain recovery enabled on the other server?"; then |
---|
197 | AUTO_RECOVER="--after-sb-0pri discard-least-changes --after-sb-1pri discard-secondary" |
---|
198 | else |
---|
199 | AUTO_RECOVER="" |
---|
200 | fi |
---|
201 | |
---|
202 | |
---|
203 | #normal network configuration |
---|
204 | #not for certain products and slaves |
---|
205 | elif [ "$PRODUCT" != "P" ] && [ "$PRODUCT" != "K" ]; then |
---|
206 | while true; do |
---|
207 | QUERY="`_EnterIP`" |
---|
208 | IP= |
---|
209 | while ! ./checkip.sh "$IP"; do |
---|
210 | IP=`inputbox` |
---|
211 | done |
---|
212 | |
---|
213 | QUERY="`_EnterNetmask`" |
---|
214 | NETMASK= |
---|
215 | while ! ./checkip.sh "$NETMASK"; do |
---|
216 | NETMASK=`inputbox` |
---|
217 | done |
---|
218 | |
---|
219 | QUERY="`_EnterGateway`" |
---|
220 | GATEWAY=bla |
---|
221 | while ! ./checkip.sh "$GATEWAY" && [ "$GATEWAY" ]; do |
---|
222 | GATEWAY=`inputbox` |
---|
223 | done |
---|
224 | |
---|
225 | QUERY="`_CheckNetworkSettings $IP $NETMASK $GATEWAY`" |
---|
226 | QUERY="`quote "$QUERY"`"; |
---|
227 | nextcancel $QUERY && break |
---|
228 | done |
---|
229 | fi |
---|
230 | |
---|
231 | ############ ASK IF USER WANTS TO STRESS TEST |
---|
232 | if [ "$MODE" == "ADVANCED" ] && ! yesno "`_RunStressTest`"; then |
---|
233 | STRESS=1 |
---|
234 | fi |
---|
235 | |
---|
236 | ############################### STEP 3 |
---|
237 | TITLE="`_Step3Installation`" |
---|
238 | |
---|
239 | #prepare logfile with additional info: |
---|
240 | _InstallationFailedCheckThisInfo > /tmp/initdisk.log |
---|
241 | |
---|
242 | progress "`_InitializingDisks`" |
---|
243 | ./autopart.sh $DISCS >> /tmp/initdisk.log |
---|
244 | CODE=$? |
---|
245 | |
---|
246 | #we need a reboot? |
---|
247 | if [ $CODE == "2" ]; then |
---|
248 | abort "`_RebootRequiredForPartioning`" |
---|
249 | fi |
---|
250 | |
---|
251 | #failed some other way? |
---|
252 | if [ $CODE == "1" ]; then |
---|
253 | showfile /tmp/initdisk.log |
---|
254 | abort |
---|
255 | fi |
---|
256 | |
---|
257 | ################################################ |
---|
258 | |
---|
259 | if [ "$MODE" == "SECONDARY" ]; then |
---|
260 | ############################### prepare for slavemode |
---|
261 | progress "Preparing for secondary server installation..." |
---|
262 | |
---|
263 | #The only thing we need for a drbd slave is a drbd config. |
---|
264 | #The rest will get here automaticly after |
---|
265 | #the current boot continues and the drbd syncronisation is started. |
---|
266 | |
---|
267 | #mount our boot partition |
---|
268 | mkdir -p $TARGETPATH/boot &>/dev/null |
---|
269 | if ! mount /dev/md0 $TARGETPATH/boot 2>/dev/null; then |
---|
270 | abort "`_ErrorMountingDisk`" |
---|
271 | fi |
---|
272 | #temporary drbd configuration to bootstrap the system |
---|
273 | #it will be overwritten during syncronisation. |
---|
274 | echo -e "$MAC\t$ETH\n" > $TARGETPATH/boot/if-assign.conf |
---|
275 | |
---|
276 | |
---|
277 | echo -e "CLUSTER_ID=all\nDRBD=1\nETH=$ETH\nRATE=10000\nLOCAL_IP=$LOCAL_IP\nREMOTE_IP=$REMOTE_IP\nREBUILD=1\nAUTO_RECOVER='$AUTO_RECOVER'\t" > $TARGETPATH/boot/drbd.conf |
---|
278 | umount $TARGETPATH/boot |
---|
279 | |
---|
280 | else |
---|
281 | ############################### normale mode, install packages |
---|
282 | |
---|
283 | progress "`_MountingDisks`" |
---|
284 | mkdir -p $TARGETPATH &>/dev/null |
---|
285 | if ! mount -o inode32 /dev/syn3/root $TARGETPATH 2>/dev/null; then |
---|
286 | abort "`_ErrorMountingDisk`" |
---|
287 | fi |
---|
288 | |
---|
289 | mkdir $TARGETPATH/home &>/dev/null |
---|
290 | if ! mount -o inode32 /dev/syn3/home $TARGETPATH/home 2>/dev/null; then |
---|
291 | abort "`_ErrorMountingDisk`" |
---|
292 | fi |
---|
293 | |
---|
294 | mkdir $TARGETPATH/boot &>/dev/null |
---|
295 | if ! mount /dev/md0 $TARGETPATH/boot 2>/dev/null; then |
---|
296 | abort "`_ErrorMountingDisk`" |
---|
297 | fi |
---|
298 | |
---|
299 | # make sure /var/log is stored in /home: |
---|
300 | mkdir -p $TARGETPATH/home/system/log |
---|
301 | mkdir -p $TARGETPATH/var |
---|
302 | ln -s ../home/system/log $TARGETPATH/var/log |
---|
303 | |
---|
304 | #run stresstest |
---|
305 | if [ "$STRESS" ]; then |
---|
306 | progress "`_RunningStresstestPressEnterToExit`" |
---|
307 | swapon /dev/syn3/swap |
---|
308 | cd $TARGETPATH/home |
---|
309 | ifconfig eth0 $IP $NETMASK &>/dev/null |
---|
310 | if ! execute syn3-stress $GATEWAY 1>&2; then |
---|
311 | msgbox "`_WarningStresstestFailed`" |
---|
312 | fi |
---|
313 | swapoff /dev/syn3/swap |
---|
314 | fi |
---|
315 | |
---|
316 | #install packages |
---|
317 | LIST="$PKGPATH/install.list" |
---|
318 | TOTAL=`cat $LIST|wc -l`; |
---|
319 | COUNT=0 |
---|
320 | for SHORTPKG in `cat $LIST`; do |
---|
321 | # packagename-version-arch-build.tgz |
---|
322 | PKG="$PKGPATH/$SHORTPKG-*.tgz" |
---|
323 | echo "XXX"; |
---|
324 | BASENAME=`basename $PKG` |
---|
325 | echo -e "`_InstallingPackage \"$SHORTPKG ($BASENAME)\"` ..." |
---|
326 | echo "XXX"; |
---|
327 | ROOT=$TARGETPATH installpkg $PKG &> /tmp/insterr.log || exit 1 |
---|
328 | (( COUNT++ )) |
---|
329 | (( PERC=99*COUNT/TOTAL )) |
---|
330 | #voorkom vroegtijdige exit van dialog: |
---|
331 | if [ $PERC -gt 99 ]; then |
---|
332 | PERC=99 |
---|
333 | fi |
---|
334 | echo $PERC |
---|
335 | done | gauge "`_InstallingPackages`" |
---|
336 | |
---|
337 | INSTERR=$PIPESTATUS |
---|
338 | |
---|
339 | #something went wrong? |
---|
340 | if [ $INSTERR != "0" ]; then |
---|
341 | _InstallationFailedCheckThisInfo > /tmp/error.log |
---|
342 | cat /tmp/insterr.log >> /tmp/error.log |
---|
343 | showfile /tmp/error.log |
---|
344 | abort "`_InstallationHasFailed`" |
---|
345 | fi |
---|
346 | |
---|
347 | ############################### STEP 4 |
---|
348 | TITLE="`_Step4FinishInstallation`" |
---|
349 | |
---|
350 | mkdir -p $TARGETPATH/etc/network |
---|
351 | touch $TARGETPATH/etc/network/adaptor.conf |
---|
352 | if [ "$IP" ]; then |
---|
353 | echo "0,$IP,$NETMASK,0" > $TARGETPATH/etc/network/adaptor.conf |
---|
354 | fi |
---|
355 | echo "$GATEWAY" > $TARGETPATH/etc/network/gateway.conf |
---|
356 | |
---|
357 | cp version $TARGETPATH/etc/syn3-version || exit 1 |
---|
358 | chmod 644 $TARGETPATH/etc/syn3-version |
---|
359 | |
---|
360 | |
---|
361 | progress "`_PreparingSystem`" |
---|
362 | _ErrorWhilePreparing > /tmp/preproot.log |
---|
363 | if ! ./preproot.sh $TARGETPATH $IP >> /tmp/preproot.log 2>&1; then |
---|
364 | showfile /tmp/preproot.log |
---|
365 | abort |
---|
366 | fi |
---|
367 | fi #non-slave |
---|
368 | |
---|
369 | sync |
---|
370 | |
---|
371 | ############################# cleanup |
---|
372 | |
---|
373 | progress "`_FinishedSystemWillStart`" |
---|
374 | sleep 5 |
---|
375 | |
---|
376 | #ruim de zooi op, zodat we verder kunnen booten alsof |
---|
377 | #het een normaal systeem is |
---|
378 | cd / |
---|
379 | umount $TARGETPATH/home |
---|
380 | umount $TARGETPATH/boot |
---|
381 | umount $TARGETPATH |
---|
382 | |
---|
383 | #important, otherwise rest of the boot procedure might get confused |
---|
384 | vgchange -an |
---|
385 | mdadm -S /dev/md0 |
---|
386 | mdadm -S /dev/md1 |
---|
387 | |
---|
388 | |
---|
389 | #markeer installatie als zijnde gelukt |
---|
390 | touch /INSTALLOK |
---|
391 | |
---|
392 | #cleanup debugging terminals |
---|
393 | pkill -t tty2 bash |
---|
394 | pkill -t tty3 bash |
---|
395 | pkill -t tty4 bash |
---|
396 | |
---|
397 | #exit backbox, continue bootprocess |
---|
398 | killall blackbox &>/dev/null |
---|