build_resflash.sh 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #!/bin/sh
  2. # resflash master build script
  3. # Copyright Brian Conway <bconway@rcesoftware.com>, see LICENSE for details
  4. set -o errexit -o nounset -o pipefail #-o xtrace # DEBUG
  5. BINDIR=$(dirname ${0})
  6. . ${BINDIR}/resflash.sub
  7. . ${BINDIR}/build_resflash.sub
  8. VERSION=7.6.0
  9. BYTESECT=512
  10. fwupdate=ALL
  11. pkgpath=https://cdn.openbsd.org/%m/
  12. swapsizemb=0
  13. addswap=
  14. tst=$(date +%s)
  15. if [ ${#} -eq 0 ]; then
  16. usage_and_exit
  17. else
  18. BUILDARGS=${*}
  19. fi
  20. # Parse options
  21. while :; do
  22. case ${1} in
  23. -u|-i) fwupdate=UCODE; shift;;
  24. -n) fwupdate=NONE; shift;;
  25. -p) pkgdir=${2}; shift 2;;
  26. --pkg_list) pkglist=${2}; shift 2;;
  27. --pkg_path) pkgpath=${2}; shift 2;;
  28. -s) com0sp=${2}; shift 2;;
  29. --swap) swapsizemb=${2}; shift 2;;
  30. --syspatch) syspatch=Y; shift;;
  31. -V) echo "resflash ${VERSION}"; exit 1;;
  32. -*) usage_and_exit;;
  33. *) break;;
  34. esac
  35. done
  36. case ${#} in
  37. 2) imgsizemb=${1}
  38. basedir=${2};;
  39. *) usage_and_exit;;
  40. esac
  41. # Verify root user
  42. if [ $(id -u) -ne 0 ]; then
  43. echo 'Must be run as root.'
  44. exit 1
  45. fi
  46. # Verify available vnds
  47. if [ $(vnconfig -l|grep -c 'not in use') -lt 2 ]; then
  48. ${ESCECHO} "Not enough vnds are available:\n$(vnconfig -l)"
  49. exit 1
  50. fi
  51. ${ESCECHO} "resflash ${VERSION}\n"
  52. # Validate base unpacking
  53. validate_base_dir ${basedir} ${imgsizemb} ${swapsizemb}
  54. set_attr_by_machine ${MACHINE}
  55. # Leave one set of logs for debugging
  56. rm -rf /tmp/resflash.??????
  57. BUILDPATH=$(mktemp -t -d resflash.XXXXXX)
  58. DATE=$(date +%Y%m%d_%H%M)
  59. trap "umount_all; echo \*\*\* Error encountered. BUILDPATH: ${BUILDPATH} \
  60. \*\*\*; exit 1" ERR INT
  61. # Build disk image and populate boot data
  62. . ${BINDIR}/mkimg.sh
  63. # Build and configure primary filesystem
  64. . ${BINDIR}/mkfs.sh
  65. # Clean up
  66. umount_all
  67. ${ESCECHO} "Build complete! ($(($(date +%s) - tst))s)\n\nFile sizes:"
  68. ls -lh resflash-*-${DATE}.{fs,img}|awk -safe '{ print $5"\t"$9 }'
  69. ${ESCECHO} "Disk usage:\n$(du -h resflash-*-${DATE}.{fs,img})"