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.9.4.1 2014/06/30 20:59:27 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 0750 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/etc/fstab <<_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/kernel.gz
113:
114: case "$2" in
115: [Ee][Xx][Tt])
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_EXT}
127: ;;
128: *)
129: install -v ${REL}/${ROMFS_IMG} \
130: $1/altroot/elwix-firmware-${VERSION}_${TARGET_ARCH}
131: ln $1/altroot/elwix-firmware-${VERSION}_${TARGET_ARCH} \
132: $1/altroot/${ROMFS_IMG}
133: ln -s /elwix/altroot/elwix-firmware-${VERSION}_${TARGET_ARCH} \
134: $1/${ROMFS_IMG}
135:
136: install -v ${REL}/${ROMFS_IMG2} \
137: $1/altroot/elwix-firmware2-${VERSION}_${TARGET_ARCH}
138: ln $1/altroot/elwix-firmware2-${VERSION}_${TARGET_ARCH} \
139: $1/altroot/${ROMFS_IMG2}
140: ln -s /elwix/altroot/elwix-firmware2-${VERSION}_${TARGET_ARCH} \
141: $1/${ROMFS_IMG2}
142:
143: OSZ=${REL}/${OS}
144: ;;
145: esac
146:
147: cd $1
148: tar -czvf $OSZ .
149: }
150:
151: ### main()
152: if [ ! -r ${REL}/${ROOTFS_KERN} -o ! -r ${REL}/${ROMFS_IMG} ]; then
153: echo
154: echo "Error:: not found kernel or firmware elwix files ..."
155: echo
156: echo " For fix this issue, please re-run build_rootfs.sh or build_romfs.sh"
157: echo
158: exit 1
159: fi
160:
161: clean_fsdir ${FS} ${REL}/${OS} || exit 1
162: clean_fsdir ${FS_EXT} ${REL}/${OS_EXT} || exit 1
163:
164: build_fsdir ${FS} || exit 1
165: build_fsdir ${FS_EXT} || exit 1
166:
167: MakeFS_home ${FS} || exit 1
168: MakeFS_home ${FS_EXT} || exit 1
169:
170: MakeFS_var ${FS} ${FS_ETC} || exit 1
171: MakeFS_var ${FS_EXT} ${FS_EXT_ETC} || exit 1
172:
173: MakeFS_etc ${FS} ${FS_ETC} || exit 1
174: MakeFS_etc ${FS_EXT} ${FS_EXT_ETC} ext || exit 1
175:
176: create_etc_fstab ${FS} || exit 1
177: create_etc_fstab ${FS_EXT} ext || exit 1
178:
179: MakeFS_backup ${FS} || exit 1
180: MakeFS_backup ${FS_EXT} || exit 1
181:
182: MakeFS_boot ${FS} || exit 1
183: MakeFS_boot ${FS_EXT} || exit 1
184:
185: install_fsdir ${FS} || exit 1
186: install_fsdir ${FS_EXT} ext || exit 1
187:
188: echo "+++ Complete build ELWIX FS"
189: echo "ELWIX finish version ${VERSION}, Good luck!"
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>