Annotation of elwix/build_rootfs.sh, revision 1.2.4.6

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.2.4.6 ! misho       8: # $Id: build_rootfs.sh,v 1.2.4.5 2012/02/16 10:05:34 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: 
                     33: NEWKERN="${REL}/kernel"
                     34: 
                     35: clean_elwix()
                     36: {
                     37:        echo "+++ Clean csh from ELWIX World ..."
1.2.4.6 ! misho      38: #      rm -rf ${BSDOBJ}/usr/src/bin/csh/*
        !            39:        rm -rf $BSDOBJ/elwix
1.1       misho      40: 
                     41:        echo "+++ Clean ELWIX RootFS firmware ..."
                     42:        rm -rf $MKDIR
                     43:        mkdir $MKDIR
                     44: 
                     45:        echo "+++ Clean RootFS directory ..."
                     46:        rm -rf $ROOTFS
                     47:        mkdir $ROOTFS
                     48: 
                     49:        echo "+++ Clean Release directory ..."
                     50:        rm -rf $REL/$ROOTFS_IMG ${NEWKERN}*
                     51: }
                     52: 
                     53: prepare_elwix()
                     54: {
                     55:        echo "+++ Prepair ELWIX RootFS firmware ..."
                     56:        cd $MKDIR
                     57:        cat >$MKH <<_EOF
                     58: # Auto-generated Makefile include for crungegen
                     59: # !!! Dont edit by hand !!!
                     60: #
1.2.4.6 ! misho      61: 
        !            62: #CRUNCH_SUPPRESS_LINK_-sh= 1
        !            63: #CRUNCH_SUPPRESS_LINK_-csh= 1
        !            64: #CRUNCH_SUPPRESS_LINK_-tcsh= 1
        !            65: 
1.1       misho      66: LIBS += -L${WORLD}/lib -L${WORLD}/usr/lib
                     67: _EOF
                     68:        cat >$ROOTFS_CONF <<_EOF
1.2.4.6 ! misho      69: srcdirs ${BSDSRC}/tools/tools ${BSDSRC}/tools/tools/ath
        !            70: srcdirs ${BSDSRC}/release/picobsd/tinyware
1.1       misho      71: srcdirs ${BSDSRC}/bin ${BSDSRC}/sbin ${BSDSRC}/libexec ${BSDSRC}/cddl/sbin ${BSDSRC}/sbin/ggate
1.2.4.4   misho      72: srcdirs ${BSDSRC}/usr.bin ${BSDSRC}/usr.sbin ${BSDSRC}/usr.sbin/wpa
1.2.4.6 ! misho      73: srcdirs ${BSDSRC}/secure/usr.bin ${BSDSRC}/secure/usr.sbin ${BSDSRC}/secure/libexec
1.2.4.4   misho      74: 
1.2.4.6 ! misho      75: buildopts -DNO_PAM -DNO_KERBEROS WITHOUT_PAM_SUPPORT=yes WITHOUT_KERBEROS_SUPPORT=yes WITHOUT_KERBEROS=yes
        !            76: buildopts TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} MAKEOBJDIRPREFIX=${BSDOBJ}/elwix
1.1       misho      77: _EOF
                     78:        cat $CFGDIR/$ROOTFS_CONF >>$ROOTFS_CONF
                     79: 
1.2.4.6 ! misho      80:        . ${CENV}
        !            81:        install -d ${BSDOBJ}/elwix
        !            82:        crunchgen -f -o -p ${BSDOBJ}/elwix -h $MKDIR/$MKH -m $MKF -c elwix.c -e elwix $ROOTFS_CONF
