#!/bin/sh # # ELWIX Build script for ELWIX CompactFlash image # # (C) AITNET ltd - Sofia/Bulgaria # by Michael Pounov # # $Id: build_fs.sh,v 1.10 2014/09/15 19:06:42 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 ..." chflags -Rf nosunlink $1 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; case ${TARGET} in i386) ln -fs /dev/ada0g cf/map.cfg ;; mips) ln -fs /dev/map/cfg cf/map.cfg ;; esac # etc install -d etc; install -d -o 883 -g 883 etc/mqtt; # exports install -d exports; # home install -d home; # root install -d -m 0750 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 /var/db /elwix/etc unionfs rw,noauto,-onoatime 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} || exit 1 clean_fsdir ${FS_EXT} ${REL}/${OS_EXT} || exit 1 build_fsdir ${FS} || exit 1 build_fsdir ${FS_EXT} || exit 1 MakeFS_home ${FS} || exit 1 MakeFS_home ${FS_EXT} || exit 1 MakeFS_var ${FS} ${FS_ETC} || exit 1 MakeFS_var ${FS_EXT} ${FS_EXT_ETC} || exit 1 MakeFS_etc ${FS} ${FS_ETC} || exit 1 MakeFS_etc ${FS_EXT} ${FS_EXT_ETC} ext || exit 1 create_etc_fstab ${FS} || exit 1 create_etc_fstab ${FS_EXT} ext || exit 1 MakeFS_backup ${FS} || exit 1 MakeFS_backup ${FS_EXT} || exit 1 MakeFS_boot ${FS} || exit 1 MakeFS_boot ${FS_EXT} || exit 1 install_fsdir ${FS} || exit 1 install_fsdir ${FS_EXT} ext || exit 1 echo "+++ Complete build ELWIX FS" echo "ELWIX finish version ${VERSION}, Good luck!"