--- elwix/build_rootfs.sh 2014/09/15 19:06:42 1.9 +++ elwix/build_rootfs.sh 2017/02/13 16:52:46 1.10 @@ -5,7 +5,7 @@ # (C) AITNET ltd - Sofia/Bulgaria # by Michael Pounov # -# $Id: build_rootfs.sh,v 1.9 2014/09/15 19:06:42 misho Exp $ +# $Id: build_rootfs.sh,v 1.10 2017/02/13 16:52:46 misho Exp $ # [ -r ./config/rc.elwix ] && . ./config/rc.elwix @@ -40,14 +40,14 @@ X_TARGET_CPUTYPE="TARGET_CPUTYPE=${TARGET_CPUTYPE}" clean_elwix() { - echo "+++ Clean elwix binary from ELWIX World ..." + echo "+++ Clean elwix binary from ELWIX World ... $BSDOBJ/elwix" rm -rf $BSDOBJ/elwix - echo "+++ Clean ELWIX RootFS firmware ..." + echo "+++ Clean ELWIX RootFS firmware ... $ROOTFS_MKDIR" rm -rf $ROOTFS_MKDIR mkdir $ROOTFS_MKDIR - echo "+++ Clean RootFS directory ..." + echo "+++ Clean RootFS directory ... $ROOTFS" chflags -R noschg $ROOTFS rm -rf $ROOTFS mkdir $ROOTFS @@ -58,7 +58,7 @@ clean_elwix() prepare_elwix() { - echo "+++ Prepair ELWIX RootFS firmware ..." + echo "+++ Prepair ELWIX RootFS firmware ... $ROOTFS_MKDIR" cd $ROOTFS_MKDIR cat >$MKH <<_EOF # Auto-generated Makefile include for crungegen @@ -79,9 +79,10 @@ buildopts -DNO_PAM -DNO_KERBEROS WITHOUT_PAM_SUPPORT=y buildopts -DMK_CASPER=no WITHOUT_CASPER=yes _EOF cat $CFGDIR/$ROOTFS_CONF >>$ROOTFS_CONF + echo "+++ Prepared RootFS config ... $CFGDIR/$ROOTFS_CONF" install -d ${BSDOBJ}/elwix - env MAKEOBJDIRPREFIX=${BSDOBJ}/elwix crunchgen -f \ + env MAKEOBJDIRPREFIX=${BSDOBJ}/elwix ${CEXEC} crunchgen -f \ -h $ROOTFS_MKDIR/$MKH -m $MKF \ -c elwix.c -e elwix $ROOTFS_CONF if [ $? -ne 0 ]; then @@ -92,13 +93,16 @@ _EOF build_elwix() { - echo "+++ Build ELWIX RootFS firmware ..." + echo "+++ Build ELWIX RootFS firmware ... $ROOTFS_MKDIR" cd $ROOTFS_MKDIR - env MAKEOBJDIRPREFIX=${BSDOBJ}/elwix make -f $MKF \ + ${CBUILD} -f $MKF \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} clean - env MAKEOBJDIRPREFIX=${BSDOBJ}/elwix make -f $MKF \ + ${CBUILD} -f $MKF \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} objs + ${CBUILD} -f $MKF \ + TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} if [ $? -ne 0 ]; then exit 1 @@ -108,7 +112,7 @@ build_elwix() build_rootdir() { - echo "+++ Build RootFS directory ..." + echo "+++ Build RootFS directory ... $ROOTFS" cd $ROOTFS install -d bin; @@ -150,7 +154,7 @@ install_rootfs() PRG="/sbin/elwix" LNPRG="${SBIN}/elwix" - echo "+++ Install ELWIX into RootFS directory ..." + echo "+++ Install ELWIX into RootFS directory ... $ROOTFS" install $ROOTFS_MKDIR/elwix $SBIN InstallList ${ELWIX_ROOTFS} ${WORLD} ${ROOTFS} @@ -195,11 +199,11 @@ install_rootfs() ln -s $PRG $BIN/realpath ln -s $PRG $BIN/rm ln -s $PRG $BIN/unlink - ln -s $PRG $BIN/rmdir +# ln -s $PRG $BIN/rmdir ln -s $PRG $BIN/sleep ln -s $PRG $BIN/stty ln -s $PRG $BIN/sync - ln -s $PRG $BIN/uuidgen +# ln -s $PRG $BIN/uuidgen ln -s $PRG $BIN/true ln -s $PRG $BIN/false @@ -252,9 +256,9 @@ install_rootfs() ln -s $PRG $SBIN/bsdlabel ln -s $PRG $SBIN/disklabel - ln -s $PRG $SBIN/camcontrol - ln -s $PRG $SBIN/comcontrol - ln -s $PRG $SBIN/conscontrol +# ln -s $PRG $SBIN/camcontrol +# ln -s $PRG $SBIN/comcontrol +# ln -s $PRG $SBIN/conscontrol ln -s $PRG $SBIN/devfs ln -s $PRG $SBIN/dhclient ln -s $PRG $SBIN/dmesg @@ -268,13 +272,13 @@ install_rootfs() ln -s $PRG $SBIN/fsck_4.2bsd ln -s $PRG $SBIN/fsck_msdosfs ln -s $PRG $SBIN/etherswitchcfg - ln -s $PRG $SBIN/-geom - ln -s $PRG $SBIN/glabel - ln -s $PRG $SBIN/gpart - ln -s $PRG $SBIN/graid - ln -s $PRG $SBIN/growfs - ln -s $PRG $SBIN/hastctl - ln -s $PRG $SBIN/hastd +# ln -s $PRG $SBIN/-geom +# ln -s $PRG $SBIN/glabel +# ln -s $PRG $SBIN/gpart +# ln -s $PRG $SBIN/graid +# ln -s $PRG $SBIN/growfs +# ln -s $PRG $SBIN/hastctl +# ln -s $PRG $SBIN/hastd ln -s $PRG $SBIN/ifconfig ln -s $PRG $SBIN/init ln -s $PRG $SBIN/ipfw @@ -292,20 +296,20 @@ install_rootfs() ln -s $PRG $SBIN/mdmfs ln -s $PRG $SBIN/mount_mfs ln -s $PRG $SBIN/mknod - ln -s $PRG $SBIN/mksnap_ffs +# ln -s $PRG $SBIN/mksnap_ffs ln -s $PRG $SBIN/mount - ln -s $PRG $SBIN/mount_cd9660 +# ln -s $PRG $SBIN/mount_cd9660 ln -s $PRG $SBIN/mount_msdosfs ln -s $PRG $SBIN/mount_nfs # ln -s $PRG $SBIN/mount_ntfs ln -s $PRG $SBIN/mount_nullfs - ln -s $PRG $SBIN/mount_udf +# ln -s $PRG $SBIN/mount_udf ln -s $PRG $SBIN/mount_unionfs ln -s $PRG $SBIN/newfs ln -s $PRG $SBIN/newfs_msdos - ln -s $PRG $SBIN/nfsiod - ln -s $PRG $SBIN/nos-tun - ln -s $PRG $SBIN/nvmecontrol +# ln -s $PRG $SBIN/nfsiod +# ln -s $PRG $SBIN/nos-tun +# ln -s $PRG $SBIN/nvmecontrol ln -s $PRG $SBIN/pfctl ln -s $PRG $SBIN/pflogd ln -s $PRG $SBIN/quotacheck @@ -313,16 +317,16 @@ install_rootfs() ln -s $PRG $SBIN/halt ln -s $PRG $SBIN/fastboot ln -s $PRG $SBIN/fasthalt - ln -s $PRG $SBIN/recoverdisk +# ln -s $PRG $SBIN/recoverdisk ln -s $PRG $SBIN/restore ln -s $PRG $SBIN/rrestore ln -s $PRG $SBIN/route ln -s $PRG $SBIN/rtsol ln -s $PRG $SBIN/shutdown - ln -s $PRG $SBIN/savecore - ln -s $PRG $SBIN/swapon - ln -s $PRG $SBIN/swapoff - ln -s $PRG $SBIN/swapctl +# ln -s $PRG $SBIN/savecore +# ln -s $PRG $SBIN/swapon +# ln -s $PRG $SBIN/swapoff +# ln -s $PRG $SBIN/swapctl ln -s $PRG $SBIN/sysctl ln -s $PRG $SBIN/tunefs ln -s $PRG $SBIN/umount @@ -346,14 +350,14 @@ install_rootfs() ln -s $PRG $SBIN/wake ln -s $PRG $SBIN/watchdog ln -s $PRG $SBIN/watchdogd - ln -s $PRG $SBIN/inetd +# ln -s $PRG $SBIN/inetd ln -s $PRG $SBIN/wlandebug ln -s $PRG $SBIN/chroot ln -s $PRG $SBIN/i2c ln -s $PRG $SBIN/iostat - ln -s $PRG $SBIN/jail - ln -s $PRG $SBIN/jexec - ln -s $PRG $SBIN/jls +# ln -s $PRG $SBIN/jail +# ln -s $PRG $SBIN/jexec +# ln -s $PRG $SBIN/jls ln -s $PRG $SBIN/ndp ln -s $PRG $SBIN/newsyslog ln -s $PRG $SBIN/nologin @@ -370,7 +374,7 @@ install_rootfs() ln -s $PRG $UBIN/passwd ln -s $PRG $LIBEXEC/getty - ln -s $PRG $LIBEXEC/tftpd +# ln -s $PRG $LIBEXEC/tftpd strip -s $LNPRG @@ -384,24 +388,45 @@ install_rootfs() build_image() { - echo "+++ Build ELWIX RootFS image ..." + echo "+++ Build ELWIX RootFS image ... $ROOTFS --> $REL/$ROOTFS_IMG" makefs -s ${ROOTFS_SIZE} -o minfree=0 $REL/$ROOTFS_IMG $ROOTFS + echo "+++ Completed ELWIX RootFS image ... $ROOTFS --> $REL/$ROOTFS_IMG" } install_image() { - echo "+++ Install ELWIX RootFS Image into kernel ..." - START=`strings -td $KERNEL_ROOTFS | grep "MFS Filesystem" | cut -d ' ' -f 1 | head -1` - STOP=`strings -td $KERNEL_ROOTFS | grep "MFS Filesystem" | cut -d ' ' -f 1 | tail -1` - STOP=$(($STOP + 1)) + echo "+++ Install ELWIX RootFS Image into kernel ... $REL/$ROOTFS_IMG" + mfs_size=`stat -f '%z' $REL/$ROOTFS_IMG 2>/dev/null` + [ -z ${mfs_size} ] && echo "Can't determine MFS image size" && exit 1 - head -c $START $KERNEL_ROOTFS >$NEWKERN - cat $REL/$ROOTFS_IMG >>$NEWKERN - tail -c +$STOP $KERNEL_ROOTFS >>$NEWKERN + sec_info=`${CROSSTOOLDIR}/usr/bin/objdump -h $KERNEL_ROOTFS 2> /dev/null | grep " oldmfs "` + [ -z "${sec_info}" ] && echo "Can't locate mfs section within kernel" && exit 1 + echo "'-> Object dump { ${sec_info} }" + sec_size=`echo ${sec_info} | awk '{printf("%d", "0x" $3)}' 2> /dev/null` + sec_start=`echo ${sec_info} | awk '{printf("%d", "0x" $6)}' 2> /dev/null` + echo "'-> Start offset from $sec_start and rootfs size $sec_size byte" + [ ${sec_size} -lt ${mfs_size} ] && echo "MFS image too large" && exit 1 + + cp $KERNEL_ROOTFS $NEWKERN + dd if=$REL/$ROOTFS_IMG ibs=8192 of=$NEWKERN obs=${sec_start} oseek=1 conv=notrunc \ + 2>/dev/null && echo "'-> Completed MFS image embedded into kernel" + +# START=`strings -td $KERNEL_ROOTFS | grep "MFS Filesystem" | cut -d ' ' -f 1 | head -1` +# STOP=`strings -td $KERNEL_ROOTFS | grep "MFS Filesystem" | cut -d ' ' -f 1 | tail -1` +# STOP=$(($STOP + 1)) +# echo "'-> Start offset from $START to $STOP byte" + +# head -c $START $KERNEL_ROOTFS >$NEWKERN +# cat $REL/$ROOTFS_IMG >>$NEWKERN +# tail -c +$STOP $KERNEL_ROOTFS >>$NEWKERN + + echo "'-> Compress kernel" cd $REL gzip -9 $KRNNAME cd - + + echo "+++ Completed ELWIX RootFS kernel ... $NEWKERN.gz" } ### main()