Annotation of elwix/install2img.sh, revision 1.8.4.4

1.2       misho       1: #!/bin/sh
                      2: #
                      3: # ELWIX install script for image
                      4: #
                      5: # (C) AITNET ltd - Sofia/Bulgaria <office@aitnet.org>
                      6: #    by Michael Pounov <misho@elwix.org>
                      7: #
1.8.4.4 ! misho       8: # $Id: install2img.sh,v 1.8.4.3 2017/06/21 14:42:31 misho Exp $
1.2       misho       9: #
                     10: 
                     11: [ -r ./config/rc.elwix ] && . ./config/rc.elwix
                     12: if [ X"${ELWIX_IS_CONFIGURED}" != X"YES" ]; then
                     13:        echo
                     14:        echo "ELWIX project is not configured !?!"
                     15:        echo
                     16:        exit 1
                     17: fi
                     18: 
                     19: if [ "${USER}" != "root" ]; then
                     20:        echo
                     21:        echo "ELWIX project is not configured - install must build under root !?!"
                     22:        echo
                     23:        exit 1
                     24: fi
                     25: 
                     26: MNT="/mnt"
                     27: DEV=""
                     28: 
                     29: mkdevice()
                     30: {
                     31:        echo "+++ Make prepare file image ... "
1.3       misho      32:        rm -f $1
                     33:        dd if=/dev/zero of=$1 bs=1024 count=$2
1.2       misho      34: 
1.3       misho      35:        echo -n "+++ Assign memory device to image $1 ... "
                     36:        DEV=`mdconfig -a -tvnode -f $1`
1.2       misho      37:        echo $DEV
                     38: 
                     39:        if [ -z "$DEV" ]; then
1.3       misho      40:                rm -f $1
1.2       misho      41:                exit 3
                     42:        fi
                     43: }
                     44: 
                     45: initdev()
                     46: {
                     47:        echo -n "+++ Init device label ... "
                     48:        if disklabel -w $1; then
                     49:                echo "OK"
                     50:        else
                     51:                echo "Failed!"
                     52:                exit 3
                     53:        fi
                     54: 
1.8.4.1   misho      55:        if [ X"$2" != X"no" ]; then
                     56:                disklabel $1 2>&- | awk -vcfgsize=${CFG_NAND_SIZE:-65536} '($1 == "a:") {
                     57:                                        cfgsize /= 512;
                     58:                                        bootoff = $3;
                     59:                                        freesize = $2 - cfgsize;
                     60:                                        imgsize = freesize / 2;
                     61: 
                     62:                                        printf("  a: %d %d unused 0 0 0\n", imgsize, cfgsize + bootoff);
                     63:                                        printf("  f: %d %d unused 0 0 0\n", imgsize, imgsize + cfgsize + bootoff);
                     64:                                        printf("  g: %d %d cfg 0 0 0\n", cfgsize, bootoff);
                     65:                                        next;
                     66:                                }
                     67:                                { printf("%s\n", $0); }' >/tmp/disklabel.tmp
                     68:        else
                     69:                disklabel $1 2>&- | awk -vcfgsize=${CFG_NAND_SIZE:-65536} '($1 == "a:") {
                     70:                                        cfgsize /= 512;
                     71:                                        bootoff = $3;
                     72:                                        freesize = $2 - cfgsize;
                     73:                                        imgsize = freesize;
                     74: 
                     75:                                        printf("  a: %d %d unused 0 0 0\n", imgsize, cfgsize + bootoff);
                     76:                                        printf("  g: %d %d cfg 0 0 0\n", cfgsize, bootoff);
                     77:                                        next;
                     78:                                }
                     79:                                { printf("%s\n", $0); }' >/tmp/disklabel.tmp
                     80:        fi
                     81: 
1.8       misho      82:        if disklabel -R -m ${TARGET} $1 /tmp/disklabel.tmp; then
                     83:                rm -f /tmp/disklabel.tmp
                     84:                echo "OK"
                     85:        else
                     86:                echo "Failed!"
                     87:                exit 3
                     88:        fi
                     89: 
