Annotation of elwix/install2img.sh, revision 1.9
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.9 ! misho 8: # $Id: install2img.sh,v 1.8.4.5 2017/06/29 09:31:43 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.9 ! 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.9 ! misho 152: mkbak2()
! 153: {
! 154: if [ X"$2" != X"no" ]; then
! 155: echo "+++ Syncing ELWIX OS image as backup OS image into ${1}f ..."
! 156: if dd if=/dev/${1}a of=/dev/${1}f; then
! 157: tunefs -L elwix2 /dev/${1}f
! 158: echo "OK"
! 159: else
! 160: echo "Failed!"
! 161: exit 8
! 162: fi
! 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
! 171: fi
! 172:
! 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
! 181: fi
! 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.9 ! 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.9 ! 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.9 ! 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.9 ! misho 219: mkbak2 $DEV ${3:-"no"}
1.3 misho 220: cleandev $DEV
221: gencksum $IMG $MD5CHK $SHA1CHK
1.9 ! misho 222: gencksum ${REL}/sys4up_${IMGNAME}.bin ${REL}/sys4up_${IMGNAME}.md5 ${REL}/sys4up_${IMGNAME}.sha1
1.3 misho 223:
1.9 ! misho 224: echo "ELWIX OS image ${IMGNAME}${3:+"_2nd"} complete."
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>