--- elwix/build_rootfs.sh 2012/05/28 23:19:05 1.2.4.8 +++ elwix/build_rootfs.sh 2021/03/24 08:26:16 1.11.2.1 @@ -5,7 +5,7 @@ # (C) AITNET ltd - Sofia/Bulgaria # by Michael Pounov # -# $Id: build_rootfs.sh,v 1.2.4.8 2012/05/28 23:19:05 misho Exp $ +# $Id: build_rootfs.sh,v 1.11.2.1 2021/03/24 08:26:16 misho Exp $ # [ -r ./config/rc.elwix ] && . ./config/rc.elwix @@ -30,19 +30,24 @@ if [ "${USER}" != "root" ]; then exit 1 fi -NEWKERN="${REL}/kernel" +KRNNAME="kernel_rootfs" +NEWKERN="${REL}/${KRNNAME}" +MKF="Makefile.elwix" +MKH="Makefile.inc" +# Set TARGET_CPUTYPE only for world compiling. Don't use this in kernel build! +X_TARGET_CPUTYPE="TARGET_CPUTYPE=${TARGET_CPUTYPE}" + clean_elwix() { - echo "+++ Clean csh from ELWIX World ..." -# rm -rf ${BSDOBJ}/usr/src/bin/csh/* + echo "+++ Clean elwix binary from ELWIX World ... $BSDOBJ/elwix" rm -rf $BSDOBJ/elwix - echo "+++ Clean ELWIX RootFS firmware ..." - rm -rf $MKDIR - mkdir $MKDIR + 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 @@ -53,45 +58,69 @@ clean_elwix() prepare_elwix() { - echo "+++ Prepair ELWIX RootFS firmware ..." - cd $MKDIR + echo "+++ Prepair ELWIX RootFS firmware ... $ROOTFS_MKDIR" + cd $ROOTFS_MKDIR cat >$MKH <<_EOF # Auto-generated Makefile include for crungegen # !!! Dont edit by hand !!! # -#CRUNCH_SUPPRESS_LINK_-sh= 1 -#CRUNCH_SUPPRESS_LINK_-csh= 1 -#CRUNCH_SUPPRESS_LINK_-tcsh= 1 - -LIBS += -L${WORLD}/lib -L${WORLD}/usr/lib +LDFLAGS += -L${WORLD}/lib -L${WORLD}/usr/lib +CFLAGS += -I${BSDSRC}/lib/libifconfig -I${BSDOBJ}${BSDSRC}/${TARGET}.${TARGET_ARCH}/lib/libifconfig _EOF cat >$ROOTFS_CONF <<_EOF srcdirs ${BSDSRC}/tools/tools ${BSDSRC}/tools/tools/ath -srcdirs ${BSDSRC}/release/picobsd/tinyware +srcdirs ${BSDSRC}/contrib/ncurses/progs ${BSDSRC}/lib/libifconfig srcdirs ${BSDSRC}/bin ${BSDSRC}/sbin ${BSDSRC}/libexec ${BSDSRC}/cddl/sbin ${BSDSRC}/sbin/ggate srcdirs ${BSDSRC}/usr.bin ${BSDSRC}/usr.sbin ${BSDSRC}/usr.sbin/wpa srcdirs ${BSDSRC}/secure/usr.bin ${BSDSRC}/secure/usr.sbin ${BSDSRC}/secure/libexec +#buildopts TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} buildopts -DNO_PAM -DNO_KERBEROS WITHOUT_PAM_SUPPORT=yes WITHOUT_KERBEROS_SUPPORT=yes WITHOUT_KERBEROS=yes -buildopts TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} MAKEOBJDIRPREFIX=${BSDOBJ}/elwix +buildopts -DMK_CASPER=no WITHOUT_CASPER=yes MK_TESTS=no UPDATE_DEPENDFILE=yes _RECURSING_CRUNCH=1 _EOF cat $CFGDIR/$ROOTFS_CONF >>$ROOTFS_CONF + cat >>$ROOTFS_CONF <<_EOF +special ping6 srcdir ${BSDSRC}/sbin/ping +special tput srcdir ${BSDSRC}/contrib/ncurses/progs +special tset srcdir ${BSDSRC}/contrib/ncurses/progs - . ${CENV} +special ifconfig lib ${BSDOBJ}${BSDSRC}/${TARGET}.${TARGET_ARCH}/lib/libifconfig/libifconfig.a +_EOF + echo "+++ Prepared RootFS config ... $CFGDIR/$ROOTFS_CONF" + install -d ${BSDOBJ}/elwix - crunchgen -f -o -p ${BSDOBJ}/elwix -h $MKDIR/$MKH -m $MKF -c elwix.c -e elwix $ROOTFS_CONF + env MAKEOBJDIRPREFIX=${BSDOBJ}/elwix ${CEXEC} crunchgen -f \ + -h $ROOTFS_MKDIR/$MKH -m $MKF \ + -c elwix.c -e elwix $ROOTFS_CONF + if [ $? -ne 0 ]; then + exit 1 + fi +# cat >>$MKF << _EOF +# +#.for _tool in ${CRUNCH_BUILDTOOLS} +#build-tools-${_tool}: +# ${_+_}cd ${.CURDIR}/../../${_tool}; \ +# if [ "${MK_AUTO_OBJ}" = "no" ]; then \ +# ${CRUNCHENV} MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} obj; \ +# fi; \ +# ${CRUNCHENV} MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} build-tools +# +#build-tools: build-tools-${_tool} +# /usr/bin ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET} +# +#.endfor +#_EOF cd - } build_elwix() { - echo "+++ Build ELWIX RootFS firmware ..." - cd $MKDIR - . ${CENV} - MAKEOBJDIRPREFIX=${BSDOBJ}/elwix - make -f $MKF clean - make -f $MKF + echo "+++ Build ELWIX RootFS firmware ... $ROOTFS_MKDIR" + cd $ROOTFS_MKDIR + ${CBUILD} -f $MKF \ + TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ + ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF} if [ $? -ne 0 ]; then exit 1 fi @@ -100,18 +129,18 @@ build_elwix() build_rootdir() { - echo "+++ Build RootFS directory ..." + echo "+++ Build RootFS directory ... $ROOTFS" cd $ROOTFS install -d bin; install -d dev; install -d elwix; - install -d elwix/etc; + install -d etc; install -d libexec; install -d mnt; install -d -m 0555 proc; + install -d rescue; install -d sbin; - install -d system; install -d -m 1777 tmp; install -d usr; install -d usr/bin; @@ -119,10 +148,11 @@ build_rootdir() install -d usr/libexec; install -d usr/sbin; install -d var; + install -d var/sys; ln -fs /usr/lib lib; - ln -fs /elwix/etc etc; + ln -fs /elwix/boot boot; ln -fs /elwix/exports exports; ln -fs /elwix/home home; ln -fs /elwix/root root; @@ -137,13 +167,14 @@ install_rootfs() SBIN="${ROOTFS}/sbin" UBIN="${ROOTFS}/usr/bin" LIBEXEC="${ROOTFS}/usr/libexec" - ETC="${ROOTFS}/elwix/etc" + ETC="${ROOTFS}/etc" + RESCUE="${ROOTFS}/rescue" PRG="/sbin/elwix" LNPRG="${SBIN}/elwix" - echo "+++ Install ELWIX into RootFS directory ..." - install $MKDIR/elwix $SBIN + echo "+++ Install ELWIX into RootFS directory ... $ROOTFS" + install $ROOTFS_MKDIR/elwix $SBIN InstallList ${ELWIX_ROOTFS} ${WORLD} ${ROOTFS} @@ -151,259 +182,298 @@ install_rootfs() # ln -s /usr/sbin/nologin $SBIN - ln $LNPRG $BIN/csh - ln $LNPRG $BIN/tcsh + ln -s $PRG $BIN/test + ln -s $PRG $BIN/\[ + ln -s $PRG $BIN/cat + ln -s $PRG $BIN/chflags + ln -s $PRG $BIN/chio + ln -s $PRG $BIN/chmod + ln -s $PRG $BIN/cp + ln -s $PRG $RESCUE/cp + ln -s $PRG $BIN/csh + ln -s $PRG $BIN/-csh + ln -s $PRG $RESCUE/csh + ln -s $PRG $BIN/tcsh + ln -s $PRG $BIN/-tcsh + ln -s $PRG $BIN/date + ln -s $PRG $BIN/dd + ln -s $PRG $BIN/df + ln -s $PRG $BIN/domainname + ln -s $PRG $BIN/echo + ln -s $PRG $BIN/expr + ln -s $PRG $BIN/hostname + ln -s $PRG $BIN/kenv + ln -s $PRG $BIN/kill + ln -s $PRG $BIN/ln + ln -s $PRG $BIN/link + ln -s $PRG $BIN/ls + ln -s $PRG $BIN/mkdir + ln -s $PRG $BIN/mv + ln -s $PRG $BIN/pax + ln -s $PRG $BIN/pkill + ln -s $PRG $BIN/pgrep + ln -s $PRG $BIN/sh + ln -s $PRG $BIN/-sh + ln -s $PRG $RESCUE/sh + ln -s $PRG $BIN/ps + ln -s $PRG $BIN/pwait + ln -s $PRG $BIN/pwd + ln -s $PRG $BIN/realpath + ln -s $PRG $BIN/rm + ln -s $PRG $RESCUE/rm + ln -s $PRG $BIN/unlink +# 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 $LNPRG $BIN/test - ln $LNPRG $BIN/\[ - ln $LNPRG $BIN/cat - ln $LNPRG $BIN/chflags - ln $LNPRG $BIN/chio - ln $LNPRG $BIN/chmod - ln $LNPRG $BIN/cp - ln $LNPRG $BIN/date - ln $LNPRG $BIN/dd - ln $LNPRG $BIN/df - ln $LNPRG $BIN/domainname - ln $LNPRG $BIN/echo - ln $LNPRG $BIN/expr - ln $LNPRG $BIN/hostname - ln $LNPRG $BIN/kenv - ln $LNPRG $BIN/kill - ln $LNPRG $BIN/ln - ln $LNPRG $BIN/link - ln $LNPRG $BIN/ls - ln $LNPRG $BIN/mkdir - ln $LNPRG $BIN/mv - ln $LNPRG $BIN/pax - ln $LNPRG $BIN/pkill - ln $LNPRG $BIN/pgrep - ln $LNPRG $BIN/sh - ln $LNPRG $BIN/-sh - ln $LNPRG $BIN/ps - ln $LNPRG $BIN/pwait - ln $LNPRG $BIN/pwd - ln $LNPRG $BIN/realpath - ln $LNPRG $BIN/rm - ln $LNPRG $BIN/unlink - ln $LNPRG $BIN/rmdir - ln $LNPRG $BIN/sleep - ln $LNPRG $BIN/stty - ln $LNPRG $BIN/sync - ln $LNPRG $BIN/uuidgen + ln -s $PRG $BIN/true + ln -s $PRG $BIN/false + ln -s $PRG $BIN/basename + ln -s $PRG $BIN/tail + ln -s $PRG $BIN/nc + ln -s $PRG $BIN/w + ln -s $PRG $BIN/head + ln -s $PRG $BIN/uname + ln -s $PRG $BIN/tset + ln -s $PRG $BIN/vmstat + ln -s $PRG $BIN/systat + ln -s $PRG $BIN/tput + ln -s $PRG $BIN/grep + ln -s $PRG $BIN/awk + ln -s $PRG $BIN/less + ln -s $PRG $BIN/gzip + ln -s $PRG $BIN/cap_mkdb + ln -s $PRG $BIN/sed + ln -s $PRG $BIN/vi + ln -s $PRG $RESCUE/vi + ln -s $PRG $BIN/du + ln -s $PRG $BIN/getopt + ln -s $PRG $BIN/logger + ln -s $PRG $BIN/nice + ln -s $PRG $BIN/nohup + ln -s $PRG $BIN/seq + ln -s $PRG $BIN/sockstat + ln -s $PRG $BIN/stat + ln -s $PRG $BIN/tee + ln -s $PRG $BIN/tftp + ln -s $PRG $BIN/touch + ln -s $PRG $BIN/wc + ln -s $PRG $BIN/xargs + ln -s $PRG $BIN/printenv + ln -s $PRG $BIN/egrep + ln -s $PRG $BIN/fgrep + ln -s $PRG $BIN/tar + ln -s $PRG $BIN/cpio + ln -s $PRG $BIN/nawk + ln -s $PRG $BIN/gunzip + ln -s $PRG $BIN/gzcat + ln -s $PRG $BIN/zcat + ln -s $PRG $BIN/more + ln -s $PRG $BIN/reset + ln -s $PRG $BIN/readlink + ln -s $PRG $BIN/uptime + ln -s $PRG $BIN/bzip2 + ln -s $PRG $BIN/bunzip2 + ln -s $PRG $BIN/bzcat - ln $LNPRG $BIN/true - ln $LNPRG $BIN/false - ln $LNPRG $BIN/basename - ln $LNPRG $BIN/tail - ln $LNPRG $BIN/nc - ln $LNPRG $BIN/w - ln $LNPRG $BIN/head - ln $LNPRG $BIN/uname - ln $LNPRG $BIN/tset - ln $LNPRG $BIN/vmstat - ln $LNPRG $BIN/systat - ln $LNPRG $BIN/tput - ln $LNPRG $BIN/grep - ln $LNPRG $BIN/awk - ln $LNPRG $BIN/less - ln $LNPRG $BIN/gzip - ln $LNPRG $BIN/cap_mkdb - ln $LNPRG $BIN/sed - ln $LNPRG $BIN/vi - ln $LNPRG $BIN/du - ln $LNPRG $BIN/getopt - ln $LNPRG $BIN/logger - ln $LNPRG $BIN/nice - ln $LNPRG $BIN/nohup - ln $LNPRG $BIN/seq - ln $LNPRG $BIN/sockstat - ln $LNPRG $BIN/stat - ln $LNPRG $BIN/tee - ln $LNPRG $BIN/tftp - ln $LNPRG $BIN/touch - ln $LNPRG $BIN/wc - ln $LNPRG $BIN/xargs - ln $LNPRG $BIN/printenv - ln $LNPRG $BIN/egrep - ln $LNPRG $BIN/fgrep - ln $LNPRG $BIN/tar - ln $LNPRG $BIN/cpio - ln $LNPRG $BIN/nawk - ln $LNPRG $BIN/gunzip - ln $LNPRG $BIN/gzcat - ln $LNPRG $BIN/zcat - ln $LNPRG $BIN/more - ln $LNPRG $BIN/reset - ln $LNPRG $BIN/readlink - ln $LNPRG $BIN/uptime - ln $LNPRG $BIN/bzip2 - ln $LNPRG $BIN/bunzip2 - ln $LNPRG $BIN/bzcat + 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/devfs + ln -s $PRG $SBIN/dhclient + ln -s $PRG $SBIN/dmesg + ln -s $PRG $SBIN/dump + ln -s $PRG $SBIN/rdump + ln -s $PRG $SBIN/dumpon + ln -s $PRG $SBIN/fdisk + ln -s $PRG $SBIN/fsck + ln -s $PRG $RESCUE/fsck + ln -s $PRG $SBIN/fsck_ffs + ln -s $PRG $SBIN/fsck_ufs + 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/ifconfig + ln -s $PRG $RESCUE/ifconfig + ln -s $PRG $SBIN/init + ln -s $PRG $SBIN/ipfw + ln -s $PRG $SBIN/iscontrol + ln -s $PRG $SBIN/kldconfig + ln -s $PRG $SBIN/kldload + ln -s $PRG $SBIN/kldstat + ln -s $PRG $SBIN/kldunload + ln -s $PRG $SBIN/ldconfig + ln -s $PRG $SBIN/md5 + ln -s $PRG $SBIN/sha1 + ln -s $PRG $SBIN/sha256 + ln -s $PRG $SBIN/rmd160 + ln -s $PRG $SBIN/mdconfig + ln -s $PRG $RESCUE/mdconfig + 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/mount + ln -s $PRG $RESCUE/mount +# 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_unionfs + ln -s $PRG $SBIN/newfs + ln -s $PRG $RESCUE/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/pfctl + ln -s $PRG $SBIN/pflogd + ln -s $PRG $SBIN/quotacheck + ln -s $PRG $SBIN/reboot + ln -s $PRG $RESCUE/reboot + ln -s $PRG $SBIN/halt + ln -s $PRG $RESCUE/halt + ln -s $PRG $SBIN/fastboot + ln -s $PRG $SBIN/fasthalt +# 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/sysctl + ln -s $PRG $SBIN/tunefs + ln -s $PRG $SBIN/umount + ln -s $PRG $SBIN/zfs + ln -s $PRG $SBIN/zpool - ln $LNPRG $SBIN/atacontrol - ln $LNPRG $SBIN/bsdlabel - ln $LNPRG $SBIN/disklabel - ln $LNPRG $SBIN/camcontrol - ln $LNPRG $SBIN/comcontrol - ln $LNPRG $SBIN/conscontrol - ln $LNPRG $SBIN/devfs - ln $LNPRG $SBIN/dhclient - ln $LNPRG $SBIN/dmesg - ln $LNPRG $SBIN/dump - ln $LNPRG $SBIN/rdump - ln $LNPRG $SBIN/dumpon - ln $LNPRG $SBIN/fdisk - ln $LNPRG $SBIN/fsck - ln $LNPRG $SBIN/fsck_ffs - ln $LNPRG $SBIN/fsck_ufs - ln $LNPRG $SBIN/fsck_4.2bsd - ln $LNPRG $SBIN/fsck_msdosfs - ln $LNPRG $SBIN/-geom - ln $LNPRG $SBIN/glabel - ln $LNPRG $SBIN/gpart - ln $LNPRG $SBIN/growfs - ln $LNPRG $SBIN/hastctl - ln $LNPRG $SBIN/hastd - ln $LNPRG $SBIN/ifconfig - ln $LNPRG $SBIN/init - ln $LNPRG $SBIN/ipfw - ln $LNPRG $SBIN/iscontrol - ln $LNPRG $SBIN/kldconfig - ln $LNPRG $SBIN/kldload - ln $LNPRG $SBIN/kldstat - ln $LNPRG $SBIN/kldunload - ln $LNPRG $SBIN/ldconfig - ln $LNPRG $SBIN/md5 - ln $LNPRG $SBIN/sha1 - ln $LNPRG $SBIN/sha256 - ln $LNPRG $SBIN/rmd160 - ln $LNPRG $SBIN/mdconfig - ln $LNPRG $SBIN/mdmfs - ln $LNPRG $SBIN/mount_mfs - ln $LNPRG $SBIN/mknod - ln $LNPRG $SBIN/mksnap_ffs - ln $LNPRG $SBIN/mount - ln $LNPRG $SBIN/mount_cd9660 - ln $LNPRG $SBIN/mount_msdosfs - ln $LNPRG $SBIN/mount_nfs - ln $LNPRG $SBIN/mount_ntfs - ln $LNPRG $SBIN/mount_nullfs - ln $LNPRG $SBIN/mount_udf - ln $LNPRG $SBIN/mount_unionfs - ln $LNPRG $SBIN/newfs - ln $LNPRG $SBIN/newfs_msdos - ln $LNPRG $SBIN/nfsiod - ln $LNPRG $SBIN/nos-tun - ln $LNPRG $SBIN/pfctl - ln $LNPRG $SBIN/pflogd - ln $LNPRG $SBIN/quotacheck - ln $LNPRG $SBIN/reboot - ln $LNPRG $SBIN/halt - ln $LNPRG $SBIN/fastboot - ln $LNPRG $SBIN/fasthalt - ln $LNPRG $SBIN/recoverdisk - ln $LNPRG $SBIN/restore - ln $LNPRG $SBIN/rrestore - ln $LNPRG $SBIN/route - ln $LNPRG $SBIN/rtsol - ln $LNPRG $SBIN/shutdown - ln $LNPRG $SBIN/savecore - ln $LNPRG $SBIN/swapon - ln $LNPRG $SBIN/swapoff - ln $LNPRG $SBIN/swapctl - ln $LNPRG $SBIN/sysctl - ln $LNPRG $SBIN/tunefs - ln $LNPRG $SBIN/umount - ln $LNPRG $SBIN/zfs - ln $LNPRG $SBIN/zpool + ln -s $PRG $SBIN/ping + ln -s $PRG $SBIN/ping6 + ln -s $PRG $SBIN/traceroute + ln -s $PRG $SBIN/traceroute6 - ln $LNPRG $SBIN/ping - ln $LNPRG $SBIN/ping6 - ln $LNPRG $SBIN/traceroute - ln $LNPRG $SBIN/traceroute6 + ln -s $PRG $SBIN/chown + ln -s $PRG $SBIN/pwd_mkdb + ln -s $PRG $SBIN/arp + ln -s $PRG $SBIN/gpioctl + ln -s $PRG $SBIN/hostapd + ln -s $PRG $SBIN/hostapd_cli + ln -s $PRG $SBIN/wpa_supplicant + ln -s $PRG $SBIN/wpa_cli + ln -s $PRG $SBIN/wpa_passphrase + ln -s $PRG $SBIN/wake + ln -s $PRG $SBIN/watchdog + ln -s $PRG $SBIN/watchdogd +# 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/ndp + ln -s $PRG $SBIN/newsyslog + ln -s $PRG $SBIN/nologin + ln -s $PRG $SBIN/pstat + ln -s $PRG $SBIN/rtadvctl + ln -s $PRG $SBIN/rtadvd + ln -s $PRG $SBIN/rtsold + ln -s $PRG $SBIN/syslogd + ln -s $PRG $SBIN/setfib + ln -s $PRG $SBIN/swapinfo + ln -s $PRG $SBIN/chgrp - ln $LNPRG $SBIN/chown - ln $LNPRG $SBIN/pwd_mkdb - ln $LNPRG $SBIN/arp - ln $LNPRG $SBIN/gpioctl - ln $LNPRG $SBIN/hostapd - ln $LNPRG $SBIN/hostapd_cli - ln $LNPRG $SBIN/wpa_supplicant - ln $LNPRG $SBIN/wpa_cli - ln $LNPRG $SBIN/wpa_passphrase - ln $LNPRG $SBIN/wake - ln $LNPRG $SBIN/watchdog - ln $LNPRG $SBIN/watchdogd - ln $LNPRG $SBIN/inetd - ln $LNPRG $SBIN/wlandebug - ln $LNPRG $SBIN/chroot - ln $LNPRG $SBIN/i2c - ln $LNPRG $SBIN/iostat - ln $LNPRG $SBIN/jail - ln $LNPRG $SBIN/jexec - ln $LNPRG $SBIN/jls - ln $LNPRG $SBIN/ndp - ln $LNPRG $SBIN/newsyslog - ln $LNPRG $SBIN/nologin - ln $LNPRG $SBIN/pstat - ln $LNPRG $SBIN/rtadvctl - ln $LNPRG $SBIN/rtadvd - ln $LNPRG $SBIN/rtsold - ln $LNPRG $SBIN/syslogd - ln $LNPRG $SBIN/setfib - ln $LNPRG $SBIN/swapinfo - ln $LNPRG $SBIN/chgrp + ln -s $PRG $UBIN/login + ln -s $PRG $UBIN/passwd - ln $LNPRG $UBIN/login - ln $LNPRG $UBIN/passwd + ln -s $PRG $LIBEXEC/getty +# ln -s $PRG $LIBEXEC/tftpd - ln $LNPRG $LIBEXEC/getty - ln $LNPRG $LIBEXEC/tftpd - strip -s $LNPRG chown -hR root:wheel $ROOTFS echo "+++ ELWIX clean CVS tags ..." CleanCVS $ETC - CleanCVS $ETC/etc + echo } build_image() { - echo "+++ Build ELWIX RootFS image ..." - makefs -s ${ROOTFS_SIZE} -o minfree=0 $REL/$ROOTFS_IMG $ROOTFS + echo "+++ Build ELWIX RootFS image ... $ROOTFS --> $REL/$ROOTFS_IMG" + makefs -s ${ROOTFS_SIZE} -o minfree=0 $REL/$ROOTFS_IMG $ROOTFS || exit 1 + echo "+++ Completed ELWIX RootFS image ... $ROOTFS --> $REL/$ROOTFS_IMG" } install_image() { - echo "+++ Install ELWIX RootFS Image into kernel ..." - START=`strings -td $KERNEL | grep "MFS Filesystem" | cut -d ' ' -f 1 | head -1` - STOP=`strings -td $KERNEL | grep "MFS Filesystem" | cut -d ' ' -f 1 | tail -1` - STOP=$(($STOP + 1)) + echo "+++ Install ELWIX RootFS Image into kernel ... $REL/$ROOTFS_IMG" + echo "exec> stat -f '%z' $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 >$NEWKERN - cat $REL/$ROOTFS_IMG >>$NEWKERN - tail -c +$STOP $KERNEL >>$NEWKERN + echo "exec> ${CROSSTOOLDIR}/usr/bin/objdump -h $KERNEL_ROOTFS 2> /dev/null | grep \" oldmfs \"" + 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 kernel + gzip -9 $KRNNAME cd - + + echo "+++ Completed ELWIX RootFS kernel ... $NEWKERN.gz" } ### main() if SnitVer ${WORLD}/elwix.ver; then clean_elwix - prepare_elwix - build_elwix + prepare_elwix || exit 1 + build_elwix || exit 1 - build_rootdir - install_rootfs + build_rootdir || exit 1 + install_rootfs || exit 1 - build_image && install_image + build_image || exit 1 + install_image || exit 1 else - echo "Skipped ELWIX RootFS build ..." + echo "$? Skipped ELWIX RootFS build ..." fi echo "+++ Complete build ELWIX RootFS"