[c5c522c] | 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 |
---|