1 #!/bin/sh 2 # $NetBSD: binstall.sh,v 1.2 1997/10/31 22:12:21 pk Exp $ 3 # 4 5 vecho () { 6 # echo if VERBOSE on 7 if [ "$VERBOSE" = "1" ]; then 8 echo "$@" 1>&2 9 fi 10 return 0 11 } 12 13 Usage () { 14 echo "Usage: $0 [-hvt] [-m<path>] net|ffs directory" 15 exit 1 16 } 17 18 Help () { 19 echo "This script copies the boot programs to one of several" 20 echo "commonly used places. It takes care of stripping the" 21 echo "a.out(5) header off the installed boot program on sun4 machines." 22 echo "When installing an \"ffs\" boot program, this script also runs" 23 echo "installboot(8) which installs the default proto bootblocks into" 24 echo "the appropriate filesystem partition." 25 echo "Options:" 26 echo " -h - display this message" 27 echo " -m<path> - Look for boot programs in <path> (default: /usr/mdec)" 28 echo " -v - verbose mode" 29 echo " -t - test mode (implies -v)" 30 exit 0 31 } 32 33 34 PATH=/bin:/usr/bin:/sbin:/usr/sbin 35 MDEC=${MDEC:-/usr/mdec} 36 37 set -- `getopt "hm:tv" "$@"` 38 if [ $? -gt 0 ]; then 39 Usage 40 fi 41 42 for a in $* 43 do 44 case $1 in 45 -h) Help; shift ;; 46 -m) MDEC=$2; shift 2 ;; 47 -t) TEST=1; VERBOSE=1; shift ;; 48 -v) VERBOSE=1; shift ;; 49 --) shift; break ;; 50 esac 51 done 52 53 DOIT=${TEST:+echo "=>"} 54 55 if [ $# != 2 ]; then 56 Usage 57 fi 58 59 WHAT=$1 60 DEST=$2 61 62 if [ ! -d $DEST ]; then 63 echo "$DEST: not a directory" 64 Usage 65 fi 66 67 68 SKIP=0 69 70 case $WHAT in 71 "ffs") 72 DEV=`mount | while read line; do 73 set -- $line 74 vecho "Inspecting \"$line\"" 75 if [ "$2" = "on" -a "$3" = "$DEST" ]; then 76 if [ ! -b $1 ]; then 77 continue 78 fi 79 RAW=\`echo -n "$1" | sed -e 's;/dev/;/dev/r;'\` 80 if [ ! -c \$RAW ]; then 81 continue 82 fi 83 echo -n $RAW 84 break; 85 fi 86 done` 87 if [ "$DEV" = "" ]; then 88 echo "Cannot find \"$DEST\" in mount table" 89 exit 1 90 fi 91 TARGET=$DEST/boot 92 vecho Boot device: $DEV 93 vecho Target: $TARGET 94 $DOIT dd if=${MDEC}/boot of=$TARGET bs=32 skip=$SKIP 95 sync; sync; sync 96 vecho ${MDEC}/installboot ${VERBOSE:+-v} $TARGET ${MDEC}/bootxx $DEV 97 $DOIT ${MDEC}/installboot ${VERBOSE:+-v} $TARGET ${MDEC}/bootxx $DEV 98 ;; 99 100 "net") 101 TARGET=$DEST/boot.sparc.netbsd 102 vecho Target: $TARGET 103 cp -f ${MDEC}/boot.net $TARGET 104 ;; 105 106 *) 107 echo "$WHAT: not recognised" 108 exit 1 109 ;; 110 esac 111 112 exit $? 113