/release/i386/make-memstick.sh

https://bitbucket.org/freebsd/freebsd-head/ · Shell · 48 lines · 33 code · 4 blank · 11 comment · 3 complexity · 1896cc3bd4f25b2b4004223ca7f42bed MD5 · raw file

  1. #!/bin/sh
  2. #
  3. # This script generates a "memstick image" (image that can be copied to a
  4. # USB memory stick) from a directory tree. Note that the script does not
  5. # clean up after itself very well for error conditions on purpose so the
  6. # problem can be diagnosed (full filesystem most likely but ...).
  7. #
  8. # Usage: make-memstick.sh <directory tree> <image filename>
  9. #
  10. # $FreeBSD$
  11. #
  12. PATH=/bin:/usr/bin:/sbin:/usr/sbin
  13. export PATH
  14. if [ $# -ne 2 ]; then
  15. echo "make-memstick.sh /path/to/directory /path/to/image/file"
  16. exit 1
  17. fi
  18. if [ ! -d ${1} ]; then
  19. echo "${1} must be a directory"
  20. exit 1
  21. fi
  22. if [ -e ${2} ]; then
  23. echo "won't overwrite ${2}"
  24. exit 1
  25. fi
  26. echo '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab
  27. makefs -B little -o label=FreeBSD_Install ${2} ${1}
  28. if [ $? -ne 0 ]; then
  29. echo "makefs failed"
  30. exit 1
  31. fi
  32. rm ${1}/etc/fstab
  33. unit=`mdconfig -a -t vnode -f ${2}`
  34. if [ $? -ne 0 ]; then
  35. echo "mdconfig failed"
  36. exit 1
  37. fi
  38. gpart create -s BSD ${unit}
  39. gpart bootcode -b ${1}/boot/boot ${unit}
  40. gpart add -t freebsd-ufs ${unit}
  41. mdconfig -d -u ${unit}