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.10 2013/08/05 09:06:14 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>