Annotation of elwix/install2img.sh, revision 1.8.4.1
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.1 ! misho 8: # $Id: install2img.sh,v 1.8 2014/09/15 19:06:42 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
! 157: echo "OK"
! 158: else
! 159: echo "Failed!"
! 160: exit 8
! 161: fi
! 162: fi
! 163: }
! 164:
1.2 misho 165: cleandev()
166: {
167: mdconfig -d -u $1
168: }
169:
170: gencksum()
171: {
172: echo -n "+++ Generate check sums ... "
1.3 misho 173: md5 $1 >$2
174: sha1 $1 >$3
1.2 misho 175: echo "OK"
176: }
177:
178: ### main()
179:
1.7 misho 180: if [ -z "$1" -o ! -r "$1" ]; then
1.2 misho 181: echo
1.7 misho 182: echo "Error:: ELWIX OS tar file '$1' not found!"
1.8.4.1 ! misho 183: echo "Syntax:: ./install2img.sh <ELWIX.tar.gz> [CF size] [yes == make secondary backup image]"
1.2 misho 184: echo
185: exit 2
1.7 misho 186: else
187: IMGNAME=$(basename $1 | sed -e "s/.tar.gz//")
188: MD5CHK="${REL}/${IMGNAME}.md5"
189: SHA1CHK="${REL}/${IMGNAME}.sha1"
190: IMG="${REL}/${IMGNAME}.img"
1.2 misho 191: fi
192:
1.7 misho 193: mkdevice $IMG ${2:-"${IMG_SIZE}"}
1.8.4.1 ! misho 194: initdev $DEV ${3:-"no"}
1.3 misho 195: mountdev $DEV
1.7 misho 196: install2 $1
1.3 misho 197: umountdev
198: #enablejfs $DEV
199: boot2dev $DEV
1.8.4.1 ! misho 200: mkbak2 $DEV ${3:-"no"}
1.3 misho 201: cleandev $DEV
202: gencksum $IMG $MD5CHK $SHA1CHK
203:
1.7 misho 204: echo "ELWIX OS image $IMGNAME complete."
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>