source: install/install.sh @ ab298e7

Last change on this file since ab298e7 was c5c522c, checked in by Edwin Eefting <edwin@datux.nl>, 8 years ago

initial commit, transferred from cleaned syn3 svn tree

  • Property mode set to 100755
File size: 9.3 KB
Line 
1#!/bin/bash
2#(C)DatuX 2005 - all rights reserved
3rm /INSTALLOK 2>/dev/null
4
5.       dialoglib.sh || exit 1
6PRODUCT=`cat /proc/cmdline | sed 's/.*theme://g' | cut -c1`
7BRAND="Syn-3"
8PKGPATH=../packages
9TARGETPATH=/mnt/instroot
10
11
12#open a few vt's for debugging
13openvt bash
14openvt bash
15openvt bash
16
17#################################### Set background when in X
18if [ "$DISPLAY" ]; then
19        xv -root -quit -max -smooth /etc/splash/S/800x600.jpg
20fi
21
22#################################### Select langauge
23TITLE="Language selection"
24QUERY="`_SelectLanguage`"
25LANGS=
26for ID in `ls lang_*|sort -r|sed s/lang_//|sed 's/.sh//'`; do
27        LANGS="$LANGS '$ID' '`_Lang_$ID`' "
28done
29
30export LANG
31LANG=
32while [ "$LANG" = "" ]; do
33        LANG=`menu $LANGS` || abort
34done
35
36#reload with new language
37.       dialoglib.sh || exit 1
38
39
40#################################### STEP 1
41#language, license and installmode
42TITLE="`_Step1License`"
43
44if [ $DISPLAY ]; then
45    license license.txt || abort
46else
47    license license.txt
48    accept "`_DoYouAcceptTheLicense`" || abort
49fi
50
51## Select install mode
52MODES="NORMAL '`_NormalMode`'
53ADVANCED '`_AdvancedMode`'
54SECONDARY '`_SlaveMode`'
55"
56#disabled, we hebben nu een hybride image die ook makkelijk naar usb kan
57#COPY '`_CopyInstaller`'
58
59TITLE="`_SelectInstallMode`"
60QUERY="`_SelectInstallMode`"
61MODE=
62while [ "$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
70done
71
72
73
74#################################### STEP 2
75TITLE="`_Step2Configuration`"
76
77########### check system
78progress "`_CheckingSystem`"
79DISCS=`unuseddisks`
80if [ "$DISCS" == "" ]; then
81        abort "`_ErrorNoDisksDetected`"
82fi
83
84if [ "$MODE" != "ADVANCED" ]; then
85        if ! ifconfig eth0 &>/dev/null; then
86                abort "`_ErrorNoNetworkCards`"
87        fi
88fi
89
90########### select discs to use
91for DISC in $DISCS; do
92        #get extra info for use to regonize disc
93        SELECT="$SELECT $DISC '`getdiskinfo $DISC`' 0";
94done
95
96
97QUERY=`_SelectDiscsToUse`
98DISCS=
99while ! [ "$DISCS" ]; do
100        DISCS=`checklist $SELECT` || abort
101done
102
103#disabled, working on this
104#if yesno `_AutomaticPartitioning`; then
105if 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;
119else
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'
121fi
122
123#Specifify the default settings for autopart.sh here:
124#default sizes for partitions
125export SIZE_BOOT=128M
126export SIZE_ROOT=10G
127export SIZE_SWAP=4G
128export SIZE_HOME=
129export SIZE_FREE=10G
130export USE_GPT=1
131export USE_MD=1
132if [ "$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
157fi
158
159
160#secondary server network configuration
161if [ "$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
205elif [ "$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
229fi
230
231############ ASK IF USER WANTS TO STRESS TEST
232if [ "$MODE" == "ADVANCED" ] && ! yesno "`_RunStressTest`"; then
233        STRESS=1
234fi
235
236############################### STEP 3
237TITLE="`_Step3Installation`"
238
239#prepare logfile with additional info:
240_InstallationFailedCheckThisInfo > /tmp/initdisk.log
241
242progress "`_InitializingDisks`"
243./autopart.sh $DISCS >> /tmp/initdisk.log
244CODE=$?
245
246#we need a reboot?
247if [ $CODE == "2" ]; then
248        abort "`_RebootRequiredForPartioning`"
249fi
250
251#failed some other way?
252if [ $CODE == "1" ]; then
253        showfile /tmp/initdisk.log
254        abort
255fi
256
257################################################
258
259if [ "$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
280else
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
367fi #non-slave
368
369sync
370
371############################# cleanup
372
373progress "`_FinishedSystemWillStart`"
374sleep 5
375
376#ruim de zooi op, zodat we verder kunnen booten alsof
377#het een normaal systeem is
378cd /
379umount $TARGETPATH/home
380umount $TARGETPATH/boot
381umount $TARGETPATH
382
383#important, otherwise rest of the boot procedure might get confused
384vgchange -an
385mdadm -S /dev/md0
386mdadm -S /dev/md1
387
388
389#markeer installatie als zijnde gelukt
390touch /INSTALLOK
391
392#cleanup debugging terminals
393pkill -t tty2 bash
394pkill -t tty3 bash
395pkill -t tty4 bash
396
397#exit backbox, continue bootprocess
398killall blackbox &>/dev/null
Note: See TracBrowser for help on using the repository browser.