Date: Sat, 13 Dec 2008 04:52:57 +0000 (UTC) From: Sam Leffler <sam@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r186022 - projects/cambria/tools/tools/nanobsd/gateworks Message-ID: <200812130452.mBD4qv9h019048@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: sam Date: Sat Dec 13 04:52:57 2008 New Revision: 186022 URL: http://svn.freebsd.org/changeset/base/186022 Log: move common bits to a shared file Added: projects/cambria/tools/tools/nanobsd/gateworks/common Modified: projects/cambria/tools/tools/nanobsd/gateworks/avila projects/cambria/tools/tools/nanobsd/gateworks/cambria Modified: projects/cambria/tools/tools/nanobsd/gateworks/avila ============================================================================== --- projects/cambria/tools/tools/nanobsd/gateworks/avila Sat Dec 13 04:51:58 2008 (r186021) +++ projects/cambria/tools/tools/nanobsd/gateworks/avila Sat Dec 13 04:52:57 2008 (r186022) @@ -1,351 +1,5 @@ -NANO_NAME="gateworks" +NANO_NAME="avila" NANO_SRC="/usr/sam/base/projects/cambria" NANO_KERNEL="G2348" -NANO_CFGDIR=${NANO_SRC}/${NANO_TOOLS}/${NANO_NAME}/cfg -test -d ${NANO_CFGDIR} || NANO_CFGDIR=/var/empty -NANO_PMAKE="make" # NB: disable -j 3 - -NANO_ARCH=arm -TARGET_CPUTYPE=xscale; export TARGET_CPUTYPE # XXX -TARGET_BIG_ENDIAN=true; export TARGET_BIG_ENDIAN # XXX - -NANO_IMAGES=1 -FlashDevice Sandisk 64 - -NANO_CUSTOMIZE="cust_allow_ssh_root" - -clean_usr_local() -{ - LOCAL_DIR=${NANO_WORLDDIR}/usr/local - pprint 2 "Clean and create world directory (${LOCAL_DIR})" - if rm -rf ${LOCAL_DIR}/ > /dev/null 2>&1 ; then - true - else - chflags -R noschg ${LOCAL_DIR}/ - rm -rf ${LOCAL_DIR}/ - fi - for f in bin etc lib libdata libexec sbin share; do - mkdir -p ${LOCAL_DIR}/$f - done -} -NANO_CUSTOMIZE="$NANO_CUSTOMIZE clean_usr_local" - -cust_install_machine_files() -{ - echo "cd ${NANO_TOOLS}/${NANO_NAME}/Files" - cd ${NANO_TOOLS}/${NANO_NAME}/Files - find . -print | grep -Ev '/(CVS|\.svn)' | cpio -dumpv ${NANO_WORLDDIR} -} -NANO_CUSTOMIZE="$NANO_CUSTOMIZE cust_install_files cust_install_machine_files" - -buildenv() -{ - cd ${NANO_SRC} - env TARGET_ARCH=${NANO_ARCH} __MAKE_CONF=${NANO_MAKE_CONF} \ - DESTDIR=${NANO_WORLDDIR} make buildenv -} - -net80211_tools() -{ - for f in wlanstats wlanwds wlanwatch; do - echo "(cd tools/tools/net80211/$f; make $1)"; - done | buildenv -} -net80211_clean_tools() -{ - net80211_tools "clean" -} -net80211_build_tools() -{ - net80211_tools "" -} -net80211_install_tools() -{ - net80211_tools "install" -} -NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_clean_tools" -NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_build_tools" -NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_install_tools" - -ath_clean_tools() -{ - echo "cd tools/tools/ath; make clean" | buildenv -} -ath_build_tools() -{ - echo "cd tools/tools/ath; make" | buildenv -} -ath_install_tools() -{ - echo "cd tools/tools/ath; make install" | buildenv -} -NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_clean_tools" -NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_build_tools" -NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_install_tools" - -NANO_MAKEFS="makefs -B big \ - -o bsize=4096,fsize=512,density=8192,optimization=space" -export NANO_MAKEFS - -# NB: leave c++ enabled so devd can be built -CONF_BUILD=" -WITHOUT_ACPI=true -WITHOUT_ATM=true -WITHOUT_AUDIT=true -WITHOUT_BIND_DNSSEC=true -WITHOUT_BIND_ETC=true -WITHOUT_BIND_LIBS_LWRES=true -WITHOUT_BLUETOOTH=true -WITHOUT_CALENDAR=true -WITHOUT_CDDL=true -WITHOUT_CVS=true -WITHOUT_DICT=true -WITHOUT_EXAMPLES=true -WITHOUT_FORTRAN=true -WITHOUT_GAMES=true -WITHOUT_GCOV=true -WITHOUT_GPIB=true -WITHOUT_HTML=true -WITHOUT_I4B=true -WITHOUT_INET6=true -WITHOUT_INFO=true -WITHOUT_IPFILTER=true -WITHOUT_IPX=true -WITHOUT_KERBEROS=true -WITHOUT_LIBKSE=true -WITHOUT_LOCALES=true -WITHOUT_LPR=true -WITHOUT_MAN=true -WITHOUT_NETCAT=true -WITHOUT_NIS=true -WITHOUT_NLS=true -WITHOUT_NS_CACHING=true -WITHOUT_OBJC=true -WITHOUT_PROFILE=true -WITHOUT_RCMDS=true -WITHOUT_RCS=true -WITHOUT_RESCUE=true -WITHOUT_SENDMAIL=true -WITHOUT_SHAREDOCS=true -WITHOUT_SSP=true -WITHOUT_SYSCONS=true -WITHOUT_TCSH=true -" -CONF_INSTALL="$CONF_BUILD -WITHOUT_TOOLCHAIN=true -WITHOUT_INSTALLLIB=true -" - -# NB: override to suppress install of kernel.symbols -install_kernel() -{ - pprint 2 "install kernel" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.ik" - - cd ${NANO_SRC} - env TARGET_ARCH=${NANO_ARCH} ${NANO_PMAKE} installkernel \ - INSTALL_NODEBUG=true \ - DESTDIR=${NANO_WORLDDIR} \ - __MAKE_CONF=${NANO_MAKE_CONF} KERNCONF=`basename ${NANO_KERNEL}` \ - > ${MAKEOBJDIRPREFIX}/_.ik 2>&1 -} - -# NB: override to force / on s1 instead of s1a -setup_nanobsd_etc() -{ - pprint 2 "configure nanobsd /etc" - - ( - cd ${NANO_WORLDDIR} - - # create diskless marker file - touch etc/diskless - - # Make root filesystem R/O by default - echo "root_rw_mount=NO" >> etc/defaults/rc.conf - - # save config file for scripts - echo "NANO_DRIVE=${NANO_DRIVE}" > etc/nanobsd.conf - - echo "/dev/${NANO_DRIVE}s1 / ufs ro 1 1" > etc/fstab - echo "/dev/${NANO_DRIVE}s3 /cfg ufs rw,noauto 2 2" >> etc/fstab - mkdir -p cfg - ) -} - -create_arm_diskimage() -{ - pprint 2 "build diskimage" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.di" - - ( - echo "NANO_MEDIASIZE: $NANO_MEDIASIZE" - echo "NANO_IMAGES: $NANO_IMAGES" - echo "NANO_SECTS: $NANO_SECTS" - echo "NANO_HEADS: $NANO_HEADS" - echo "NANO_CODESIZE: $NANO_CODESIZE" - echo "NANO_CONFSIZE: $NANO_CONFSIZE" - echo "NANO_DATASIZE: $NANO_DATASIZE" - - echo $NANO_MEDIASIZE $NANO_IMAGES \ - $NANO_SECTS $NANO_HEADS \ - $NANO_CODESIZE $NANO_CONFSIZE $NANO_DATASIZE | - awk ' - { - printf "# %s\n", $0 - - # size of cylinder in sectors - cs = $3 * $4 - - # number of full cylinders on media - cyl = int ($1 / cs) - - # output fdisk geometry spec, truncate cyls to 1023 - if (cyl <= 1023) - print "g c" cyl " h" $4 " s" $3 - else - print "g c" 1023 " h" $4 " s" $3 - - if ($7 > 0) { - # size of data partition in full cylinders - dsl = int (($7 + cs - 1) / cs) - } else { - dsl = 0; - } - - # size of config partition in full cylinders - csl = int (($6 + cs - 1) / cs) - - if ($5 == 0) { - # size of image partition(s) in full cylinders - isl = int ((cyl - dsl - csl) / $2) - } else { - isl = int (($5 + cs - 1) / cs) - } - - # First image partition start at second track - print "p 1 165 " $3, isl * cs - $3 - c = isl * cs; - - # Second image partition (if any) also starts offset one - # track to keep them identical. - if ($2 > 1) { - print "p 2 165 " $3 + c, isl * cs - $3 - c += isl * cs; - } - - # Config partition starts at cylinder boundary. - print "p 3 165 " c, csl * cs - c += csl * cs - - # Data partition (if any) starts at cylinder boundary. - if ($7 > 0) { - print "p 4 165 " c, dsl * cs - } else if ($7 < 0 && $1 > c) { - print "p 4 165 " c, $1 - c - } else if ($1 < c) { - print "Disk space overcommitted by", \ - c - $1, "sectors" > "/dev/stderr" - exit 2 - } - - # Force slice 1 to be marked active. This is necessary - # for booting the image from a USB device to work. - print "a 1" - } - ' > ${MAKEOBJDIRPREFIX}/_.fdisk - - IMG=${NANO_DISKIMGDIR}/${NANO_IMGNAME} - BS=${NANO_SECTS}b - - if [ "${NANO_MD_BACKING}" = "swap" ] ; then - MD=`mdconfig -a -t swap -s ${NANO_MEDIASIZE} -x ${NANO_SECTS} \ - -y ${NANO_HEADS}` - else - echo ""; echo "Creating md backing file ${IMG} ..." - _c=`expr ${NANO_MEDIASIZE} / ${NANO_SECTS}` - pprint 2 "dd if=/dev/zero of=${IMG} bs=${BS} count=${_c}" - dd if=/dev/zero of=${IMG} bs=${BS} count=${_c} - pprint 2 "mdconfig -a -t vnode -f ${IMG} -x ${NANO_SECTS} -y ${NANO_HEADS}" - MD=`mdconfig -a -t vnode -f ${IMG} -x ${NANO_SECTS} \ - -y ${NANO_HEADS}` - fi - - trap "mdconfig -d -u $MD" 1 2 15 EXIT - - echo ""; echo "Write partition table ..." - FDISK=${MAKEOBJDIRPREFIX}/_.fdisk - pprint 2 "fdisk -i -f ${FDISK} ${MD}" - fdisk -i -f ${FDISK} ${MD} - pprint 2 "fdisk ${MD}" - fdisk ${MD} - - # Create first image - IMG1=${NANO_DISKIMGDIR}/_.disk.image1 - echo ""; echo "Create first image ${IMG1} ..." - SIZE=`awk '/^p 1/ { print $5 "b" }' ${FDISK}` - pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${IMG1} ${NANO_WORLDDIR}" - ${NANO_MAKEFS} -s ${SIZE} ${IMG1} ${NANO_WORLDDIR} - pprint 2 "dd if=${IMG1} of=/dev/${MD}s1 bs=${BS}" - dd if=${IMG1} of=/dev/${MD}s1 bs=${BS} - - if [ $NANO_IMAGES -gt 1 -a $NANO_INIT_IMG2 -gt 0 ] ; then - IMG2=${NANO_DISKIMGDIR}/_.disk.image2 - echo ""; echo "Create second image ${IMG2}..." - for f in ${NANO_WORLDDIR}/etc/fstab ${NANO_WORLDDIR}/conf/base/etc/fstab - do - sed -i "" "s/${NANO_DRIVE}s1/${NANO_DRIVE}s2/g" $f - done - - SIZE=`awk '/^p 2/ { print $5 "b" }' ${FDISK}` - pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${IMG2} ${NANO_WORLDDIR}" - ${NANO_MAKEFS} -s ${SIZE} ${IMG2} ${NANO_WORLDDIR} - pprint 2 "dd if=${IMG2} of=/dev/${MD}s2 bs=${BS}" - dd if=${IMG2} of=/dev/${MD}s2 bs=${BS} - fi - - # Create Config slice - CFG=${NANO_DISKIMGDIR}/_.disk.cfg - echo ""; echo "Creating config partition ${CFG}..." - SIZE=`awk '/^p 3/ { print $5 "b" }' ${FDISK}` - # XXX: fill from where ? - pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${CFG} ${NANO_CFGDIR}" - ${NANO_MAKEFS} -s ${SIZE} ${CFG} ${NANO_CFGDIR} - pprint 2 "dd if=${CFG} of=/dev/${MD}s3 bs=${BS}" - dd if=${CFG} of=/dev/${MD}s3 bs=${BS} - pprint 2 "rm ${CFG}" - rm ${CFG}; CFG= # NB: disable printing below - - # Create Data slice, if any. - if [ $NANO_DATASIZE -gt 0 ] ; then - DATA=${NANO_DISKIMGDIR}/_.disk.data - echo ""; echo "Creating data partition ${DATA}..." - SIZE=`awk '/^p 4/ { print $5 "b" }' ${FDISK}` - # XXX: fill from where ? - pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${DATA} /var/empty" - ${NANO_MAKEFS} -s ${SIZE} ${DATA} /var/empty - pprint 2 "dd if=${DATA} of=/dev/${MD}s4 bs=${BS}" - dd if=${DATA} of=/dev/${MD}s4 bs=${BS} - pprint 2 "rm ${DATA}" - rm ${DATA}; DATA= # NB: disable printing below - fi - - if [ "${NANO_MD_BACKING}" = "swap" ] ; then - echo "Writing out _.disk.full..." - dd if=/dev/${MD} of=${IMG} bs=${BS} - fi - - echo "" - echo "Completed images in:" - echo "" - echo "Full disk: ${IMG}" - echo "Primary partition: ${IMG1}" - test "${IMG2}" && echo "2ndary partition: ${IMG2}" - test "${CFG}" && echo "/cfg partition: ${CFG}" - test "${DATA}" && echo "/data partition: ${DATA}" - echo "" - echo "Use dd if=<file> of=/dev/<somewhere> bs=${BS} to transfer an" - echo "image to bootable media /dev/<somewhere>." - ) > ${MAKEOBJDIRPREFIX}/_.di 2>&1 -} +. common Modified: projects/cambria/tools/tools/nanobsd/gateworks/cambria ============================================================================== --- projects/cambria/tools/tools/nanobsd/gateworks/cambria Sat Dec 13 04:51:58 2008 (r186021) +++ projects/cambria/tools/tools/nanobsd/gateworks/cambria Sat Dec 13 04:52:57 2008 (r186022) @@ -2,350 +2,4 @@ NANO_NAME="cambria" NANO_SRC="/usr/sam/base/projects/cambria" NANO_KERNEL="G2358" -NANO_CFGDIR=${NANO_SRC}/${NANO_TOOLS}/gateworks/cfg -test -d ${NANO_CFGDIR} || NANO_CFGDIR=/var/empty -NANO_PMAKE="make" # NB: disable -j 3 - -NANO_ARCH=arm -TARGET_CPUTYPE=xscale; export TARGET_CPUTYPE # XXX -TARGET_BIG_ENDIAN=true; export TARGET_BIG_ENDIAN # XXX - -NANO_IMAGES=1 -FlashDevice Sandisk 64 - -NANO_CUSTOMIZE="cust_allow_ssh_root" - -clean_usr_local() -{ - LOCAL_DIR=${NANO_WORLDDIR}/usr/local - pprint 2 "Clean and create world directory (${LOCAL_DIR})" - if rm -rf ${LOCAL_DIR}/ > /dev/null 2>&1 ; then - true - else - chflags -R noschg ${LOCAL_DIR}/ - rm -rf ${LOCAL_DIR}/ - fi - for f in bin etc lib libdata libexec sbin share; do - mkdir -p ${LOCAL_DIR}/$f - done -} -NANO_CUSTOMIZE="$NANO_CUSTOMIZE clean_usr_local" - -cust_install_machine_files() -{ - echo "cd ${NANO_TOOLS}/gateworks/Files" - cd ${NANO_TOOLS}/gateworks/Files - find . -print | grep -Ev '/(CVS|\.svn)' | cpio -dumpv ${NANO_WORLDDIR} -} -NANO_CUSTOMIZE="$NANO_CUSTOMIZE cust_install_files cust_install_machine_files" - -buildenv() -{ - cd ${NANO_SRC} - env TARGET_ARCH=${NANO_ARCH} __MAKE_CONF=${NANO_MAKE_CONF} \ - DESTDIR=${NANO_WORLDDIR} make buildenv -} - -net80211_tools() -{ - for f in wlanstats wlanwds wlanwatch; do - echo "(cd tools/tools/net80211/$f; make $1)"; - done | buildenv -} -net80211_clean_tools() -{ - net80211_tools "clean" -} -net80211_build_tools() -{ - net80211_tools "" -} -net80211_install_tools() -{ - net80211_tools "install" -} -NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_clean_tools" -NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_build_tools" -NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_install_tools" - -ath_clean_tools() -{ - echo "cd tools/tools/ath; make clean" | buildenv -} -ath_build_tools() -{ - echo "cd tools/tools/ath; make" | buildenv -} -ath_install_tools() -{ - echo "cd tools/tools/ath; make install" | buildenv -} -NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_clean_tools" -NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_build_tools" -NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_install_tools" - -NANO_MAKEFS="makefs -B big \ - -o bsize=4096,fsize=512,density=8192,optimization=space" -export NANO_MAKEFS - -# NB: leave c++ enabled so devd can be built -CONF_BUILD=" -WITHOUT_ACPI=true -WITHOUT_ATM=true -WITHOUT_AUDIT=true -WITHOUT_BIND_DNSSEC=true -WITHOUT_BIND_ETC=true -WITHOUT_BIND_LIBS_LWRES=true -WITHOUT_BLUETOOTH=true -WITHOUT_CALENDAR=true -WITHOUT_CDDL=true -WITHOUT_CVS=true -WITHOUT_DICT=true -WITHOUT_EXAMPLES=true -WITHOUT_FORTRAN=true -WITHOUT_GAMES=true -WITHOUT_GCOV=true -WITHOUT_GPIB=true -WITHOUT_HTML=true -WITHOUT_I4B=true -WITHOUT_INET6=true -WITHOUT_INFO=true -WITHOUT_IPFILTER=true -WITHOUT_IPX=true -WITHOUT_KERBEROS=true -WITHOUT_LIBKSE=true -WITHOUT_LOCALES=true -WITHOUT_LPR=true -WITHOUT_MAN=true -WITHOUT_NETCAT=true -WITHOUT_NIS=true -WITHOUT_NLS=true -WITHOUT_NS_CACHING=true -WITHOUT_OBJC=true -WITHOUT_PROFILE=true -WITHOUT_RCMDS=true -WITHOUT_RCS=true -WITHOUT_RESCUE=true -WITHOUT_SENDMAIL=true -WITHOUT_SHAREDOCS=true -WITHOUT_SSP=true -WITHOUT_SYSCONS=true -WITHOUT_TCSH=true -" -CONF_INSTALL="$CONF_BUILD -WITHOUT_TOOLCHAIN=true -WITHOUT_INSTALLLIB=true -" - -# NB: override to suppress install of kernel.symbols -install_kernel() -{ - pprint 2 "install kernel" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.ik" - - cd ${NANO_SRC} - env TARGET_ARCH=${NANO_ARCH} ${NANO_PMAKE} installkernel \ - INSTALL_NODEBUG=true \ - DESTDIR=${NANO_WORLDDIR} \ - __MAKE_CONF=${NANO_MAKE_CONF} KERNCONF=`basename ${NANO_KERNEL}` \ - > ${MAKEOBJDIRPREFIX}/_.ik 2>&1 -} - -# NB: override to force / on s1 instead of s1a -setup_nanobsd_etc() -{ - pprint 2 "configure nanobsd /etc" - - ( - cd ${NANO_WORLDDIR} - - # create diskless marker file - touch etc/diskless - - # Make root filesystem R/O by default - echo "root_rw_mount=NO" >> etc/defaults/rc.conf - - # save config file for scripts - echo "NANO_DRIVE=${NANO_DRIVE}" > etc/nanobsd.conf - - echo "/dev/${NANO_DRIVE}s1 / ufs ro 1 1" > etc/fstab - echo "/dev/${NANO_DRIVE}s3 /cfg ufs rw,noauto 2 2" >> etc/fstab - mkdir -p cfg - ) -} - -create_arm_diskimage() -{ - pprint 2 "build diskimage" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.di" - - ( - echo "NANO_MEDIASIZE: $NANO_MEDIASIZE" - echo "NANO_IMAGES: $NANO_IMAGES" - echo "NANO_SECTS: $NANO_SECTS" - echo "NANO_HEADS: $NANO_HEADS" - echo "NANO_CODESIZE: $NANO_CODESIZE" - echo "NANO_CONFSIZE: $NANO_CONFSIZE" - echo "NANO_DATASIZE: $NANO_DATASIZE" - - echo $NANO_MEDIASIZE $NANO_IMAGES \ - $NANO_SECTS $NANO_HEADS \ - $NANO_CODESIZE $NANO_CONFSIZE $NANO_DATASIZE | - awk ' - { - printf "# %s\n", $0 - - # size of cylinder in sectors - cs = $3 * $4 - - # number of full cylinders on media - cyl = int ($1 / cs) - - # output fdisk geometry spec, truncate cyls to 1023 - if (cyl <= 1023) - print "g c" cyl " h" $4 " s" $3 - else - print "g c" 1023 " h" $4 " s" $3 - - if ($7 > 0) { - # size of data partition in full cylinders - dsl = int (($7 + cs - 1) / cs) - } else { - dsl = 0; - } - - # size of config partition in full cylinders - csl = int (($6 + cs - 1) / cs) - - if ($5 == 0) { - # size of image partition(s) in full cylinders - isl = int ((cyl - dsl - csl) / $2) - } else { - isl = int (($5 + cs - 1) / cs) - } - - # First image partition start at second track - print "p 1 165 " $3, isl * cs - $3 - c = isl * cs; - - # Second image partition (if any) also starts offset one - # track to keep them identical. - if ($2 > 1) { - print "p 2 165 " $3 + c, isl * cs - $3 - c += isl * cs; - } - - # Config partition starts at cylinder boundary. - print "p 3 165 " c, csl * cs - c += csl * cs - - # Data partition (if any) starts at cylinder boundary. - if ($7 > 0) { - print "p 4 165 " c, dsl * cs - } else if ($7 < 0 && $1 > c) { - print "p 4 165 " c, $1 - c - } else if ($1 < c) { - print "Disk space overcommitted by", \ - c - $1, "sectors" > "/dev/stderr" - exit 2 - } - - # Force slice 1 to be marked active. This is necessary - # for booting the image from a USB device to work. - print "a 1" - } - ' > ${MAKEOBJDIRPREFIX}/_.fdisk - - IMG=${NANO_DISKIMGDIR}/${NANO_IMGNAME} - BS=${NANO_SECTS}b - - if [ "${NANO_MD_BACKING}" = "swap" ] ; then - MD=`mdconfig -a -t swap -s ${NANO_MEDIASIZE} -x ${NANO_SECTS} \ - -y ${NANO_HEADS}` - else - echo ""; echo "Creating md backing file ${IMG} ..." - _c=`expr ${NANO_MEDIASIZE} / ${NANO_SECTS}` - pprint 2 "dd if=/dev/zero of=${IMG} bs=${BS} count=${_c}" - dd if=/dev/zero of=${IMG} bs=${BS} count=${_c} - pprint 2 "mdconfig -a -t vnode -f ${IMG} -x ${NANO_SECTS} -y ${NANO_HEADS}" - MD=`mdconfig -a -t vnode -f ${IMG} -x ${NANO_SECTS} \ - -y ${NANO_HEADS}` - fi - - trap "mdconfig -d -u $MD" 1 2 15 EXIT - - echo ""; echo "Write partition table ..." - FDISK=${MAKEOBJDIRPREFIX}/_.fdisk - pprint 2 "fdisk -i -f ${FDISK} ${MD}" - fdisk -i -f ${FDISK} ${MD} - pprint 2 "fdisk ${MD}" - fdisk ${MD} - - # Create first image - IMG1=${NANO_DISKIMGDIR}/_.disk.image1 - echo ""; echo "Create first image ${IMG1} ..." - SIZE=`awk '/^p 1/ { print $5 "b" }' ${FDISK}` - pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${IMG1} ${NANO_WORLDDIR}" - ${NANO_MAKEFS} -s ${SIZE} ${IMG1} ${NANO_WORLDDIR} - pprint 2 "dd if=${IMG1} of=/dev/${MD}s1 bs=${BS}" - dd if=${IMG1} of=/dev/${MD}s1 bs=${BS} - - if [ $NANO_IMAGES -gt 1 -a $NANO_INIT_IMG2 -gt 0 ] ; then - IMG2=${NANO_DISKIMGDIR}/_.disk.image2 - echo ""; echo "Create second image ${IMG2}..." - for f in ${NANO_WORLDDIR}/etc/fstab ${NANO_WORLDDIR}/conf/base/etc/fstab - do - sed -i "" "s/${NANO_DRIVE}s1/${NANO_DRIVE}s2/g" $f - done - - SIZE=`awk '/^p 2/ { print $5 "b" }' ${FDISK}` - pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${IMG2} ${NANO_WORLDDIR}" - ${NANO_MAKEFS} -s ${SIZE} ${IMG2} ${NANO_WORLDDIR} - pprint 2 "dd if=${IMG2} of=/dev/${MD}s2 bs=${BS}" - dd if=${IMG2} of=/dev/${MD}s2 bs=${BS} - fi - - # Create Config slice - CFG=${NANO_DISKIMGDIR}/_.disk.cfg - echo ""; echo "Creating config partition ${CFG}..." - SIZE=`awk '/^p 3/ { print $5 "b" }' ${FDISK}` - # XXX: fill from where ? - pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${CFG} ${NANO_CFGDIR}" - ${NANO_MAKEFS} -s ${SIZE} ${CFG} ${NANO_CFGDIR} - pprint 2 "dd if=${CFG} of=/dev/${MD}s3 bs=${BS}" - dd if=${CFG} of=/dev/${MD}s3 bs=${BS} - pprint 2 "rm ${CFG}" - rm ${CFG}; CFG= # NB: disable printing below - - # Create Data slice, if any. - if [ $NANO_DATASIZE -gt 0 ] ; then - DATA=${NANO_DISKIMGDIR}/_.disk.data - echo ""; echo "Creating data partition ${DATA}..." - SIZE=`awk '/^p 4/ { print $5 "b" }' ${FDISK}` - # XXX: fill from where ? - pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${DATA} /var/empty" - ${NANO_MAKEFS} -s ${SIZE} ${DATA} /var/empty - pprint 2 "dd if=${DATA} of=/dev/${MD}s4 bs=${BS}" - dd if=${DATA} of=/dev/${MD}s4 bs=${BS} - pprint 2 "rm ${DATA}" - rm ${DATA}; DATA= # NB: disable printing below - fi - - if [ "${NANO_MD_BACKING}" = "swap" ] ; then - echo "Writing out _.disk.full..." - dd if=/dev/${MD} of=${IMG} bs=${BS} - fi - - echo "" - echo "Completed images in:" - echo "" - echo "Full disk: ${IMG}" - echo "Primary partition: ${IMG1}" - test "${IMG2}" && echo "2ndary partition: ${IMG2}" - test "${CFG}" && echo "/cfg partition: ${CFG}" - test "${DATA}" && echo "/data partition: ${DATA}" - echo "" - echo "Use dd if=<file> of=/dev/<somewhere> bs=${BS} to transfer an" - echo "image to bootable media /dev/<somewhere>." - ) > ${MAKEOBJDIRPREFIX}/_.di 2>&1 -} +. common Added: projects/cambria/tools/tools/nanobsd/gateworks/common ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/cambria/tools/tools/nanobsd/gateworks/common Sat Dec 13 04:52:57 2008 (r186022) @@ -0,0 +1,347 @@ +NANO_CFGDIR=${NANO_SRC}/${NANO_TOOLS}/gateworks/cfg +test -d ${NANO_CFGDIR} || NANO_CFGDIR=/var/empty +NANO_PMAKE="make" # NB: disable -j 3 + +NANO_ARCH=arm +TARGET_CPUTYPE=xscale; export TARGET_CPUTYPE # XXX +TARGET_BIG_ENDIAN=true; export TARGET_BIG_ENDIAN # XXX + +NANO_IMAGES=1 +FlashDevice Sandisk 64 + +NANO_CUSTOMIZE="cust_allow_ssh_root" + +clean_usr_local() +{ + LOCAL_DIR=${NANO_WORLDDIR}/usr/local + pprint 2 "Clean and create world directory (${LOCAL_DIR})" + if rm -rf ${LOCAL_DIR}/ > /dev/null 2>&1 ; then + true + else + chflags -R noschg ${LOCAL_DIR}/ + rm -rf ${LOCAL_DIR}/ + fi + for f in bin etc lib libdata libexec sbin share; do + mkdir -p ${LOCAL_DIR}/$f + done +} +NANO_CUSTOMIZE="$NANO_CUSTOMIZE clean_usr_local" + +cust_install_machine_files() +{ + echo "cd ${NANO_TOOLS}/gateworks/Files" + cd ${NANO_TOOLS}/gateworks/Files + find . -print | grep -Ev '/(CVS|\.svn)' | cpio -dumpv ${NANO_WORLDDIR} +} +NANO_CUSTOMIZE="$NANO_CUSTOMIZE cust_install_files cust_install_machine_files" + +buildenv() +{ + cd ${NANO_SRC} + env TARGET_ARCH=${NANO_ARCH} __MAKE_CONF=${NANO_MAKE_CONF} \ + DESTDIR=${NANO_WORLDDIR} make buildenv +} + +net80211_tools() +{ + for f in wlanstats wlanwds wlanwatch; do + echo "(cd tools/tools/net80211/$f; make $1)"; + done | buildenv +} +net80211_clean_tools() +{ + net80211_tools "clean" +} +net80211_build_tools() +{ + net80211_tools "" +} +net80211_install_tools() +{ + net80211_tools "install" +} +NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_clean_tools" +NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_build_tools" +NANO_CUSTOMIZE="$NANO_CUSTOMIZE net80211_install_tools" + +ath_clean_tools() +{ + echo "cd tools/tools/ath; make clean" | buildenv +} +ath_build_tools() +{ + echo "cd tools/tools/ath; make" | buildenv +} +ath_install_tools() +{ + echo "cd tools/tools/ath; make install" | buildenv +} +NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_clean_tools" +NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_build_tools" +NANO_CUSTOMIZE="$NANO_CUSTOMIZE ath_install_tools" + +NANO_MAKEFS="makefs -B big \ + -o bsize=4096,fsize=512,density=8192,optimization=space" +export NANO_MAKEFS + +# NB: leave c++ enabled so devd can be built +CONF_BUILD=" +WITHOUT_ACPI=true +WITHOUT_ATM=true +WITHOUT_AUDIT=true +WITHOUT_BIND_DNSSEC=true +WITHOUT_BIND_ETC=true +WITHOUT_BIND_LIBS_LWRES=true +WITHOUT_BLUETOOTH=true +WITHOUT_CALENDAR=true +WITHOUT_CDDL=true +WITHOUT_CVS=true +WITHOUT_DICT=true +WITHOUT_EXAMPLES=true +WITHOUT_FORTRAN=true +WITHOUT_GAMES=true +WITHOUT_GCOV=true +WITHOUT_GPIB=true +WITHOUT_HTML=true +WITHOUT_I4B=true +WITHOUT_INET6=true +WITHOUT_INFO=true +WITHOUT_IPFILTER=true +WITHOUT_IPX=true +WITHOUT_KERBEROS=true +WITHOUT_LIBKSE=true +WITHOUT_LOCALES=true +WITHOUT_LPR=true +WITHOUT_MAN=true +WITHOUT_NETCAT=true +WITHOUT_NIS=true +WITHOUT_NLS=true +WITHOUT_NS_CACHING=true +WITHOUT_OBJC=true +WITHOUT_PROFILE=true +WITHOUT_RCMDS=true +WITHOUT_RCS=true +WITHOUT_RESCUE=true +WITHOUT_SENDMAIL=true +WITHOUT_SHAREDOCS=true +WITHOUT_SSP=true +WITHOUT_SYSCONS=true +WITHOUT_TCSH=true +" +CONF_INSTALL="$CONF_BUILD +WITHOUT_TOOLCHAIN=true +WITHOUT_INSTALLLIB=true +" + +# NB: override to suppress install of kernel.symbols +install_kernel() +{ + pprint 2 "install kernel" + pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.ik" + + cd ${NANO_SRC} + env TARGET_ARCH=${NANO_ARCH} ${NANO_PMAKE} installkernel \ + INSTALL_NODEBUG=true \ + DESTDIR=${NANO_WORLDDIR} \ + __MAKE_CONF=${NANO_MAKE_CONF} KERNCONF=`basename ${NANO_KERNEL}` \ + > ${MAKEOBJDIRPREFIX}/_.ik 2>&1 +} + +# NB: override to force / on s1 instead of s1a +setup_nanobsd_etc() +{ + pprint 2 "configure nanobsd /etc" + + ( + cd ${NANO_WORLDDIR} + + # create diskless marker file + touch etc/diskless + + # Make root filesystem R/O by default + echo "root_rw_mount=NO" >> etc/defaults/rc.conf + + # save config file for scripts + echo "NANO_DRIVE=${NANO_DRIVE}" > etc/nanobsd.conf + + echo "/dev/${NANO_DRIVE}s1 / ufs ro 1 1" > etc/fstab + echo "/dev/${NANO_DRIVE}s3 /cfg ufs rw,noauto 2 2" >> etc/fstab + mkdir -p cfg + ) +} + +create_arm_diskimage() +{ + pprint 2 "build diskimage" + pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.di" + + ( + echo "NANO_MEDIASIZE: $NANO_MEDIASIZE" + echo "NANO_IMAGES: $NANO_IMAGES" + echo "NANO_SECTS: $NANO_SECTS" + echo "NANO_HEADS: $NANO_HEADS" + echo "NANO_CODESIZE: $NANO_CODESIZE" + echo "NANO_CONFSIZE: $NANO_CONFSIZE" + echo "NANO_DATASIZE: $NANO_DATASIZE" + + echo $NANO_MEDIASIZE $NANO_IMAGES \ + $NANO_SECTS $NANO_HEADS \ + $NANO_CODESIZE $NANO_CONFSIZE $NANO_DATASIZE | + awk ' + { + printf "# %s\n", $0 + + # size of cylinder in sectors + cs = $3 * $4 + + # number of full cylinders on media + cyl = int ($1 / cs) + + # output fdisk geometry spec, truncate cyls to 1023 + if (cyl <= 1023) + print "g c" cyl " h" $4 " s" $3 + else + print "g c" 1023 " h" $4 " s" $3 + + if ($7 > 0) { + # size of data partition in full cylinders + dsl = int (($7 + cs - 1) / cs) + } else { + dsl = 0; + } + + # size of config partition in full cylinders + csl = int (($6 + cs - 1) / cs) + + if ($5 == 0) { + # size of image partition(s) in full cylinders + isl = int ((cyl - dsl - csl) / $2) + } else { + isl = int (($5 + cs - 1) / cs) + } + + # First image partition start at second track + print "p 1 165 " $3, isl * cs - $3 + c = isl * cs; + + # Second image partition (if any) also starts offset one + # track to keep them identical. + if ($2 > 1) { + print "p 2 165 " $3 + c, isl * cs - $3 + c += isl * cs; + } + + # Config partition starts at cylinder boundary. + print "p 3 165 " c, csl * cs + c += csl * cs + + # Data partition (if any) starts at cylinder boundary. + if ($7 > 0) { + print "p 4 165 " c, dsl * cs + } else if ($7 < 0 && $1 > c) { + print "p 4 165 " c, $1 - c + } else if ($1 < c) { + print "Disk space overcommitted by", \ + c - $1, "sectors" > "/dev/stderr" + exit 2 + } + + # Force slice 1 to be marked active. This is necessary + # for booting the image from a USB device to work. + print "a 1" + } + ' > ${MAKEOBJDIRPREFIX}/_.fdisk + + IMG=${NANO_DISKIMGDIR}/${NANO_IMGNAME} + BS=${NANO_SECTS}b + + if [ "${NANO_MD_BACKING}" = "swap" ] ; then + MD=`mdconfig -a -t swap -s ${NANO_MEDIASIZE} -x ${NANO_SECTS} \ + -y ${NANO_HEADS}` + else + echo ""; echo "Creating md backing file ${IMG} ..." + _c=`expr ${NANO_MEDIASIZE} / ${NANO_SECTS}` + pprint 2 "dd if=/dev/zero of=${IMG} bs=${BS} count=${_c}" + dd if=/dev/zero of=${IMG} bs=${BS} count=${_c} + pprint 2 "mdconfig -a -t vnode -f ${IMG} -x ${NANO_SECTS} -y ${NANO_HEADS}" + MD=`mdconfig -a -t vnode -f ${IMG} -x ${NANO_SECTS} \ + -y ${NANO_HEADS}` + fi + + trap "mdconfig -d -u $MD" 1 2 15 EXIT + + echo ""; echo "Write partition table ..." + FDISK=${MAKEOBJDIRPREFIX}/_.fdisk + pprint 2 "fdisk -i -f ${FDISK} ${MD}" + fdisk -i -f ${FDISK} ${MD} + pprint 2 "fdisk ${MD}" + fdisk ${MD} + + # Create first image + IMG1=${NANO_DISKIMGDIR}/_.disk.image1 + echo ""; echo "Create first image ${IMG1} ..." + SIZE=`awk '/^p 1/ { print $5 "b" }' ${FDISK}` + pprint 2 "${NANO_MAKEFS} -s ${SIZE} ${IMG1} ${NANO_WORLDDIR}" + ${NANO_MAKEFS} -s ${SIZE} ${IMG1} ${NANO_WORLDDIR} + pprint 2 "dd if=${IMG1} of=/dev/${MD}s1 bs=${BS}" + dd if=${IMG1} of=/dev/${MD}s1 bs=${BS} *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812130452.mBD4qv9h019048>