File:  [ELWIX - Embedded LightWeight unIX -] / elwix / install2img.sh
Revision 1.9: download - view: text, annotated - select for diffs - revision graph
Thu Mar 11 13:59:50 2021 UTC (3 years, 2 months ago) by misho
Branches: MAIN
CVS tags: elwix2_8, elwix2_7, HEAD, ELWIX2_7, ELWIX2_6
ver 2.6

    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: #
    8: # $Id: install2img.sh,v 1.9 2021/03/11 13:59:50 misho Exp $
    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 ... "
   32: 	rm -f $1
   33: 	dd if=/dev/zero of=$1 bs=1024 count=$2
   34: 
   35: 	echo -n "+++ Assign memory device to image $1 ... "
   36: 	DEV=`mdconfig -a -tvnode -f $1`
   37: 	echo $DEV
   38: 
   39: 	if [ -z "$DEV" ]; then
   40: 		rm -f $1
   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: 
   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: 
   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: 
   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 ... "
  133: 	if disklabel -B -b ${WORLD}/boot/boot -m ${TARGET} $1; then
  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: 
  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: 
  184: cleandev()
  185: {
  186: 	mdconfig -d -u $1
  187: }
  188: 
  189: gencksum()
  190: {
  191: 	echo -n "+++ Generate check sums ... "
  192: 	md5 $1 >$2
  193: 	sha1 $1 >$3
  194: 	echo "OK"
  195: }
  196: 
  197: ### main()
  198: 
  199: if [ -z "$1" -o ! -r "$1" ]; then
  200: 	echo
  201: 	echo "Error:: ELWIX OS tar file '$1' not found!"
  202: 	echo "Syntax:: ./install2img.sh <ELWIX.tar.gz> [CF size] [yes == make secondary backup image]"
  203: 	echo
  204: 	exit 2
  205: else
  206: 	IMGNAME=$(basename $1 | sed -e "s/.tar.gz//")
  207: 	MD5CHK="${REL}/${IMGNAME}${3:+"_2nd"}.md5"
  208: 	SHA1CHK="${REL}/${IMGNAME}${3:+"_2nd"}.sha1"
  209: 	IMG="${REL}/${IMGNAME}${3:+"_2nd"}.img"
  210: fi
  211: 
  212: mkdevice $IMG ${2:-"${IMG_SIZE}"}
  213: initdev $DEV ${3:-"no"}
  214: mountdev $DEV
  215: install2 $1
  216: umountdev
  217: #enablejfs $DEV
  218: boot2dev $DEV
  219: mkbak2 $DEV ${3:-"no"}
  220: cleandev $DEV
  221: gencksum $IMG $MD5CHK $SHA1CHK
  222: gencksum ${REL}/sys4up_${IMGNAME}.bin ${REL}/sys4up_${IMGNAME}.md5 ${REL}/sys4up_${IMGNAME}.sha1
  223: 
  224: echo "ELWIX OS image ${IMGNAME}${3:+"_2nd"} complete."

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