1.2       misho      90:        if newfs -b8192 -f1024 -m0 -Lelwix ${1}a; then
                     91:                echo "+++ Formatting ... OK"
                     92:        else
                     93:                echo "+++ Formatting ... Failed!"
                     94:                exit 3
                     95:        fi
                     96: }
                     97: 
                     98: mountdev()
                     99: {
                    100:        echo -n "+++ Mount device $1 to $MNT ... "
                    101:        if mount /dev/${1}a $MNT; then
                    102:                echo "OK"
                    103:        else
                    104:                echo "Failed!"
                    105:                exit 4
                    106:        fi
                    107: }
                    108: 
                    109: umountdev()
                    110: {
                    111:        echo -n "+++ Unmount $MNT ... "
                    112:        if umount $MNT; then
                    113:                echo "OK"
                    114:        else
                    115:                echo "Failed!"
                    116:                exit 4
                    117:        fi
                    118: }
                    119: 
                    120: enablejfs()
                    121: {
                    122:        if tunefs -n enable -j enable ${1}a; then
                    123:                echo "Start FS Journaling ... OK"
                    124:        else
                    125:                echo "Start FS Journaling ... Failed!"
                    126:                exit 6
                    127:        fi
                    128: }
                    129: 
                    130: boot2dev()
                    131: {
                    132:        echo -n "+++ Installboot to device $1 ... "
1.3       misho     133:        if disklabel -B -b ${WORLD}/boot/boot -m ${TARGET} $1; then
1.2       misho     134:                echo "OK"
                    135:        else
                    136:                echo "Failed!"
                    137:                exit 7
                    138:        fi
                    139: }
                    140: 
                    141: install2()
                    142: {
                    143:        echo -n "+++ Install ELWIX OS from $1 into $MNT ... "
                    144:        if tar -xzvpf $1 -C $MNT; then
                    145:                echo "OK"
                    146:        else
                    147:                echo "Failed!"
                    148:                exit 5
                    149:        fi
                    150: }
                    151: 
1.8.4.1   misho     152: mkbak2()
                    153: {
                    154:        if [ X"$2" != X"no" ]; then
                    155:                echo -n "+++ Syncing ELWIX OS image as backup OS image into ${1}f ..."
                    156:                if dd if=/dev/${1}a of=/dev/${1}f; then
1.8.4.4 ! misho     157:                        tunefs -L elwix2 /dev/${1}f
1.8.4.1   misho     158:                        echo "OK"
                    159:                else
                    160:                        echo "Failed!"
                    161:                        exit 8
                    162:                fi
1.8.4.3   misho     163:        else
                    164:                echo "+++ Make ELWIX OS system image partion for upgrade into ${REL}/sys4up_${IMGNAME}.bin ..."
                    165:                if dd if=/dev/${1}a of=${REL}/sys4up_${IMGNAME}.bin; then
                    166:                        echo "OK"
                    167:                else
                    168:                        echo "Failed!"
                    169:                        exit 9
                    170:                fi
1.8.4.1   misho     171:        fi
1.8.4.2   misho     172: 
1.8.4.3   misho     173:        if [ ! -f ${REL}/sys4up_${IMGNAME}.bin ]; then
                    174:                echo "+++ Make ELWIX OS system image partion for upgrade into ${REL}/sys4up_${IMGNAME}.bin ..."
                    175:                if dd if=/dev/${1}a of=${REL}/sys4up_${IMGNAME}.bin; then
                    176:                        echo "OK"
                    177:                else
                    178:                        echo "Failed!"
                    179:                        exit 9
                    180:                fi
1.8.4.2   misho     181:        fi
1.8.4.1   misho     182: }
                    183: 
1.2       misho     184: cleandev()
                    185: {
                    186:        mdconfig -d -u $1
                    187: }
                    188: 
                    189: gencksum()
                    190: {
                    191:        echo -n "+++ Generate check sums ... "
1.3       misho     192:        md5 $1 >$2
                    193:        sha1 $1 >$3
1.2       misho     194:        echo "OK"
                    195: }
                    196: 
                    197: ### main()
                    198: 
1.7       misho     199: if [ -z "$1" -o ! -r "$1" ]; then
1.2       misho     200:        echo
1.7       misho     201:        echo "Error:: ELWIX OS tar file '$1' not found!"
1.8.4.1   misho     202:        echo "Syntax:: ./install2img.sh <ELWIX.tar.gz> [CF size] [yes == make secondary backup image]"
1.2       misho     203:        echo
                    204:        exit 2
1.7       misho     205: else
                    206:        IMGNAME=$(basename $1 | sed -e "s/.tar.gz//")
1.8.4.3   misho     207:        MD5CHK="${REL}/${IMGNAME}${3:+"_2nd"}.md5"
                    208:        SHA1CHK="${REL}/${IMGNAME}${3:+"_2nd"}.sha1"
                    209:        IMG="${REL}/${IMGNAME}${3:+"_2nd"}.img"
1.2       misho     210: fi
                    211: 
1.7       misho     212: mkdevice $IMG ${2:-"${IMG_SIZE}"}
1.8.4.1   misho     213: initdev $DEV ${3:-"no"}
1.3       misho     214: mountdev $DEV
1.7       misho     215: install2 $1
1.3       misho     216: umountdev
                    217: #enablejfs $DEV
                    218: boot2dev $DEV
1.8.4.1   misho     219: mkbak2 $DEV ${3:-"no"}
1.3       misho     220: cleandev $DEV
                    221: gencksum $IMG $MD5CHK $SHA1CHK
1.8.4.2   misho     222: gencksum ${REL}/sys4up_${IMGNAME}.bin ${REL}/sys4up_${IMGNAME}.md5 ${REL}/sys4up_${IMGNAME}.sha1
1.3       misho     223: 
1.8.4.3   misho     224: echo "ELWIX OS image ${IMGNAME}${3:+"_2nd"} complete."

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>