1.1       misho      83:        cd -
                     84: }
                     85: 
                     86: build_elwix()
                     87: {
                     88:        echo "+++ Build ELWIX RootFS firmware ..."
                     89:        cd $MKDIR
1.2.4.6 ! misho      90:        . ${CENV}
        !            91:        MAKEOBJDIRPREFIX=${BSDOBJ}/elwix
1.1       misho      92:        make -f $MKF clean
                     93:        make -f $MKF
1.2.4.6 ! misho      94:        if [ $? -ne 0 ]; then
        !            95:                exit 1
        !            96:        fi
1.1       misho      97:        cd -
                     98: }
                     99: 
                    100: build_rootdir()
                    101: {
                    102:        echo "+++ Build RootFS directory ..."
                    103:        cd $ROOTFS
                    104: 
                    105:        install -d bin;
                    106:        install -d dev;
                    107:        install -d elwix;
                    108:        install -d elwix/etc;
1.2.4.6 ! misho     109:        install -d libexec;
1.1       misho     110:        install -d mnt;
                    111:        install -d -m 0555 proc;
                    112:        install -d sbin;
                    113:        install -d system;
                    114:        install -d -m 1777 tmp;
                    115:        install -d usr;
1.2.4.5   misho     116:        install -d usr/bin;
                    117:        install -d usr/lib;
                    118:        install -d usr/libexec;
                    119:        install -d usr/sbin;
1.1       misho     120:        install -d var;
                    121: 
                    122:        ln -fs /usr/lib lib;
                    123: 
                    124:        ln -fs /elwix/etc etc;
                    125:        ln -fs /elwix/exports exports;
                    126:        ln -fs /elwix/home home;
                    127:        ln -fs /elwix/root root;
                    128:        ln -fs /elwix/tftpboot tftpboot;
                    129: 
                    130:        cd -
                    131: }
                    132: 
                    133: install_rootfs()
                    134: {
                    135:        BIN="${ROOTFS}/bin"
                    136:        SBIN="${ROOTFS}/sbin"
1.2.4.5   misho     137:        UBIN="${ROOTFS}/usr/bin"
                    138:        LIBEXEC="${ROOTFS}/usr/libexec"
1.1       misho     139:        ETC="${ROOTFS}/elwix/etc"
                    140: 
1.2.4.6 ! misho     141:        PRG="/sbin/elwix"
        !           142:        LNPRG="${SBIN}/elwix"
        !           143: 
1.1       misho     144:        echo "+++ Install ELWIX into RootFS directory ..."
                    145:        install $MKDIR/elwix $SBIN
                    146: 
                    147:        InstallList ${ELWIX_ROOTFS} ${WORLD} ${ROOTFS}
                    148: 
1.2       misho     149:        InstallDir ${ROOTFS_ETC} $ETC
1.1       misho     150: 
1.2.4.2   misho     151: #      ln -s /usr/sbin/nologin $SBIN
1.1       misho     152: 
1.2.4.6 ! misho     153:        ln $LNPRG $BIN/csh
        !           154:        ln $LNPRG $BIN/tcsh
        !           155: 
        !           156:        ln $LNPRG $BIN/test
        !           157:        ln $LNPRG $BIN/\[
        !           158:        ln $LNPRG $BIN/cat
        !           159:        ln $LNPRG $BIN/chflags
        !           160:        ln $LNPRG $BIN/chio
        !           161:        ln $LNPRG $BIN/chmod
        !           162:        ln $LNPRG $BIN/cp
        !           163:        ln $LNPRG $BIN/date
        !           164:        ln $LNPRG $BIN/dd
        !           165:        ln $LNPRG $BIN/df
        !           166:        ln $LNPRG $BIN/domainname
        !           167:        ln $LNPRG $BIN/echo
        !           168:        ln $LNPRG $BIN/expr
        !           169:        ln $LNPRG $BIN/getfacl
        !           170:        ln $LNPRG $BIN/hostname
        !           171:        ln $LNPRG $BIN/kenv
        !           172:        ln $LNPRG $BIN/kill
        !           173:        ln $LNPRG $BIN/ln
        !           174:        ln $LNPRG $BIN/link
        !           175:        ln $LNPRG $BIN/ls
        !           176:        ln $LNPRG $BIN/mkdir
        !           177:        ln $LNPRG $BIN/mv
        !           178:        ln $LNPRG $BIN/pax
        !           179:        ln $LNPRG $BIN/pkill
        !           180:        ln $LNPRG $BIN/pgrep
        !           181:        ln $LNPRG $BIN/sh
        !           182:        ln $LNPRG $BIN/-sh
        !           183:        ln $LNPRG $BIN/ps
        !           184:        ln $LNPRG $BIN/pwait
        !           185:        ln $LNPRG $BIN/pwd
        !           186:        ln $LNPRG $BIN/realpath
        !           187:        ln $LNPRG $BIN/rm
        !           188:        ln $LNPRG $BIN/unlink
        !           189:        ln $LNPRG $BIN/rmdir
        !           190:        ln $LNPRG $BIN/setfacl
        !           191:        ln $LNPRG $BIN/sleep
        !           192:        ln $LNPRG $BIN/stty
        !           193:        ln $LNPRG $BIN/sync
        !           194:        ln $LNPRG $BIN/uuidgen
        !           195: 
        !           196:        ln $LNPRG $BIN/true
        !           197:        ln $LNPRG $BIN/false
        !           198:        ln $LNPRG $BIN/basename
        !           199:        ln $LNPRG $BIN/tail
        !           200:        ln $LNPRG $BIN/nc
        !           201:        ln $LNPRG $BIN/w
        !           202:        ln $LNPRG $BIN/head
        !           203:        ln $LNPRG $BIN/uname
        !           204:        ln $LNPRG $BIN/tset
        !           205:        ln $LNPRG $BIN/vmstat
        !           206:        ln $LNPRG $BIN/systat
        !           207:        ln $LNPRG $BIN/tput
        !           208:        ln $LNPRG $BIN/grep
        !           209:        ln $LNPRG $BIN/awk
        !           210:        ln $LNPRG $BIN/less
        !           211:        ln $LNPRG $BIN/gzip
        !           212:        ln $LNPRG $BIN/cap_mkdb
        !           213:        ln $LNPRG $BIN/sed
        !           214:        ln $LNPRG $BIN/vi
        !           215:        ln $LNPRG $BIN/du
        !           216:        ln $LNPRG $BIN/getopt
        !           217:        ln $LNPRG $BIN/logger
        !           218:        ln $LNPRG $BIN/nice
        !           219:        ln $LNPRG $BIN/nohup
        !           220:        ln $LNPRG $BIN/seq
        !           221:        ln $LNPRG $BIN/sockstat
        !           222:        ln $LNPRG $BIN/stat
        !           223:        ln $LNPRG $BIN/tee
        !           224:        ln $LNPRG $BIN/tftp
        !           225:        ln $LNPRG $BIN/touch
        !           226:        ln $LNPRG $BIN/wc
        !           227:        ln $LNPRG $BIN/xargs
        !           228:        ln $LNPRG $BIN/printenv
        !           229:        ln $LNPRG $BIN/egrep
        !           230:        ln $LNPRG $BIN/fgrep
        !           231:        ln $LNPRG $BIN/tar
        !           232:        ln $LNPRG $BIN/cpio
        !           233:        ln $LNPRG $BIN/nawk
        !           234:        ln $LNPRG $BIN/gunzip
        !           235:        ln $LNPRG $BIN/gzcat
        !           236:        ln $LNPRG $BIN/zcat
        !           237:        ln $LNPRG $BIN/more
        !           238:        ln $LNPRG $BIN/reset
        !           239:        ln $LNPRG $BIN/readlink
        !           240:        ln $LNPRG $BIN/uptime
        !           241:        ln $LNPRG $BIN/bzip2
        !           242:        ln $LNPRG $BIN/bunzip2
        !           243:        ln $LNPRG $BIN/bzcat
        !           244: 
        !           245:        ln $LNPRG $SBIN/adjkerntz
        !           246:        ln $LNPRG $SBIN/atacontrol
        !           247:        ln $LNPRG $SBIN/badsect
        !           248:        ln $LNPRG $SBIN/bsdlabel
        !           249:        ln $LNPRG $SBIN/disklabel
        !           250:        ln $LNPRG $SBIN/camcontrol
        !           251:        ln $LNPRG $SBIN/ccdconfig
        !           252:        ln $LNPRG $SBIN/comcontrol
        !           253:        ln $LNPRG $SBIN/conscontrol
        !           254:        ln $LNPRG $SBIN/devfs
        !           255:        ln $LNPRG $SBIN/dhclient
        !           256:        ln $LNPRG $SBIN/dmesg
        !           257:        ln $LNPRG $SBIN/dump
        !           258:        ln $LNPRG $SBIN/rdump
        !           259:        ln $LNPRG $SBIN/dumpfs
        !           260:        ln $LNPRG $SBIN/dumpon
        !           261:        ln $LNPRG $SBIN/fdisk
        !           262:        ln $LNPRG $SBIN/ffsinfo
        !           263:        ln $LNPRG $SBIN/fsck
        !           264:        ln $LNPRG $SBIN/fsck_ffs
        !           265:        ln $LNPRG $SBIN/fsck_ufs
        !           266:        ln $LNPRG $SBIN/fsck_4.2bsd
        !           267:        ln $LNPRG $SBIN/fsck_msdosfs
        !           268:        ln $LNPRG $SBIN/gbde
        !           269:        ln $LNPRG $SBIN/ggatec
        !           270:        ln $LNPRG $SBIN/ggated
        !           271:        ln $LNPRG $SBIN/ggatel
        !           272:        ln $LNPRG $SBIN/-geom
        !           273:        ln $LNPRG $SBIN/glabel
        !           274:        ln $LNPRG $SBIN/gpart
        !           275:        ln $LNPRG $SBIN/growfs
        !           276:        ln $LNPRG $SBIN/hastctl
        !           277:        ln $LNPRG $SBIN/hastd
        !           278:        ln $LNPRG $SBIN/ifconfig
        !           279:        ln $LNPRG $SBIN/init
        !           280:        ln $LNPRG $SBIN/ipfw
        !           281:        ln $LNPRG $SBIN/iscontrol
        !           282:        ln $LNPRG $SBIN/kldconfig
        !           283:        ln $LNPRG $SBIN/kldload
        !           284:        ln $LNPRG $SBIN/kldstat
        !           285:        ln $LNPRG $SBIN/kldunload
        !           286:        ln $LNPRG $SBIN/ldconfig
        !           287:        ln $LNPRG $SBIN/md5
        !           288:        ln $LNPRG $SBIN/sha1
        !           289:        ln $LNPRG $SBIN/sha256
        !           290:        ln $LNPRG $SBIN/rmd160
        !           291:        ln $LNPRG $SBIN/mdconfig
        !           292:        ln $LNPRG $SBIN/mdmfs
        !           293:        ln $LNPRG $SBIN/mount_mfs
        !           294:        ln $LNPRG $SBIN/mknod
        !           295:        ln $LNPRG $SBIN/mksnap_ffs
        !           296:        ln $LNPRG $SBIN/mount
        !           297:        ln $LNPRG $SBIN/mount_cd9660
        !           298:        ln $LNPRG $SBIN/mount_msdosfs
        !           299:        ln $LNPRG $SBIN/mount_nfs
        !           300:        ln $LNPRG $SBIN/mount_ntfs
        !           301:        ln $LNPRG $SBIN/mount_nullfs
        !           302:        ln $LNPRG $SBIN/mount_udf
        !           303:        ln $LNPRG $SBIN/mount_unionfs
        !           304:        ln $LNPRG $SBIN/natd
        !           305:        ln $LNPRG $SBIN/newfs
        !           306:        ln $LNPRG $SBIN/newfs_msdos
        !           307:        ln $LNPRG $SBIN/nfsiod
        !           308:        ln $LNPRG $SBIN/nos-tun
        !           309:        ln $LNPRG $SBIN/pfctl
        !           310:        ln $LNPRG $SBIN/pflogd
        !           311:        ln $LNPRG $SBIN/quotacheck
        !           312:        ln $LNPRG $SBIN/reboot
        !           313:        ln $LNPRG $SBIN/halt
        !           314:        ln $LNPRG $SBIN/fastboot
        !           315:        ln $LNPRG $SBIN/fasthalt
        !           316:        ln $LNPRG $SBIN/recoverdisk
        !           317:        ln $LNPRG $SBIN/restore
        !           318:        ln $LNPRG $SBIN/rrestore
        !           319:        ln $LNPRG $SBIN/route
        !           320:        ln $LNPRG $SBIN/rtsol
        !           321:        ln $LNPRG $SBIN/shutdown
        !           322:        ln $LNPRG $SBIN/savecore
        !           323:        ln $LNPRG $SBIN/setkey
        !           324:        ln $LNPRG $SBIN/spppcontrol
        !           325:        ln $LNPRG $SBIN/swapon
        !           326:        ln $LNPRG $SBIN/swapoff
        !           327:        ln $LNPRG $SBIN/swapctl
        !           328:        ln $LNPRG $SBIN/sysctl
        !           329:        ln $LNPRG $SBIN/tunefs
        !           330:        ln $LNPRG $SBIN/umount
        !           331:        ln $LNPRG $SBIN/zfs
        !           332:        ln $LNPRG $SBIN/zpool
        !           333: 
        !           334:        ln $LNPRG $SBIN/ping
        !           335:        ln $LNPRG $SBIN/ping6
        !           336:        ln $LNPRG $SBIN/traceroute
        !           337:        ln $LNPRG $SBIN/traceroute6
        !           338: 
        !           339:        ln $LNPRG $SBIN/chown
        !           340:        ln $LNPRG $SBIN/pwd_mkdb
        !           341:        ln $LNPRG $SBIN/arp
        !           342:        ln $LNPRG $SBIN/gpioctl
        !           343:        ln $LNPRG $SBIN/hostapd
        !           344:        ln $LNPRG $SBIN/hostapd_cli
        !           345:        ln $LNPRG $SBIN/wpa_supplicant
        !           346:        ln $LNPRG $SBIN/wpa_cli
        !           347:        ln $LNPRG $SBIN/wpa_passphrase
        !           348:        ln $LNPRG $SBIN/wake
        !           349:        ln $LNPRG $SBIN/watchdog
        !           350:        ln $LNPRG $SBIN/watchdogd
        !           351:        ln $LNPRG $SBIN/inetd
        !           352:        ln $LNPRG $SBIN/wlandebug
        !           353:        ln $LNPRG $SBIN/chroot
        !           354:        ln $LNPRG $SBIN/i2c
        !           355:        ln $LNPRG $SBIN/iostat
        !           356:        ln $LNPRG $SBIN/jail
        !           357:        ln $LNPRG $SBIN/jexec
        !           358:        ln $LNPRG $SBIN/jls
        !           359:        ln $LNPRG $SBIN/ndp
        !           360:        ln $LNPRG $SBIN/newsyslog
        !           361:        ln $LNPRG $SBIN/nologin
        !           362:        ln $LNPRG $SBIN/pstat
        !           363:        ln $LNPRG $SBIN/rtadvctl
        !           364:        ln $LNPRG $SBIN/rtadvd
        !           365:        ln $LNPRG $SBIN/rtsold
        !           366:        ln $LNPRG $SBIN/syslogd
        !           367:        ln $LNPRG $SBIN/setfib
        !           368:        ln $LNPRG $SBIN/swapinfo
        !           369:        ln $LNPRG $SBIN/chgrp
        !           370: 
        !           371:        ln $LNPRG $UBIN/login
        !           372:        ln $LNPRG $UBIN/passwd
        !           373:        ln $LNPRG $UBIN/vimage
1.2.4.2   misho     374: 
1.2.4.6 ! misho     375:        ln $LNPRG $LIBEXEC/getty
        !           376:        ln $LNPRG $LIBEXEC/tftpd
1.2.4.3   misho     377: 
1.1       misho     378:        chown -hR root:wheel $ROOTFS
1.2.4.1   misho     379: 
                    380:        echo "+++ ELWIX clean CVS tags ..."
                    381:        CleanCVS $ETC
                    382:        CleanCVS $ETC/etc
1.1       misho     383: }
                    384: 
                    385: build_image()
                    386: {
                    387:        echo "+++ Build ELWIX RootFS image ..."
                    388:        makefs -s ${ROOTFS_SIZE} -o minfree=0 $REL/$ROOTFS_IMG $ROOTFS
                    389: }
                    390: 
                    391: install_image()
                    392: {
                    393:        echo "+++ Install ELWIX RootFS Image into kernel ..."
                    394:        START=`strings -td $KERNEL | grep "MFS Filesystem" | cut -d ' ' -f 1 | head -1`
                    395:        STOP=`strings -td $KERNEL | grep "MFS Filesystem" | cut -d ' ' -f 1 | tail -1`
                    396:        STOP=$(($STOP + 1))
                    397: 
                    398:        head -c $START $KERNEL >$NEWKERN
                    399:        cat $REL/$ROOTFS_IMG >>$NEWKERN
                    400:        tail -c +$STOP $KERNEL >>$NEWKERN
                    401: 
                    402:        cd $REL
                    403:        gzip -9 kernel
                    404:        cd -
                    405: }
                    406: 
                    407: ### main()
                    408: if SnitVer ${WORLD}/elwix.ver; then
                    409:        clean_elwix
                    410:        prepare_elwix
                    411:        build_elwix
                    412: 
                    413:        build_rootdir
                    414:        install_rootfs
                    415: 
1.2.4.4   misho     416:        build_image && install_image
1.1       misho     417: else
                    418:        echo "Skipped ELWIX RootFS build ..."
                    419: fi
                    420: 
                    421: echo "+++ Complete build ELWIX RootFS"

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