File:  [ELWIX - Embedded LightWeight unIX -] / elwix / build_fs.sh
Revision 1.7.2.9: download - view: text, annotated - select for diffs - revision graph
Mon Aug 5 08:52:54 2013 UTC (10 years, 10 months ago) by misho
Branches: elwix1_9
Diff to: branchpoint 1.7: preferred, unified
change script

    1: #!/bin/sh
    2: #
    3: # ELWIX Build script for ELWIX CompactFlash image
    4: #
    5: # (C) AITNET ltd - Sofia/Bulgaria <office@aitnet.org>
    6: #    by Michael Pounov <misho@elwix.org>
    7: #
    8: # $Id: build_fs.sh,v 1.7.2.9 2013/08/05 08:52:54 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 [ ! -d ${BSDSRC} ]; then
   20: 	echo
   21: 	echo "ELWIX project is not configured - missing BSD sources !?!"
   22: 	echo
   23: 	exit 1
   24: fi
   25: 
   26: if [ "${USER}" != "root" ]; then
   27: 	echo
   28: 	echo "ELWIX project is not configured - FS must build under root !?!"
   29: 	echo
   30: 	exit 1
   31: fi
   32: 
   33: clean_fsdir()
   34: {
   35: 	echo "+++ Clean ELWIX FS ..."
   36: 	rm -rf $1 $2
   37: }
   38: 
   39: build_fsdir()
   40: {
   41: 	echo "+++ Build ELWIX FS directory ..."
   42: 	mkdir -p $1
   43: 
   44: 	cd $1
   45: 
   46: # altroot
   47: 	install -d altroot;
   48: 	# altroot/var
   49: 	install -d altroot/var;
   50: 	install -d altroot/var/account;
   51: 	install -d altroot/var/at;
   52: 	install -d altroot/var/at/jobs;
   53: 	install -d altroot/var/at/spool;
   54: 	install -d -g 63 -m 0770 altroot/var/authpf;
   55: 	install -d -m 0750 altroot/var/cron;
   56: 	install -d -m 0700 altroot/var/cron/tabs;
   57: 	install -d altroot/var/db;
   58: 	install -d -m 0555 altroot/var/empty;
   59: 	install -d altroot/var/log;
   60: 	install -d -o 101 -g 101 altroot/var/log/quagga;
   61: 	install -d -o 883 -g 883 altroot/var/mqtt;
   62: 	install -d altroot/var/named;
   63: 	install -d altroot/var/run;
   64: 	install -d altroot/var/sys;
   65: 	install -d -o 53 -g 53 altroot/var/run/named;
   66: 	install -d -o 101 -g 101 altroot/var/run/quagga;
   67: 	install -d altroot/var/spool;
   68: 	install -d -o 66 -g 68 -m 0775 altroot/var/spool/lock;
   69: 	install -d -g 1 altroot/var/spool/lpd;
   70: 	install -d -g 1 altroot/var/spool/output;
   71: 	install -d -g 1 altroot/var/spool/output/lpd;
   72: # boot
   73: 	install -d boot;
   74: # cf
   75: 	install -d cf;
   76: # etc
   77: 	install -d etc;
   78: 	install -d -o 883 -g 883 etc/mqtt;
   79: # exports
   80: 	install -d exports;
   81: # home
   82: 	install -d home;
   83: # root
   84: 	install -d -m 0700 root;
   85: # pkg
   86: 	install -d pkg;
   87: 	install -d pkg/db;
   88: 	install -d pkg/lib;
   89: # tftpboot
   90: 	install -d tftpboot;
   91: 
   92: 	chown -hR root:wheel .
   93: 	cd -
   94: }
   95: 
   96: create_etc_fstab()
   97: {
   98: 	cat >$1 <<_EOF
   99: # Automatic generated fstab for ELWIX $2 at ${BUILD_DATE}
  100: #
  101: /dev/ufs/elwix		/elwix	ufs	ro			0	1
  102: md3			/tmp	mfs	rw,-s8m,-oasync,-S	0       0
  103: md4			/var	mfs	rw,-s16m,-S		0       0
  104: _EOF
  105: }
  106: 
  107: install_fsdir()
  108: {
  109: 	echo "+++ Install ELWIX FS $1 in bundle OS install file ..."
  110: 	OSZ=""
  111: 
  112: 	install -v ${REL}/${ROOTFS_KERN} $1/boot/kernel
  113: 
  114: 	case "$2" in
  115: 		[Ll][Ii][Tt][Ee]_128)
  116: 			install -d $1/usr
  117: 			cd $1/usr
  118: 			pax -r -z -pe -f ${REL}/${ROMFS_IMG}
  119: 			cd -
  120: 
  121: 			install -d $1/usr/local
  122: 			cd $1/usr/local
  123: 			pax -r -z -pe -f ${REL}/${ROMFS_IMG2}
  124: 			cd -
  125: 
  126: 			OSZ=${REL}/${OS_LITE128}
  127: 			;;
  128: 		[Ll][Ii][Tt][Ee])
  129: 			install -d $1/usr
  130: 			cd $1/usr
  131: 			pax -r -z -pe -f ${REL}/${ROMFS_IMG}
  132: 			cd -
  133: 
  134: 			OSZ=${REL}/${OS_LITE}
  135: 			;;
  136: 		*)
  137: 			install -v ${REL}/${ROMFS_IMG} \
  138: 				$1/altroot/elwix-firmware-${VERSION}_${TARGET_ARCH}
  139: 			ln $1/altroot/elwix-firmware-${VERSION}_${TARGET_ARCH} \
  140: 				$1/altroot/${ROMFS_IMG}
  141: 			ln -s /elwix/altroot/elwix-firmware-${VERSION}_${TARGET_ARCH} \
  142: 				$1/${ROMFS_IMG}
  143: 
  144: 			install -v ${REL}/${ROMFS_IMG2} \
  145: 				$1/altroot/elwix-firmware2-${VERSION}_${TARGET_ARCH}
  146: 			ln $1/altroot/elwix-firmware2-${VERSION}_${TARGET_ARCH} \
  147: 				$1/altroot/${ROMFS_IMG2}
  148: 			ln -s /elwix/altroot/elwix-firmware2-${VERSION}_${TARGET_ARCH} \
  149: 				$1/${ROMFS_IMG2}
  150: 
  151: 			OSZ=${REL}/${OS}
  152: 			;;
  153: 	esac
  154: 
  155: 	cd $1
  156: 	tar -czvf $OSZ .
  157: }
  158: 
  159: ### main()
  160: if [ ! -r ${REL}/${ROOTFS_KERN} -o ! -r ${REL}/${ROMFS_IMG} ]; then
  161: 	echo
  162: 	echo "Error:: not found kernel or firmware elwix files ..."
  163: 	echo
  164: 	echo " For fix this issue, please re-run build_rootfs.sh or build_romfs.sh"
  165: 	echo
  166: 	exit 1
  167: fi
  168: 
  169: clean_fsdir ${FS} ${REL}/${OS}
  170: clean_fsdir ${FS_LITE} ${REL}/${OS_LITE}
  171: clean_fsdir ${FS_LITE128} ${REL}/${OS_LITE128}
  172: 
  173: build_fsdir ${FS}
  174: build_fsdir ${FS_LITE}
  175: build_fsdir ${FS_LITE128}
  176: 
  177: MakeFS_home ${FS}
  178: MakeFS_home ${FS_LITE}
  179: MakeFS_home ${FS_LITE128}
  180: 
  181: MakeFS_var ${FS} ${FS_ETC}
  182: MakeFS_var ${FS_LITE} ${FS_ETC}
  183: MakeFS_var ${FS_LITE128} ${FS_ETC}
  184: 
  185: MakeFS_etc ${FS} ${FS_ETC}
  186: MakeFS_etc ${FS_LITE} ${FS_ETC} lite
  187: MakeFS_etc ${FS_LITE128} ${FS_ETC} lite_128
  188: 
  189: create_etc_fstab ${FS}
  190: create_etc_fstab ${FS_LITE} lite
  191: create_etc_fstab ${FS_LITE128} lite_128
  192: 
  193: MakeFS_backup ${FS}
  194: MakeFS_backup ${FS_LITE}
  195: MakeFS_backup ${FS_LITE128}
  196: 
  197: MakeFS_boot ${FS}
  198: MakeFS_boot ${FS_LITE}
  199: MakeFS_boot ${FS_LITE128}
  200: 
  201: install_fsdir ${FS}
  202: install_fsdir ${FS_LITE} lite
  203: install_fsdir ${FS_LITE128} lite_128
  204: 
  205: echo "+++ Complete build ELWIX FS"
  206: echo "ELWIX finish version ${VERSION}, Good luck!"

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