Annotation of elwix/build_rootfs.sh, revision 1.12

1.1       misho       1: #!/bin/sh
                      2: #
                      3: # ELWIX build script for rootfs firmware
                      4: #
                      5: # (C) AITNET ltd - Sofia/Bulgaria <office@aitnet.org>
                      6: #    by Michael Pounov <misho@elwix.org>
                      7: #
1.12    ! misho       8: # $Id: build_rootfs.sh,v 1.11.2.3 2021/03/25 19:04:57 misho Exp $
1.1       misho       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 - RootFS must build under root !?!"
                     29:        echo
                     30:        exit 1
                     31: fi
                     32: 
1.12    ! misho      33: if [ ! -x "${OBJDUMP}" ]; then
        !            34:        echo
        !            35:        echo "ELWIX project is not configured - executable objdump not found !"
        !            36:        echo
        !            37:        exit 1
        !            38: fi
        !            39: 
1.7       misho      40: KRNNAME="kernel_rootfs"
                     41: NEWKERN="${REL}/${KRNNAME}"
                     42: MKF="Makefile.elwix"
                     43: MKH="Makefile.inc"
1.1       misho      44: 
1.9       misho      45: # Set TARGET_CPUTYPE only for world compiling. Don't use this in kernel build!
                     46: X_TARGET_CPUTYPE="TARGET_CPUTYPE=${TARGET_CPUTYPE}"
                     47: 
