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