1 # $NetBSD: dot.profile,v 1.20 2009/12/24 14:56:14 tsutsui Exp $ 2 # 3 # Copyright (c) 2000 The NetBSD Foundation, Inc. 4 # All rights reserved. 5 # 6 # This code is derived from software contributed to The NetBSD Foundation 7 # by Paul Kranenburg. 8 # 9 # Redistribution and use in source and binary forms, with or without 10 # modification, are permitted provided that the following conditions 11 # are met: 12 # 1. Redistributions of source code must retain the above copyright 13 # notice, this list of conditions and the following disclaimer. 14 # 2. Redistributions in binary form must reproduce the above copyright 15 # notice, this list of conditions and the following disclaimer in the 16 # documentation and/or other materials provided with the distribution. 17 # 18 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 # POSSIBILITY OF SUCH DAMAGE. 29 # 30 31 PATH=/sbin:/bin:/usr/bin:/usr/sbin:/ 32 export PATH 33 HOME=/ 34 export HOME 35 36 umask 022 37 38 MACHINE=sparc 39 INSTFS_MP=/instfs 40 MINIROOT_FSSIZE=10000 41 MINIROOT_BPINODE=1024 42 43 if [ "${BOOTFS_DONEPROFILE}" != "YES" ]; then 44 45 BOOTFS_DONEPROFILE=YES 46 export BOOTFS_DONEPROFILE 47 48 # mount root read-write 49 mount_ffs -o update /dev/md0a / 50 51 # mount /instfs 52 mount_mfs -s $MINIROOT_FSSIZE -i $MINIROOT_BPINODE swap $INSTFS_MP 53 fi 54 55 # A cat simulator 56 cat() 57 { 58 local l 59 while read l; do 60 echo "$l" 61 done 62 } 63 64 _resp="" 65 getresp() { 66 read _resp 67 if [ "$_resp" = "" ]; then 68 _resp=$1 69 fi 70 } 71 72 # Load instfs 73 74 floppy() 75 { 76 local dev rval 77 78 rval=0 79 dev="/dev/fd0a" 80 81 echo "Ejecting floppy disk" 82 eject $dev 83 84 cat <<EOF 85 Remove the boot disk from the floppy station and insert the second disk of 86 the floppy installation set into the disk drive. 87 88 The question below allows you to specify the device name of the floppy 89 drive. Usually, the default device will do just fine. 90 EOF 91 echo -n "Floppy device to load the installation utilities from [$dev]: " 92 getresp "$dev"; dev="$_resp" 93 94 echo "Extracting installation utilities... " 95 (cd $INSTFS_MP && tar zxpf $dev) || rval=1 96 97 echo "Ejecting floppy disk" 98 eject $dev 99 return $rval 100 } 101 102 tape() 103 { 104 local dev fn bsa 105 cat <<EOF 106 By default, the installation utilities are located in the second tape file 107 on the NetBSD/sparc installation tape. In case your tape layout is different, 108 choose the appropriate tape file number below. 109 110 EOF 111 dev="/dev/nrst0" 112 echo -n "Tape device to load the installation utilities from [$dev]: " 113 getresp "$dev"; dev="$_resp" 114 115 fn=2 116 echo -n "Tape file number [$fn]: " 117 getresp "$fn"; fn="$_resp" 118 119 echo -n "Tape block size (use only if you know you need it): " 120 getresp ""; if [ "$_resp" != "" ]; then 121 bsa="-b $_resp" 122 fi 123 124 echo "Positioning tape... " 125 mt -f $dev asf $(($fn - 1)) 126 [ $? = 0 ] || return 1 127 128 echo "Extracting installation utilities... " 129 (cd $INSTFS_MP && tar $bsa -z -x -p -f $dev) || return 1 130 } 131 132 cdrom() 133 { 134 local dev tf rval 135 cat <<EOF 136 The installation utilities are located on the ISO CD9660 filesystem on the 137 NetBSD/sparc CD-ROM. We need to mount the filesystem from the CD-ROM device 138 which you can specify below. Note: after the installation utilities are 139 extracted this filesystem will be unmounted again. 140 141 EOF 142 143 rval=0 144 dev="/dev/cd0a" 145 echo -n "CD-ROM device to use [$dev]: " 146 getresp "$dev"; dev="$_resp" 147 148 mount_cd9660 -o rdonly $dev /cdrom || return 1 149 150 # Look for instfs.tgz in MACHINE subdirectory first 151 tf=/cdrom/$MACHINE/installation/bootfs/instfs.tgz 152 [ -f $tf ] || tf=/cdrom/installation/bootfs/instfs.tgz 153 [ -f $tf ] || { 154 echo "Note: instfs.tgz image not found in default location" 155 tf="" 156 } 157 158 while :; do 159 echo -n "Path to instfs.tgz [$tf] " 160 [ -z "$tf" ] && echo -n "(<return> to abort) " 161 getresp "$tf"; tf="$_resp" 162 [ -z "$tf" ] && { rval=1; break; } 163 [ -f "$tf" ] && break; 164 echo "$tf not found" 165 tf="" 166 done 167 168 [ $rval = 0 ] && (cd $INSTFS_MP && tar zxpf $tf) || rval=1 169 170 umount /cdrom 171 return $rval 172 } 173 174 cat <<EOF 175 Welcome to the NetBSD/sparc microroot setup utility. 176 177 We've just completed the first stage of a two-stage procedure to load a 178 fully functional NetBSD installation environment on your machine. In the 179 second stage which is to follow now, a set of additional installation 180 utilities must be load from your NetBSD/sparc installation medium. 181 182 EOF 183 184 while :; do 185 cat <<EOF 186 This procedure supports one of the following media: 187 188 1) cdrom 189 2) tape 190 3) floppy 191 192 EOF 193 echo -n "Installation medium to load the additional utilities from: " 194 read answer 195 echo "" 196 case "$answer" in 197 1|cdrom) _func=cdrom;; 198 2|tape) _func=tape;; 199 3|floppy) _func=floppy;; 200 *) echo "option not supported"; continue;; 201 esac 202 $_func && break 203 done 204 205 # switch to /instfs, and pretend we logged in there. 206 chroot $INSTFS_MP /bin/sh /.profile 207 208 # 209 echo "Back in microroot; halting machine..." 210 halt 211