1.1       misho      48: clean_elwix()
                     49: {
1.10      misho      50:        echo "+++ Clean elwix binary from ELWIX World ... $BSDOBJ/elwix"
1.3       misho      51:        rm -rf $BSDOBJ/elwix
1.1       misho      52: 
1.10      misho      53:        echo "+++ Clean ELWIX RootFS firmware ... $ROOTFS_MKDIR"
1.7       misho      54:        rm -rf $ROOTFS_MKDIR
                     55:        mkdir $ROOTFS_MKDIR
1.1       misho      56: 
1.10      misho      57:        echo "+++ Clean RootFS directory ... $ROOTFS"
1.3       misho      58:        chflags -R noschg $ROOTFS
1.1       misho      59:        rm -rf $ROOTFS
                     60:        mkdir $ROOTFS
                     61: 
                     62:        echo "+++ Clean Release directory ..."
                     63:        rm -rf $REL/$ROOTFS_IMG ${NEWKERN}*
                     64: }
                     65: 
                     66: prepare_elwix()
                     67: {
1.10      misho      68:        echo "+++ Prepair ELWIX RootFS firmware ... $ROOTFS_MKDIR"
1.7       misho      69:        cd $ROOTFS_MKDIR
1.1       misho      70:        cat >$MKH <<_EOF
                     71: # Auto-generated Makefile include for crungegen
                     72: # !!! Dont edit by hand !!!
                     73: #
1.3       misho      74: 
1.12    ! misho      75: LDFLAGS += -L${WORLD}/lib -L${WORLD}/usr/lib
        !            76: CFLAGS += -I${BSDSRC}/lib/libifconfig -I${BSDOBJ}${BSDSRC}/${TARGET}.${TARGET_ARCH}/lib/libifconfig
1.1       misho      77: _EOF
                     78:        cat >$ROOTFS_CONF <<_EOF
1.3       misho      79: srcdirs ${BSDSRC}/tools/tools ${BSDSRC}/tools/tools/ath
1.12    ! misho      80: srcdirs ${BSDSRC}/contrib/ncurses/progs ${BSDSRC}/lib/libifconfig
1.1       misho      81: srcdirs ${BSDSRC}/bin ${BSDSRC}/sbin ${BSDSRC}/libexec ${BSDSRC}/cddl/sbin ${BSDSRC}/sbin/ggate
1.3       misho      82: srcdirs ${BSDSRC}/usr.bin ${BSDSRC}/usr.sbin ${BSDSRC}/usr.sbin/wpa
                     83: srcdirs ${BSDSRC}/secure/usr.bin ${BSDSRC}/secure/usr.sbin ${BSDSRC}/secure/libexec
                     84: 
1.12    ! misho      85: #buildopts TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF}
1.3       misho      86: buildopts -DNO_PAM -DNO_KERBEROS WITHOUT_PAM_SUPPORT=yes WITHOUT_KERBEROS_SUPPORT=yes WITHOUT_KERBEROS=yes
1.12    ! misho      87: buildopts -DMK_CASPER=no WITHOUT_CASPER=yes MK_TESTS=no UPDATE_DEPENDFILE=yes _RECURSING_CRUNCH=1
        !            88: _EOF
        !            89:        cat $CFGDIR/$ROOTFS_CONF >>$ROOTFS_CONF
        !            90:        cat >>$ROOTFS_CONF <<_EOF
        !            91: special ping6 srcdir ${BSDSRC}/sbin/ping
        !            92: special tput srcdir ${BSDSRC}/contrib/ncurses/progs
        !            93: special tset srcdir ${BSDSRC}/contrib/ncurses/progs
1.11      misho      94: 
1.12    ! misho      95: special ifconfig lib ${BSDOBJ}${BSDSRC}/${TARGET}.${TARGET_ARCH}/lib/libifconfig/libifconfig.a
1.1       misho      96: _EOF
1.10      misho      97:        echo "+++ Prepared RootFS config ... $CFGDIR/$ROOTFS_CONF"
1.1       misho      98: 
1.3       misho      99:        install -d ${BSDOBJ}/elwix
1.12    ! misho     100:        env MAKEOBJDIRPREFIX=${BSDOBJ}/elwix ${CEXEC} crunchgen -f \
1.9       misho     101:                -h $ROOTFS_MKDIR/$MKH -m $MKF \
1.8       misho     102:                -c elwix.c -e elwix $ROOTFS_CONF
1.9       misho     103:        if [ $? -ne 0 ]; then
                    104:                exit 1
                    105:        fi
1.11      misho     106: #      cat >>$MKF << _EOF
                    107: #
                    108: #.for _tool in ${CRUNCH_BUILDTOOLS}
                    109: #build-tools-${_tool}:
                    110: #      ${_+_}cd ${.CURDIR}/../../${_tool}; \
                    111: #          if [ "${MK_AUTO_OBJ}" = "no" ]; then \
                    112: #              ${CRUNCHENV} MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} obj; \
                    113: #          fi; \
                    114: #          ${CRUNCHENV} MAKEOBJDIRPREFIX=${CRUNCHOBJS} ${MAKE} build-tools
                    115: #
                    116: #build-tools: build-tools-${_tool}
                    117: #      /usr/bin ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
                    118: #
                    119: #.endfor
                    120: #_EOF
1.1       misho     121:        cd -
                    122: }
                    123: 
                    124: build_elwix()
                    125: {
1.10      misho     126:        echo "+++ Build ELWIX RootFS firmware ... $ROOTFS_MKDIR"
1.7       misho     127:        cd $ROOTFS_MKDIR
1.10      misho     128:        ${CBUILD} -f $MKF \
1.9       misho     129:                TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
                    130:                ${X_TARGET_CPUTYPE} __MAKE_CONF=${MAKECONF}
1.3       misho     131:        if [ $? -ne 0 ]; then
                    132:                exit 1
                    133:        fi
1.1       misho     134:        cd -
                    135: }
                    136: 
                    137: build_rootdir()
                    138: {
1.10      misho     139:        echo "+++ Build RootFS directory ... $ROOTFS"
1.1       misho     140:        cd $ROOTFS
                    141: 
                    142:        install -d bin;
                    143:        install -d dev;
                    144:        install -d elwix;
1.11      misho     145:        install -d etc;
1.3       misho     146:        install -d libexec;
1.1       misho     147:        install -d mnt;
                    148:        install -d -m 0555 proc;
1.11      misho     149:        install -d rescue;
1.1       misho     150:        install -d sbin;
                    151:        install -d -m 1777 tmp;
                    152:        install -d usr;
1.3       misho     153:        install -d usr/bin;
                    154:        install -d usr/lib;
                    155:        install -d usr/libexec;
                    156:        install -d usr/sbin;
1.1       misho     157:        install -d var;
1.3       misho     158:        install -d var/sys;
1.1       misho     159: 
                    160:        ln -fs /usr/lib lib;
                    161: 
1.11      misho     162:        ln -fs /elwix/boot boot;
1.1       misho     163:        ln -fs /elwix/exports exports;
                    164:        ln -fs /elwix/home home;
                    165:        ln -fs /elwix/root root;
                    166:        ln -fs /elwix/tftpboot tftpboot;
                    167: 
                    168:        cd -
                    169: }
                    170: 
                    171: install_rootfs()
                    172: {
                    173:        BIN="${ROOTFS}/bin"
                    174:        SBIN="${ROOTFS}/sbin"
1.3       misho     175:        UBIN="${ROOTFS}/usr/bin"
                    176:        LIBEXEC="${ROOTFS}/usr/libexec"
1.11      misho     177:        ETC="${ROOTFS}/etc"
                    178:        RESCUE="${ROOTFS}/rescue"
1.1       misho     179: 
1.3       misho     180:        PRG="/sbin/elwix"
                    181:        LNPRG="${SBIN}/elwix"
                    182: 
1.10      misho     183:        echo "+++ Install ELWIX into RootFS directory ... $ROOTFS"
1.7       misho     184:        install $ROOTFS_MKDIR/elwix $SBIN
1.1       misho     185: 
                    186:        InstallList ${ELWIX_ROOTFS} ${WORLD} ${ROOTFS}
                    187: 
1.2       misho     188:        InstallDir ${ROOTFS_ETC} $ETC
1.1       misho     189: 
1.3       misho     190: #      ln -s /usr/sbin/nologin $SBIN
1.1       misho     191: 
                    192:        ln -s $PRG $BIN/test
                    193:        ln -s $PRG $BIN/\[
                    194:        ln -s $PRG $BIN/cat
                    195:        ln -s $PRG $BIN/chflags
                    196:        ln -s $PRG $BIN/chio
                    197:        ln -s $PRG $BIN/chmod
                    198:        ln -s $PRG $BIN/cp
1.11      misho     199:        ln -s $PRG $RESCUE/cp
1.9       misho     200:        ln -s $PRG $BIN/csh
                    201:        ln -s $PRG $BIN/-csh
1.11      misho     202:        ln -s $PRG $RESCUE/csh
1.9       misho     203:        ln -s $PRG $BIN/tcsh
                    204:        ln -s $PRG $BIN/-tcsh
1.1       misho     205:        ln -s $PRG $BIN/date
                    206:        ln -s $PRG $BIN/dd
                    207:        ln -s $PRG $BIN/df
                    208:        ln -s $PRG $BIN/domainname
                    209:        ln -s $PRG $BIN/echo
                    210:        ln -s $PRG $BIN/expr
                    211:        ln -s $PRG $BIN/hostname
                    212:        ln -s $PRG $BIN/kenv
                    213:        ln -s $PRG $BIN/kill
                    214:        ln -s $PRG $BIN/ln
                    215:        ln -s $PRG $BIN/link
                    216:        ln -s $PRG $BIN/ls
                    217:        ln -s $PRG $BIN/mkdir
                    218:        ln -s $PRG $BIN/mv
                    219:        ln -s $PRG $BIN/pax
                    220:        ln -s $PRG $BIN/pkill
                    221:        ln -s $PRG $BIN/pgrep
                    222:        ln -s $PRG $BIN/sh
                    223:        ln -s $PRG $BIN/-sh
1.11      misho     224:        ln -s $PRG $RESCUE/sh
1.1       misho     225:        ln -s $PRG $BIN/ps
                    226:        ln -s $PRG $BIN/pwait
                    227:        ln -s $PRG $BIN/pwd
                    228:        ln -s $PRG $BIN/realpath
                    229:        ln -s $PRG $BIN/rm
1.11      misho     230:        ln -s $PRG $RESCUE/rm
1.1       misho     231:        ln -s $PRG $BIN/unlink
1.10      misho     232: #      ln -s $PRG $BIN/rmdir
1.1       misho     233:        ln -s $PRG $BIN/sleep
                    234:        ln -s $PRG $BIN/stty
                    235:        ln -s $PRG $BIN/sync
1.10      misho     236: #      ln -s $PRG $BIN/uuidgen
1.1       misho     237: 
1.3       misho     238:        ln -s $PRG $BIN/true
                    239:        ln -s $PRG $BIN/false
                    240:        ln -s $PRG $BIN/basename
                    241:        ln -s $PRG $BIN/tail
                    242:        ln -s $PRG $BIN/nc
                    243:        ln -s $PRG $BIN/w
                    244:        ln -s $PRG $BIN/head
                    245:        ln -s $PRG $BIN/uname
                    246:        ln -s $PRG $BIN/tset
                    247:        ln -s $PRG $BIN/vmstat
                    248:        ln -s $PRG $BIN/systat
                    249:        ln -s $PRG $BIN/tput
                    250:        ln -s $PRG $BIN/grep
                    251:        ln -s $PRG $BIN/awk
                    252:        ln -s $PRG $BIN/less
                    253:        ln -s $PRG $BIN/gzip
                    254:        ln -s $PRG $BIN/cap_mkdb
                    255:        ln -s $PRG $BIN/sed
                    256:        ln -s $PRG $BIN/vi
1.11      misho     257:        ln -s $PRG $RESCUE/vi
1.3       misho     258:        ln -s $PRG $BIN/du
                    259:        ln -s $PRG $BIN/getopt
                    260:        ln -s $PRG $BIN/logger
                    261:        ln -s $PRG $BIN/nice
                    262:        ln -s $PRG $BIN/nohup
                    263:        ln -s $PRG $BIN/seq
                    264:        ln -s $PRG $BIN/sockstat
                    265:        ln -s $PRG $BIN/stat
                    266:        ln -s $PRG $BIN/tee
                    267:        ln -s $PRG $BIN/tftp
                    268:        ln -s $PRG $BIN/touch
                    269:        ln -s $PRG $BIN/wc
                    270:        ln -s $PRG $BIN/xargs
                    271:        ln -s $PRG $BIN/printenv
                    272:        ln -s $PRG $BIN/egrep
                    273:        ln -s $PRG $BIN/fgrep
                    274:        ln -s $PRG $BIN/tar
                    275:        ln -s $PRG $BIN/cpio
                    276:        ln -s $PRG $BIN/nawk
                    277:        ln -s $PRG $BIN/gunzip
                    278:        ln -s $PRG $BIN/gzcat
                    279:        ln -s $PRG $BIN/zcat
                    280:        ln -s $PRG $BIN/more
                    281:        ln -s $PRG $BIN/reset
                    282:        ln -s $PRG $BIN/readlink
                    283:        ln -s $PRG $BIN/uptime
                    284:        ln -s $PRG $BIN/bzip2
                    285:        ln -s $PRG $BIN/bunzip2
                    286:        ln -s $PRG $BIN/bzcat
                    287: 
1.1       misho     288:        ln -s $PRG $SBIN/bsdlabel
                    289:        ln -s $PRG $SBIN/disklabel
1.10      misho     290: #      ln -s $PRG $SBIN/camcontrol
                    291: #      ln -s $PRG $SBIN/comcontrol
                    292: #      ln -s $PRG $SBIN/conscontrol
1.1       misho     293:        ln -s $PRG $SBIN/devfs
                    294:        ln -s $PRG $SBIN/dhclient
                    295:        ln -s $PRG $SBIN/dmesg
                    296:        ln -s $PRG $SBIN/dump
                    297:        ln -s $PRG $SBIN/rdump
                    298:        ln -s $PRG $SBIN/dumpon
                    299:        ln -s $PRG $SBIN/fdisk
                    300:        ln -s $PRG $SBIN/fsck
1.11      misho     301:        ln -s $PRG $RESCUE/fsck
1.1       misho     302:        ln -s $PRG $SBIN/fsck_ffs
                    303:        ln -s $PRG $SBIN/fsck_ufs
                    304:        ln -s $PRG $SBIN/fsck_4.2bsd
                    305:        ln -s $PRG $SBIN/fsck_msdosfs
1.3       misho     306:        ln -s $PRG $SBIN/etherswitchcfg
1.10      misho     307: #      ln -s $PRG $SBIN/-geom
                    308: #      ln -s $PRG $SBIN/glabel
                    309: #      ln -s $PRG $SBIN/gpart
                    310: #      ln -s $PRG $SBIN/graid
                    311: #      ln -s $PRG $SBIN/growfs
                    312: #      ln -s $PRG $SBIN/hastctl
                    313: #      ln -s $PRG $SBIN/hastd
1.1       misho     314:        ln -s $PRG $SBIN/ifconfig
1.11      misho     315:        ln -s $PRG $RESCUE/ifconfig
1.1       misho     316:        ln -s $PRG $SBIN/init
                    317:        ln -s $PRG $SBIN/ipfw
                    318:        ln -s $PRG $SBIN/iscontrol
                    319:        ln -s $PRG $SBIN/kldconfig
                    320:        ln -s $PRG $SBIN/kldload
                    321:        ln -s $PRG $SBIN/kldstat
                    322:        ln -s $PRG $SBIN/kldunload
                    323:        ln -s $PRG $SBIN/ldconfig
                    324:        ln -s $PRG $SBIN/md5
                    325:        ln -s $PRG $SBIN/sha1
                    326:        ln -s $PRG $SBIN/sha256
                    327:        ln -s $PRG $SBIN/rmd160
                    328:        ln -s $PRG $SBIN/mdconfig
1.11      misho     329:        ln -s $PRG $RESCUE/mdconfig
1.1       misho     330:        ln -s $PRG $SBIN/mdmfs
                    331:        ln -s $PRG $SBIN/mount_mfs
                    332:        ln -s $PRG $SBIN/mknod
1.10      misho     333: #      ln -s $PRG $SBIN/mksnap_ffs
1.1       misho     334:        ln -s $PRG $SBIN/mount
1.11      misho     335:        ln -s $PRG $RESCUE/mount
1.10      misho     336: #      ln -s $PRG $SBIN/mount_cd9660
1.1       misho     337:        ln -s $PRG $SBIN/mount_msdosfs
                    338:        ln -s $PRG $SBIN/mount_nfs
1.4       misho     339: #      ln -s $PRG $SBIN/mount_ntfs
1.1       misho     340:        ln -s $PRG $SBIN/mount_nullfs
1.10      misho     341: #      ln -s $PRG $SBIN/mount_udf
1.1       misho     342:        ln -s $PRG $SBIN/mount_unionfs
                    343:        ln -s $PRG $SBIN/newfs
1.11      misho     344:        ln -s $PRG $RESCUE/newfs
1.1       misho     345:        ln -s $PRG $SBIN/newfs_msdos
1.10      misho     346: #      ln -s $PRG $SBIN/nfsiod
                    347: #      ln -s $PRG $SBIN/nos-tun
                    348: #      ln -s $PRG $SBIN/nvmecontrol
1.1       misho     349:        ln -s $PRG $SBIN/pfctl
                    350:        ln -s $PRG $SBIN/pflogd
                    351:        ln -s $PRG $SBIN/quotacheck
                    352:        ln -s $PRG $SBIN/reboot
1.11      misho     353:        ln -s $PRG $RESCUE/reboot
1.1       misho     354:        ln -s $PRG $SBIN/halt
1.11      misho     355:        ln -s $PRG $RESCUE/halt
1.1       misho     356:        ln -s $PRG $SBIN/fastboot
                    357:        ln -s $PRG $SBIN/fasthalt
1.10      misho     358: #      ln -s $PRG $SBIN/recoverdisk
1.1       misho     359:        ln -s $PRG $SBIN/restore
                    360:        ln -s $PRG $SBIN/rrestore
                    361:        ln -s $PRG $SBIN/route
                    362:        ln -s $PRG $SBIN/rtsol
1.3       misho     363:        ln -s $PRG $SBIN/shutdown
1.10      misho     364: #      ln -s $PRG $SBIN/savecore
                    365: #      ln -s $PRG $SBIN/swapon
                    366: #      ln -s $PRG $SBIN/swapoff
                    367: #      ln -s $PRG $SBIN/swapctl
1.1       misho     368:        ln -s $PRG $SBIN/sysctl
                    369:        ln -s $PRG $SBIN/tunefs
                    370:        ln -s $PRG $SBIN/umount
                    371:        ln -s $PRG $SBIN/zfs
                    372:        ln -s $PRG $SBIN/zpool
                    373: 
1.3       misho     374:        ln -s $PRG $SBIN/ping
                    375:        ln -s $PRG $SBIN/ping6
                    376:        ln -s $PRG $SBIN/traceroute
                    377:        ln -s $PRG $SBIN/traceroute6
                    378: 
                    379:        ln -s $PRG $SBIN/chown
                    380:        ln -s $PRG $SBIN/pwd_mkdb
                    381:        ln -s $PRG $SBIN/arp
                    382:        ln -s $PRG $SBIN/gpioctl
                    383:        ln -s $PRG $SBIN/hostapd
                    384:        ln -s $PRG $SBIN/hostapd_cli
                    385:        ln -s $PRG $SBIN/wpa_supplicant
                    386:        ln -s $PRG $SBIN/wpa_cli
                    387:        ln -s $PRG $SBIN/wpa_passphrase
                    388:        ln -s $PRG $SBIN/wake
                    389:        ln -s $PRG $SBIN/watchdog
                    390:        ln -s $PRG $SBIN/watchdogd
1.10      misho     391: #      ln -s $PRG $SBIN/inetd
1.3       misho     392:        ln -s $PRG $SBIN/wlandebug
                    393:        ln -s $PRG $SBIN/chroot
                    394:        ln -s $PRG $SBIN/i2c
                    395:        ln -s $PRG $SBIN/iostat
1.10      misho     396: #      ln -s $PRG $SBIN/jail
                    397: #      ln -s $PRG $SBIN/jexec
                    398: #      ln -s $PRG $SBIN/jls
1.3       misho     399:        ln -s $PRG $SBIN/ndp
                    400:        ln -s $PRG $SBIN/newsyslog
                    401:        ln -s $PRG $SBIN/nologin
                    402:        ln -s $PRG $SBIN/pstat
                    403:        ln -s $PRG $SBIN/rtadvctl
                    404:        ln -s $PRG $SBIN/rtadvd
                    405:        ln -s $PRG $SBIN/rtsold
                    406:        ln -s $PRG $SBIN/syslogd
                    407:        ln -s $PRG $SBIN/setfib
                    408:        ln -s $PRG $SBIN/swapinfo
                    409:        ln -s $PRG $SBIN/chgrp
                    410: 
                    411:        ln -s $PRG $UBIN/login
                    412:        ln -s $PRG $UBIN/passwd
                    413: 
                    414:        ln -s $PRG $LIBEXEC/getty
1.10      misho     415: #      ln -s $PRG $LIBEXEC/tftpd
1.3       misho     416: 
                    417:        strip -s $LNPRG
                    418: 
1.1       misho     419:        chown -hR root:wheel $ROOTFS
1.3       misho     420: 
                    421:        echo "+++ ELWIX clean CVS tags ..."
                    422:        CleanCVS $ETC
1.9       misho     423:        echo
1.1       misho     424: }
                    425: 
                    426: build_image()
                    427: {
1.10      misho     428:        echo "+++ Build ELWIX RootFS image ... $ROOTFS --> $REL/$ROOTFS_IMG"
1.11      misho     429:        makefs -s ${ROOTFS_SIZE} -o minfree=0 $REL/$ROOTFS_IMG $ROOTFS || exit 1
1.10      misho     430:        echo "+++ Completed ELWIX RootFS image ... $ROOTFS --> $REL/$ROOTFS_IMG"
1.1       misho     431: }
                    432: 
                    433: install_image()
                    434: {
1.10      misho     435:        echo "+++ Install ELWIX RootFS Image into kernel ... $REL/$ROOTFS_IMG"
1.11      misho     436:        echo "exec> stat -f '%z' $REL/$ROOTFS_IMG"
1.10      misho     437:        mfs_size=`stat -f '%z' $REL/$ROOTFS_IMG 2>/dev/null`
                    438:        [ -z ${mfs_size} ] && echo "Can't determine MFS image size" && exit 1
                    439: 
1.12    ! misho     440:        echo "exec> ${OBJDUMP} -h $KERNEL_ROOTFS 2> /dev/null | grep \" oldmfs \""
        !           441:        sec_info=`${OBJDUMP} -h $KERNEL_ROOTFS 2> /dev/null | grep " oldmfs "`
1.10      misho     442:        [ -z "${sec_info}" ] && echo "Can't locate mfs section within kernel" && exit 1
                    443:        echo "'-> Object dump { ${sec_info} }"
                    444: 
                    445:        sec_size=`echo ${sec_info} | awk '{printf("%d", "0x" $3)}' 2> /dev/null`
                    446:        sec_start=`echo ${sec_info} | awk '{printf("%d", "0x" $6)}' 2> /dev/null`
                    447:        echo "'-> Start offset from $sec_start and rootfs size $sec_size byte"
                    448:        [ ${sec_size} -lt ${mfs_size} ] && echo "MFS image too large" && exit 1
                    449: 
                    450:        cp $KERNEL_ROOTFS $NEWKERN
                    451:        dd if=$REL/$ROOTFS_IMG ibs=8192 of=$NEWKERN obs=${sec_start} oseek=1 conv=notrunc \
                    452:                2>/dev/null && echo "'-> Completed MFS image embedded into kernel"
                    453: 
1.12    ! misho     454: ###    START=`strings -td $KERNEL_ROOTFS | grep "MFS Filesystem" | cut -d ' ' -f 1 | head -1`
        !           455: ###    STOP=`strings -td $KERNEL_ROOTFS | grep "MFS Filesystem" | cut -d ' ' -f 1 | tail -1`
        !           456: ###    STOP=$(($STOP + 1))
        !           457: ###    echo "'-> Start offset from $START to $STOP byte"
        !           458: 
        !           459: ###    head -c $START $KERNEL_ROOTFS >$NEWKERN
        !           460: ###    cat $REL/$ROOTFS_IMG >>$NEWKERN
        !           461: ###    tail -c +$STOP $KERNEL_ROOTFS >>$NEWKERN
1.1       misho     462: 
1.10      misho     463:        echo "'-> Compress kernel"
1.1       misho     464:        cd $REL
1.7       misho     465:        gzip -9 $KRNNAME
1.1       misho     466:        cd -
1.10      misho     467: 
                    468:        echo "+++ Completed ELWIX RootFS kernel ... $NEWKERN.gz"
1.1       misho     469: }
                    470: 
                    471: ### main()
                    472: if SnitVer ${WORLD}/elwix.ver; then
                    473:        clean_elwix
1.9       misho     474:        prepare_elwix || exit 1
                    475:        build_elwix || exit 1
1.1       misho     476: 
1.9       misho     477:        build_rootdir || exit 1
                    478:        install_rootfs || exit 1
1.1       misho     479: 
1.9       misho     480:        build_image || exit 1
                    481:        install_image || exit 1
1.1       misho     482: else
1.9       misho     483:        echo "$? Skipped ELWIX RootFS build ..."
1.1       misho     484: fi
                    485: 
                    486: echo "+++ Complete build ELWIX RootFS"

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>