#!/bin/sh # # ELWIX Build script for ELWIX CompactFlash image # # (C) AITNET ltd - Sofia/Bulgaria # by Michael Pounov # # $Id: build_fs.sh,v 1.8 2013/08/05 13:10:16 misho Exp $ # [ -r ./config/rc.elwix ] && . ./config/rc.elwix if [ X"${ELWIX_IS_CONFIGURED}" != X"YES" ]; then echo echo "ELWIX project is not configured !?!" echo exit 1 fi if [ ! -d ${BSDSRC} ]; then echo echo "ELWIX project is not configured - missing BSD sources !?!" echo exit 1 fi if [ "${USER}" != "root" ]; then echo echo "ELWIX project is not configured - FS must build under root !?!" echo exit 1 fi clean_fsdir() { echo "+++ Clean ELWIX FS ..." rm -rf $1 $2 } build_fsdir() { echo "+++ Build ELWIX FS directory ..." mkdir -p $1 cd $1 # altroot install -d altroot; # altroot/var install -d altroot/var; install -d altroot/var/account; install -d altroot/var/at; install -d altroot/var/at/jobs; install -d altroot/var/at/spool; install -d -g 63 -m 0770 altroot/var/authpf; install -d -m 0750 altroot/var/cron; install -d -m 0700 altroot/var/cron/tabs; install -d altroot/var/db; install -d -m 0555 altroot/var/empty; install -d altroot/var/log; install -d -o 101 -g 101 altroot/var/log/quagga; install -d -o 883 -g 883 altroot/var/mqtt; install -d altroot/var/named; install -d altroot/var/run; install -d altroot/var/sys; install -d -o 53 -g 53 altroot/var/run/named; install -d -o 101 -g 101 altroot/var/run/quagga; install -d altroot/var/spool; install -d -o 66 -g 68 -m 0775 altroot/var/spool/lock; install -d -g 1 altroot/var/spool/lpd; install -d -g 1 altroot/var/spool/output; install -d -g 1 altroot/var/spool/output/lpd; # boot install -d boot; # cf install -d cf; # etc install -d etc; install -d -o 883 -g 883 etc/mqtt; # exports install -d exports; # home install -d home; # root install -d -m 0700 root; # pkg install -d pkg; install -d pkg/db; install -d pkg/lib; # tftpboot install -d tftpboot; chown -hR root:wheel . cd - } create_etc_fstab() { cat >$1/etc/fstab <<_EOF # Automatic generated fstab for ELWIX $2 at ${BUILD_DATE} # /dev/ufs/elwix /elwix ufs ro 0 1 md3 /tmp mfs rw,-s8m,-oasync,-S 0 0 md4 /var mfs rw,-s16m,-S 0 0 _EOF } install_fsdir() { echo "+++ Install ELWIX FS $1 in bundle OS install file ..." OSZ="" install -v ${REL}/${ROOTFS_KERN} $1/boot/kernel/kernel.gz case "$2" in [Ee][Xx][Tt]) install -d $1/usr cd $1/usr pax -r -z -pe -f ${REL}/${ROMFS_IMG} cd - install -d $1/usr/local cd $1/usr/local pax -r -z -pe -f ${REL}/${ROMFS_IMG2} cd - OSZ=${REL}/${OS_EXT} ;; *) install -v ${REL}/${ROMFS_IMG} \ $1/altroot/elwix-firmware-${VERSION}_${TARGET_ARCH} ln $1/altroot/elwix-firmware-${VERSION}_${TARGET_ARCH} \ $1/altroot/${ROMFS_IMG} ln -s /elwix/altroot/elwix-firmware-${VERSION}_${TARGET_ARCH} \ $1/${ROMFS_IMG} install -v ${REL}/${ROMFS_IMG2} \ $1/altroot/elwix-firmware2-${VERSION}_${TARGET_ARCH} ln $1/altroot/elwix-firmware2-${VERSION}_${TARGET_ARCH} \ $1/altroot/${ROMFS_IMG2} ln -s /elwix/altroot/elwix-firmware2-${VERSION}_${TARGET_ARCH} \ $1/${ROMFS_IMG2} OSZ=${REL}/${OS} ;; esac cd $1 tar -czvf $OSZ . } ### main() if [ ! -r ${REL}/${ROOTFS_KERN} -o ! -r ${REL}/${ROMFS_IMG} ]; then echo echo "Error:: not found kernel or firmware elwix files ..." echo echo " For fix this issue, please re-run build_rootfs.sh or build_romfs.sh" echo exit 1 fi clean_fsdir ${FS} ${REL}/${OS} clean_fsdir ${FS_EXT} ${REL}/${OS_EXT} build_fsdir ${FS} build_fsdir ${FS_EXT} MakeFS_home ${FS} MakeFS_home ${FS_EXT} MakeFS_var ${FS} ${FS_ETC} MakeFS_var ${FS_EXT} ${FS_EXT_ETC} MakeFS_etc ${FS} ${FS_ETC} MakeFS_etc ${FS_EXT} ${FS_EXT_ETC} ext create_etc_fstab ${FS} create_etc_fstab ${FS_EXT} ext MakeFS_backup ${FS} MakeFS_backup ${FS_EXT} MakeFS_boot ${FS} MakeFS_boot ${FS_EXT} install_fsdir ${FS} install_fsdir ${FS_EXT} ext echo "+++ Complete build ELWIX FS" echo "ELWIX finish version ${VERSION}, Good luck!"