diff options
37 files changed, 2548 insertions, 577 deletions
diff --git a/distrib/amiga/floppies/inst-common/dot.commonutils b/distrib/amiga/floppies/inst-common/dot.commonutils index d5a87c3a2b9..544979834f4 100644 --- a/distrib/amiga/floppies/inst-common/dot.commonutils +++ b/distrib/amiga/floppies/inst-common/dot.commonutils @@ -27,7 +27,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# $Id: dot.commonutils,v 1.1 1995/10/18 08:37:28 deraadt Exp $ +# $Id: dot.commonutils,v 1.2 1995/11/06 21:27:23 deraadt Exp $ # Installation utilites (functions), to get NetBSD installed on # the hard disk. These are meant to be invoked from the shell prompt, @@ -102,7 +102,7 @@ Load_tape() echo -n "continue..." read foo echo "Extracting files from the tape..." - $TAR xvpf --unlink /dev/$which + $TAR --unlink -xvpf /dev/$which echo "Done." } diff --git a/distrib/i386/floppies/Makefile b/distrib/i386/floppies/Makefile index 6519049412f..1fa605450ec 100644 --- a/distrib/i386/floppies/Makefile +++ b/distrib/i386/floppies/Makefile @@ -1,5 +1,5 @@ # $Id -SUBDIR= inst kc upgr +SUBDIR= inst kcadp kcoth upgr .include <bsd.subdir.mk> diff --git a/distrib/i386/floppies/Makefile.inc b/distrib/i386/floppies/Makefile.inc index f4a454d4196..6c237d0f5b1 100644 --- a/distrib/i386/floppies/Makefile.inc +++ b/distrib/i386/floppies/Makefile.inc @@ -1,4 +1,5 @@ -# $Id: Makefile.inc,v 1.1 1995/10/18 08:37:33 deraadt Exp $ +# $Id: Makefile.inc,v 1.2 1995/11/06 21:27:32 deraadt Exp $ -# Revision is 1.0A -REV= 10A +# Revision is 1.1 +# all these private copies of the version number really lose. +REV= 11 diff --git a/distrib/i386/floppies/inst-common/dot.commonutils b/distrib/i386/floppies/inst-common/dot.commonutils index e53cef68855..9839c256d2b 100644 --- a/distrib/i386/floppies/inst-common/dot.commonutils +++ b/distrib/i386/floppies/inst-common/dot.commonutils @@ -27,7 +27,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# $Id: dot.commonutils,v 1.1 1995/10/18 08:37:33 deraadt Exp $ +# $Id: dot.commonutils,v 1.2 1995/11/06 21:27:38 deraadt Exp $ # Installation utilites (functions), to get NetBSD installed on # the hard disk. These are meant to be invoked from the shell prompt, @@ -111,7 +111,7 @@ Load_tape() echo -n "continue..." read foo echo "Extracting files from the tape..." - $TAR xvpf --unlink /dev/$which + $TAR --unlink -xvpf /dev/$which echo "Done." } diff --git a/distrib/i386/floppies/inst/install.sh b/distrib/i386/floppies/inst/install.sh index 3e984c2d42e..828e4aa9504 100644 --- a/distrib/i386/floppies/inst/install.sh +++ b/distrib/i386/floppies/inst/install.sh @@ -28,7 +28,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# $Id: install.sh,v 1.1 1995/10/18 08:37:34 deraadt Exp $ +# $Id: install.sh,v 1.2 1995/11/06 21:27:35 deraadt Exp $ # NetBSD installation script. # In a perfect world, this would be a nice C program, with a reasonable diff --git a/distrib/i386/floppies/upgr/Makefile b/distrib/i386/floppies/upgr/Makefile index 0ba5f863164..c5b9267498e 100644 --- a/distrib/i386/floppies/upgr/Makefile +++ b/distrib/i386/floppies/upgr/Makefile @@ -1,8 +1,8 @@ -# $Id: Makefile,v 1.1 1995/10/18 08:37:35 deraadt Exp $ +# $Id: Makefile,v 1.2 1995/11/06 21:27:41 deraadt Exp $ TOP= ${.CURDIR}/.. .include "${TOP}/Makefile.inc" -IMAGE= upgr-${REV}.fs +IMAGE= upgr${REV}.fs .include "${TOP}/inst-common/Makefile.inc" diff --git a/distrib/i386/floppies/upgr/dot.hdprofile b/distrib/i386/floppies/upgr/dot.hdprofile index f1fa65b4a9d..65a9cc2a435 100644 --- a/distrib/i386/floppies/upgr/dot.hdprofile +++ b/distrib/i386/floppies/upgr/dot.hdprofile @@ -27,7 +27,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# $Id: dot.hdprofile,v 1.1 1995/10/18 08:37:35 deraadt Exp $ +# $Id: dot.hdprofile,v 1.2 1995/11/06 21:27:43 deraadt Exp $ PATH=/sbin:/bin:/usr/bin:/usr/sbin:/ export PATH diff --git a/distrib/i386/floppies/upgr/dot.profile b/distrib/i386/floppies/upgr/dot.profile index 6c7d5adc48b..d6b5063c445 100644 --- a/distrib/i386/floppies/upgr/dot.profile +++ b/distrib/i386/floppies/upgr/dot.profile @@ -27,7 +27,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# $Id: dot.profile,v 1.1 1995/10/18 08:37:35 deraadt Exp $ +# $Id: dot.profile,v 1.2 1995/11/06 21:27:44 deraadt Exp $ PATH=/sbin:/bin:/usr/bin:/usr/sbin:/ export PATH diff --git a/distrib/i386/floppies/upgr/dot.upgrutils b/distrib/i386/floppies/upgr/dot.upgrutils index afc8f3df2cd..97f52529a93 100644 --- a/distrib/i386/floppies/upgr/dot.upgrutils +++ b/distrib/i386/floppies/upgr/dot.upgrutils @@ -27,7 +27,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# $Id: dot.upgrutils,v 1.1 1995/10/18 08:37:35 deraadt Exp $ +# $Id: dot.upgrutils,v 1.2 1995/11/06 21:27:45 deraadt Exp $ # Upgrade cleanup utilites (functions), to make sure a recently-upgraded # system is safely runnable. These are meant to be invoked from the shell diff --git a/distrib/i386/floppies/upgr/list b/distrib/i386/floppies/upgr/list index eb3850b4daa..d819ad559b2 100644 --- a/distrib/i386/floppies/upgr/list +++ b/distrib/i386/floppies/upgr/list @@ -1,4 +1,4 @@ -# $Id: list,v 1.1 1995/10/18 08:37:35 deraadt Exp $ +# $Id: list,v 1.2 1995/11/06 21:27:46 deraadt Exp $ # and the upgrade tools COPY dot.profile .profile diff --git a/distrib/i386/floppies/upgr/upgrade.sh b/distrib/i386/floppies/upgr/upgrade.sh index 8ac8eb5bbdf..0183b9c7f6c 100644 --- a/distrib/i386/floppies/upgr/upgrade.sh +++ b/distrib/i386/floppies/upgr/upgrade.sh @@ -28,7 +28,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# $Id: upgrade.sh,v 1.1 1995/10/18 08:37:35 deraadt Exp $ +# $Id: upgrade.sh,v 1.2 1995/11/06 21:27:47 deraadt Exp $ # NetBSD upgrade script. # In a perfect world, this would be a nice C program, with a reasonable @@ -38,7 +38,7 @@ DT=/etc/disktab # /etc/disktab FSTABDIR=/mnt/etc # /mnt/etc #DONTDOIT=echo -VERSION=1.0 +VERSION=1.1 FSTAB=${FSTABDIR}/fstab getresp() { @@ -236,7 +236,7 @@ $DONTDOIT cp /tmp/.hdprofile /mnt/.profile echo "" echo "Mounting remaining partitions..." -chroot /mnt mount -at ufs > /dev/null 2>&1 +chroot /mnt mount -at ffs > /dev/null 2>&1 echo "Done." echo "" diff --git a/distrib/notes/INSTALL b/distrib/notes/INSTALL index 5aede836e3d..3591eea8e54 100644 --- a/distrib/notes/INSTALL +++ b/distrib/notes/INSTALL @@ -1,4 +1,4 @@ -INSTALLATION NOTES for NetBSD/MACHINE 1.0 +INSTALLATION NOTES for NetBSD/MACHINE 1.1 @@ -72,12 +72,12 @@ Sources of NetBSD: #include "mirrors" -NetBSD 1.0 Release Contents: +NetBSD 1.1 Release Contents: ------ --- ------- -------- -The NetBSD 1.0 release is organized in the following way: +The NetBSD 1.1 release is organized in the following way: -.../NetBSD-1.0/ +.../NetBSD-1.1/ BUGS Known bugs list (incomplete and out of date). @@ -87,7 +87,7 @@ The NetBSD 1.0 release is organized in the following way: LAST_MINUTE Last minute changes. MIRRORS A list of sites that mirror - the NetBSD 1.0 distribution. + the NetBSD 1.1 distribution. README.files README describing the distribution's contents. @@ -103,7 +103,7 @@ The NetBSD 1.0 release is organized in the following way: In addition to the files and directories listed above, there is one directory per architecture, for each of the architectures that NetBSD -1.0 has a binary distribution for. There are also +1.1 has a binary distribution for. There are also 'README.export-control' files sprinkled liberally throughout the distribution tree, which point out that there are some portions of the distribution (e.g. those containing crypt(3)) that should not be @@ -117,23 +117,23 @@ not be exported from the U.S. (Those are contained in each architecture's "security" binary distribution set.) The source distribution sets are as follows: - gsrc10 This set contains the "gnu" sources, including + gsrc11 This set contains the "gnu" sources, including the source for the compiler, assembler, groff, and the other GNU utilities in the binary distribution sets. [ 7.7M gzipped, 32.0M uncompressed ] - ksrc10 This set contains the sources to the NetBSD 1.0 + ksrc11 This set contains the sources to the NetBSD 1.1 kernel, config(8), config.new(8) and dbsym(8). [ 4.5M gzipped, 20.8M uncompressed ] - ssrc10 This set contains the "share" sources, which include + ssrc11 This set contains the "share" sources, which include the sources for the man pages not associated with any particular program, the sources for the typesettable document set, the dictionaries, and more. [ 2.3M gzipped, 8.5M uncompressed ] - src10 This set contains all of the NetBSD 1.0 sources which + src11 This set contains all of the NetBSD 1.1 sources which are not mentioned above. [ 7.1M gzipped, 33.4M uncompressed ] @@ -294,38 +294,44 @@ We are: -- --- (in alphabetical order) -The NetBSD core team: -Chris G. Demetriou <cgd@sun-lamp.cs.berkeley.edu> -Theo de Raadt <deraadt@sun-lamp.cs.berkeley.edu> -Adam Glass <glass@sun-lamp.cs.berkeley.edu> -Charles Hannum <mycroft@sun-lamp.cs.berkeley.edu> +The NetBSD core group: +J.T. Conklin <jtc@NetBSD.ORG> +Charles Hannum <mycroft@NetBSD.ORG> +Paul Kranenburg <pk@NetBSD.ORG> The port-masters (and their ports): -Allen Briggs <briggs@mail.vt.edu> (mac68k) - (and the rest of the 'Alice' group) -Theo de Raadt <deraadt@sun-lamp.cs.berkeley.edu> (sparc) -Charles Hannum <mycroft@sun-lamp.cs.berkeley.edu> (i386, hp300) -Chris Hopps <chopps@sun-lamp.cs.berkeley.edu> (amiga) -Adam Glass <glass@sun-lamp.cs.berkeley.edu> (pmax) -Paul Mackerras <paulus@sun-lamp.cs.berkeley.edu> (da30) -Anders Magnusson <ragge@sun-lamp.cs.berkeley.edu> (vax) -Phil Nelson <phil@sun-lamp.cs.berkeley.edu> (pc532) -Gordon Ross <gwr@sun-lamp.cs.berkeley.edu> (sun3) +Allen Briggs <briggs@mail.vt.edu> (mac68k) +Chuck Cranor <chuck@NetBSD.ORG> (mvme68k) +Chris G. Demetriou <cgd@NetBSD.ORG> (alpha) +Charles Hannum <mycroft@NetBSD.ORG> (i386) +Chris Hopps <chopps@NetBSD.ORG> (amiga) +Paul Kranenburg <pk@NetBSD.ORG> (sparc) +Ted Lemon <mellon@NetBSD.ORG> (pmax) +Anders Magnusson <ragge@NetBSD.ORG> (vax) +Phil Nelson <phil@NetBSD.ORG> (pc532) +Gordon Ross <gwr@NetBSD.ORG> (sun3) +Jason Thorpe <thorpej@NetBSD.ORG> (hp300) +Leo Weppelman <leo@NetBSD.ORG> (atari) Supporting cast: Steve Allen <wormey@eskimo.com> -John Brezak <brezak@sun-lamp.cs.berkeley.edu> +John Brezak <brezak@NetBSD.ORG> Dave Burgess <burgess@cynjut.infonet.net> -J.T. Conklin <jtc@sun-lamp.cs.berkeley.edu> Hubert Feyrer <hubert.feyrer@rz.uni-regensburg.de> Brad Grantham <grantham@tenon.com> +Matthew Green <mrg@eterna.com.au> Lawrence Kesteloot <kesteloo@cs.unc.edu> -Paul Kranenburg <pk@sun-lamp.cs.berkeley.edu> +John Kohl <jtk@NetBSD.ORG> +Paul Mackerras <paulus@NetBSD.ORG> +Neil J. McRae <neil@domino.org> Herb Peyerl <hpeyerl@beer.org> Matthias Pfaller <leo@marco.de> -Chris Provenzano <proven@sun-lamp.cs.berkeley.edu> +Chris Provenzano <proven@NetBSD.ORG> +Waldi Ravens <waldi@moacs.indiv.nl.net> +Scott Reynolds <scottr@edsi.org> Wolfgang Solfrank <ws@tools.de> - +Frank van der Linden <fvdl@NetBSD.ORG> +Christos Zoulas <christos@NetBSD.ORG> Legal Mumbo-jumbo: ----- ----- ----- diff --git a/distrib/notes/atari/install b/distrib/notes/atari/install index cbc336a5196..727d519f7ee 100644 --- a/distrib/notes/atari/install +++ b/distrib/notes/atari/install @@ -233,7 +233,7 @@ like so: Next you need to re-make your devices to get the ownership correct: cd /dev - MAKEDEV all + ./MAKEDEV all Your system is now complete but not completely configured; you should adjust the /etc/sendmail.cf file as necessary to suit your diff --git a/distrib/notes/atari/upgrade b/distrib/notes/atari/upgrade index 1ddc27fb372..13201776e98 100644 --- a/distrib/notes/atari/upgrade +++ b/distrib/notes/atari/upgrade @@ -33,4 +33,4 @@ Once you are done installing the upgrade sets, then reboot: Now you can boot your upgraded system as usually, but take the new kernel! To finish up, you should rebuild your /dev-directory: cd /dev - MAKEDEV all + ./MAKEDEV all diff --git a/distrib/notes/legal.common b/distrib/notes/legal.common index 1a8343e8960..aabcd455ca8 100644 --- a/distrib/notes/legal.common +++ b/distrib/notes/legal.common @@ -4,4 +4,35 @@ This product includes software developed by the Computer Systems Engineering Group at Lawrence Berkeley Laboratory. + This product includes software developed by Christopher G. Demetriou. + + This product includes software developed by Adam Glass. + + This product includes software developed by Christian E. Hopps. + This product includes software developed by Paul Kranenburg. + + This product includes software developed by Terrence R. Lambert. + + This product includes software developed by Frank van der Linden. + + This product includes software developed by Philip A. Nelson. + + This product includes software developed by Jochen Pohl. + + This product includes software developed by Chris Provenzano. + + This product includes software developed by Theo de Raadt. + + This product includes software developed by the David Muir Sharnoff. + + This product includes software developed by SigmaSoft, Th. Lockert. + + This product includes software developed by Jason Thorpe. + + This product includes software developed by TooLs GmbH. + + This product includes software developed by Winning Strategies, Inc. + + This product includes software developed by Christos Zoulas. + diff --git a/distrib/notes/sparc/contents b/distrib/notes/sparc/contents index 8e22ef36da0..c013629d235 100644 --- a/distrib/notes/sparc/contents +++ b/distrib/notes/sparc/contents @@ -1,8 +1,8 @@ -The sparc-specific portion of the NetBSD 1.0 release is found in the +The sparc-specific portion of the NetBSD 1.1 release is found in the "sparc" subdirectory of the distribution. That subdirectory is laid out as follows: -.../NetBSD-1.0/sparc/ +.../NetBSD-1.1/sparc/ binary/ sparc binary distribution sets; see below. @@ -13,20 +13,20 @@ out as follows: and installation script. The NetBSD/sparc binary distribution sets contain the binaries which -comprise the NetBSD 1.0 release for the sparc. There are seven binary +comprise the NetBSD 1.1 release for the sparc. There are seven binary distribution sets, and the "security" distribution set. The binary distribution sets can be found in subdirectories of the "sparc/binary" -subdirectory of the NetBSD 1.0 distribution tree, and are as follows: +subdirectory of the NetBSD 1.1 distribution tree, and are as follows: - base10 The NetBSD/sparc 1.0 base binary distribution. You + base11 The NetBSD/sparc 1.1 base binary distribution. You MUST install this distribution set. It contains the base NetBSD utilities that are necessary for the system to run and be minimally functional. It includes shared library support, and excludes everything described below. - [ 7.3M gzipped, 22.7M uncompressed ] + [ 8.0M gzipped, 24.4M uncompressed ] - comp10 The NetBSD/sparc Compiler tools. All of the tools + comp11 The NetBSD/sparc Compiler tools. All of the tools relating to C, C++, and FORTRAN (yes, there are two!). This set includes the system include files (/usr/include), the linker, the compiler tool chain, @@ -35,38 +35,38 @@ subdirectory of the NetBSD 1.0 distribution tree, and are as follows: set). This set also includes the manual pages for all of the utilities it contains, as well as the system call and library manual pages. - [ 4.9M gzipped, 15.9M uncompressed ] + [ 5.4M gzipped, 17.6M uncompressed ] - etc10 This distribution set contains the system + etc11 This distribution set contains the system configuration files that reside in /etc and in several other places. This set MUST be installed if you are installing the system from scratch, but should NOT be used if you are upgrading. (If you are upgrading, it's recommended that you get a copy of this set and CAREFULLY upgrade your configuration files by hand.) - [ 50K gzipped, 285K uncompressed ] + [ 62K gzipped, 338K uncompressed ] - games10 This set includes the games and their manual pages. - [ 1.2M gzipped, 3.3M uncompressed ] + games11 This set includes the games and their manual pages. + [ 2.9M gzipped, 7.4M uncompressed ] - man10 This set includes all of the manual pages for the + man11 This set includes all of the manual pages for the binaries and other software contained in the base set. Note that it does not include any of the manual pages that are included in the other sets. - [ 0.7M gzipped, 2.9M uncompressed ] + [ 0.8M gzipped, 3.3M uncompressed ] - misc10 This set includes the system dictionaries (which are + misc11 This set includes the system dictionaries (which are rather large), the typesettable document set, and man pages for other architectures which happen to be installed from the source tree by default. - [ 1.7M gzipped, 5.9M uncompressed ] + [ 1.9M gzipped, 6.6M uncompressed ] - text10 This set includes NetBSD's text processing tools, + text11 This set includes NetBSD's text processing tools, including groff, all related programs, and their manual pages. [ 0.8M gzipped, 3.1M uncompressed ] -The sparc security distribution set is named "secr10" and can be found +The sparc security distribution set is named "secr11" and can be found in the "sparc/security" subdirectory of the NetBSD 1.0 distribution tree. It contains crypt.c (the source file for the DES encryption algorithm) and the binaries which depend on it. It can only be found diff --git a/distrib/notes/sparc/hardware b/distrib/notes/sparc/hardware index 977abd4f808..d425275cfe8 100644 --- a/distrib/notes/sparc/hardware +++ b/distrib/notes/sparc/hardware @@ -1,6 +1,16 @@ -NetBSD/sparc 1.0 runs on Sun4c class machines only, which includes -the SS1, SS1+, SS2, IPC, ELC, IPX, and the SLC. It does not run -on Sun4, Sun4m, or Sun4d machines. +NetBSD/sparc 1.1 runs on the following classes of machines: + - sun4c (e.g. the SS1, SS1+, SS2, IPC, ELC, IPX, and SLC) + - sun4 (e.g. the 4/100, 4/200, and 4/300. note that support + for the 4/400 processor is incomplete) + +NetBSD/sparc 1.1 does *not* run on these machines (yet): + - sun-4/400 (lacking support for the I/O cache, and has + ethernet problems) + - sun4m (e.g. sparc classic, 4, 5, 10, and 20) + - sun4d (e.g. sparc center 2000) + +Work on porting NetBSD/sparc to the sun4m platform is currently in +progress, but was not ready in time for the 1.1 release. The minimal configuration requires 4M of RAM and ~60M of disk space. To install the entire system requires much more disk space, and to run @@ -10,16 +20,36 @@ around 16M of RAM, getting more RAM is more important than getting a faster CPU.) Supported devices include: - Video: cgthree, cgsix, and bwtwo frame buffers - Serial ports: ttya and ttyb - On-board AMD Lance ethernet - Some SCSI CD-ROM drives - Sun keyboard and mouse + sun4c sbus video: + cgsix, cgthree, and bwtwo frame buffers + sun4 video (not thoroughly tested?): + P4 on-board bwtwo, and VME cgtwo card + serial ports: + ttya and ttyb (can be used as console if needed) + ethernet: + on-board AMD Lance ethernet ("le0"), + Sbus AMD Lance ethernet cards, + on-board Intel 82586 ethernet (ie0 on 4/100's and 4/200's), + VME Intel 82586 ethernet cards + SCSI: + on-board "esp" SCSI controller (sun4c's, and the 4/300), + sbus "esp" SCSI controller, + Sun "SUN-3"/"si" VME SCSI controller (polled mode only, slow), + Sun "SCSI Weird"/"sw" on-board controller (4/110 only, polled) + VME disks: + Xylogics 7053 VME/SMD disk controller ("xd"), + Xylogics 450/451 VME disk controller ("xy") + [note: VME/IPI disks are not supported] + sun floppy disk drive on sun4c's + sun keyboard and mouse + sun4c audio + Hardware the we do NOT currently support, but get many questions about: - The floppy drive. + sun4m, including multiprocessor machines + interrupt driven SCSI driver for sun-4/100's and sun-4/200's + +The next release will hopefully run on many more machines. In +particular, some Sun4m support will be there. -The next release will likely run on many more machines. In -particular, some Sun4 support will be there, and perhaps even -Sun4m. diff --git a/distrib/notes/sparc/install b/distrib/notes/sparc/install index cb9437e7f6c..3fb8ac3de5f 100644 --- a/distrib/notes/sparc/install +++ b/distrib/notes/sparc/install @@ -8,6 +8,7 @@ a single disk attached. Alternatively, you could use SunOS (booted from a local disk) and install NetBSD onto a second disk. For the latter method, skip to the section "Installing from SunOS" below. + Installing using a diskless setup. First, you must setup a diskless client configuration on a server. Consult @@ -16,11 +17,36 @@ Put all the *.tar.gz files you want to install into the root directory for your client on the server. Next, unpack base.tar.gz on the server in the root directory for your machine. +If you elect to you a separately NFS-mounted filesystem for `/usr' on your +diskless setup, make sure the "./usr" base files in base.tar.gz end up +in the correct location. One way to do this is to temporarily use a loopback +mount on the server, re-routing <root>/usr to your server's exported +NetBSD "/usr" directory. Also put the kernel into the root directory. + A few configuration files need to be edited: <root>/etc/hosts + Add the IP addresses of both server and client. + <root>/etc/myname + This files contains the client's hostname; use the same + name as in <root>/etc/hosts. + <root>/etc/fstab + Enter the entries for the remotely mounted filesystems. + For example: + server:/export/root/client / nfs rw 0 0 + server:/export/exec/sun4.netbsd /usr nfs rw 0 0 + +Now you must populate the the `/dev' directory for your client. If you server +runs SunOS 4.x, you can simply change your working directory to `<root>/dev' +and run the MAKEDEV script: `sh MAKEDEV all'. + +On SunOS 5.x systems, MAKEDEV can also be used, but there'll be error +messages about unknown user and groups. These errors are inconsequential +for the purpose of installing NetBSD. However, you may want to correct them +if you plan to the diskless setup regularly. In that case, you may re-run +MAKEDEV on your NetBSD machine once it has booted. Boot your workstation from the server by entering the appropriate `boot' command at the monitor prompt. Depending on the PROM version in your machine, @@ -42,12 +68,42 @@ instead of `ok', type: ok ]] -Start the installation procedure: +If you use a diskless setup with a separately NFS-mounted /usr filesystem, +mount /usr by hand now: + +netbsd# mount /usr + +At this point, it's worth checking the disk label and partition sizes on +the disk you want to install NetBSD onto. NetBSD understands SunOS-style +disklabels, so if your disk was previously used by SunOS there will be +a usable label on it. Use `disklabel -e <disk>' (where <disk> is the +device name assigned by the NetBSD kernel, e.g. `sd0') to view and +modify the partition sizes. A comfortable size for the root filesystem +partition is about 20MB; a good initial size for the swap partition is +twice the amount of physical memory in your machine (though, unlike +SunOS 4.x, there are no restrictions on the size of the swap partition +that would render part of your memory unusable). A full binary installation +takes about 60MB in `/usr'. Make all your partitions start and end on +cylinder boundaries. + +NOTE: if you are installing on a SCSI disk that does *not* have a SunOS +or NetBSD label on it, you may still be able to use disklabel(8) but you'll +have to create all partitions from scratch. If your disk is listed in +`/etc/disktab', you may use the entry (which in most cases only defines +a `c' partition to describe the whole disk) to put an initial label on +the disk. + + +If you are upgrading a NetBSD installation, start the upgrade script: + +#netbsd ./upgrade.sh + +else, start the installation procedure: netbsd# ./install.sh -This script will do most of the work of transferring the system from the +These scripts will do most of the work of transferring the system from the tar files onto your disk. You will frequently be asked for confirmation before the script proceeds with each phase of the installation process. Occasionally, you'll have to provide a piece of information such as the diff --git a/distrib/notes/sparc/legal b/distrib/notes/sparc/legal index 295e8480bdc..d82afb8856f 100644 --- a/distrib/notes/sparc/legal +++ b/distrib/notes/sparc/legal @@ -1,4 +1,17 @@ - This product includes software developed by Philip A. Nelson. + This product includes software developed by the Alice Group. - This product includes software developed by Paul Kranenburg. + This product includes software developed by Charles D. Cranor. + + This product includes software developed by Peter Galbavy. + + This product includes software developed by Rolf Grossmann. + + This product includes software developed by David Miller. + + This product includes software developed by Gordon W. Ross. + + This product includes software developed by Charles Hannum, by the + University of Vermont and State Agricultural College and Garrett A. + Wollman, by William F. Jolitz, and by the University of California, + Berkeley, Lawrence Berkeley Laboratory, and its contributors. diff --git a/distrib/notes/sparc/upgrade b/distrib/notes/sparc/upgrade index 4141ecd51e6..b8f5b80ae75 100644 --- a/distrib/notes/sparc/upgrade +++ b/distrib/notes/sparc/upgrade @@ -1,5 +1,6 @@ -Upgrading NetBSD/sparc is not something someone is likely to do, -since this is the first real distribution. Since a number of -critical interfaces have changed quite significantly, your best -bet is to reinstall completely, perhaps saving a few files in -/etc and /usr/local. +To upgrade to NetBSD 1.1 from a previous version follow the instructions +in the section "Installing NetBSD", but run the script `upgrade.sh' +in stead of `install.sh'. + +The upgrade script will use the existing disk partitions to install the +new system in, and also preserves the files in `/etc'. diff --git a/distrib/notes/sparc/whatis b/distrib/notes/sparc/whatis index a354a011d93..cbd9dcecc3a 100644 --- a/distrib/notes/sparc/whatis +++ b/distrib/notes/sparc/whatis @@ -1,5 +1,5 @@ -NetBSD 1.0 is the first release for the sparc, although numerous -people have been running "snapshots" for some time. It has all the -standard NetBSD features, plus you can also enable SunOS binary -compatibility in the kernel which will run more than 95% of SunOS -executables. +NetBSD 1.1 is the second release for the sparc. Many more sparc +models and devices are now supported. +In addition to the SunOS 4.1 compatibility present in NetBSD/sparc 1.0, +version 1.1 will also run some number of SunOS 5 (SVR4) executables +in binary emulation mode. diff --git a/distrib/notes/sparc/xfer b/distrib/notes/sparc/xfer index 445ec92c59f..aed6d069e1b 100644 --- a/distrib/notes/sparc/xfer +++ b/distrib/notes/sparc/xfer @@ -1 +1,83 @@ -Installation is done from SunOS, or a previous NetBSD install. +Installation is supported from several media types, including: + NFS partitions + FTP + Tape + +The steps necessary to prepare the distribution sets +for installation depend on which method of installation +you choose. The various methods are explained below. + +To prepare for installing via an NFS partition: + + Since the current NetBSD/sparc installation program uses + a diskless setup for your workstation, you will already + have prepared an NFS directory for use as a remote + root filesystem (see the `install' document for details). + The easiest way is to put the NetBSD filesets in this + root filesystem on the server where the install program + will find them. + + However, you have the option to put the filesets in + another directory or even on another NFS server. To do + so, follow these guide lines: + + Place the NetBSD software you wish to install into + a directory on an NFS server, and make that directory + mountable by the machine which you will be installing + NetBSD on. This will probably require modifying the + /etc/exports file of the NFS server and resetting + mountd, acts which will require superuser privileges. + Note the numeric IP address of the NFS server and of + the router closest to the the new NetBSD machine, + if the NFS server is not on a network which is + directly attached to the NetBSD machine. + + Once you have done this, you can proceed to the next + step in the installation process, preparing your + system for NetBSD installation. + +To prepare for installing via FTP: + + NOTE: this method of installation is recommended + only for those already familiar with using + the BSD network-manipulation commands and + interfaces. If you aren't, this documentation + should help, but is not intended to be + all-encompassing. + + The preparations for this method of installation + are easy: all you have to do is make sure that + there's some FTP site from which you can retrieve + the NetBSD installation when it's time to do + the install. You should know the numeric IP + address of that site, the numeric IP address of + your nearest router if one is necessary + + Once you have done this, you can proceed to the next + step in the installation process, preparing your + system for NetBSD installation. + +To prepare for installing via a tape: + + To install NetBSD from a tape, you need to somehow + get the NetBSD filesets you wish to install on + your system on to the appropriate kind of tape, + in tar format. + + If you're making the tape on a UN*X system, the easiest + way to do so is: + + tar cvf <tape_device> <files> + + where "<tape_device>" is the name of the tape device + that describes the tape drive you're using (possibly + something like /dev/nrst0, but we make no guarantees 8-). + Under SunOS 5.x, this would be something like /dev/rmt/0mbn. + Again, your mileage may vary. If you can't figure it out, + ask your system administrator. "<files>" are the names + of the "set_name.nnn" files which you want to be placed + on the tape. + + Once you have done this, you can proceed to the next + step in the installation process, preparing your + system for NetBSD installation. diff --git a/distrib/pc532/floppies/Makefile b/distrib/pc532/floppies/Makefile index ecbc7cc99e3..b3fba085312 100644 --- a/distrib/pc532/floppies/Makefile +++ b/distrib/pc532/floppies/Makefile @@ -1,5 +1,5 @@ -# $Id +# $NetBSD: Makefile,v 1.1.1.1.2.1 1995/10/31 06:49:34 phil Exp $ -SUBDIR= inst upgr +SUBDIR= inst # upgr .include <bsd.subdir.mk> diff --git a/distrib/pc532/floppies/Makefile.inc b/distrib/pc532/floppies/Makefile.inc index 7151331df30..138ed9a3ab1 100644 --- a/distrib/pc532/floppies/Makefile.inc +++ b/distrib/pc532/floppies/Makefile.inc @@ -1,4 +1,4 @@ -# $Id: Makefile.inc,v 1.1 1995/10/18 08:37:41 deraadt Exp $ +# $Id: Makefile.inc,v 1.2 1995/11/06 21:28:18 deraadt Exp $ -# Revision is 1.0A -REV= 10A +# Revision is 1.1 +REV= 11 diff --git a/distrib/pc532/floppies/inst-common/dot.commonutils b/distrib/pc532/floppies/inst-common/dot.commonutils index f3a8d65018d..3e991eda76b 100644 --- a/distrib/pc532/floppies/inst-common/dot.commonutils +++ b/distrib/pc532/floppies/inst-common/dot.commonutils @@ -27,7 +27,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -# $Id: dot.commonutils,v 1.1 1995/10/18 08:37:42 deraadt Exp $ +# $Id: dot.commonutils,v 1.2 1995/11/06 21:28:20 deraadt Exp $ # Installation utilites (functions), to get NetBSD installed on # the hard disk. These are meant to be invoked from the shell prompt, @@ -111,7 +111,7 @@ Load_tape() echo -n "continue..." read foo echo "Extracting files from the tape..." - $TAR xvpf --unlink /dev/$which + $TAR --unlink -xvpf /dev/$which echo "Done." } diff --git a/distrib/sets/lists/base/md.pc532 b/distrib/sets/lists/base/md.pc532 index 988a4434349..d1c3c944ba4 100644 --- a/distrib/sets/lists/base/md.pc532 +++ b/distrib/sets/lists/base/md.pc532 @@ -1 +1,19 @@ ./sbin/bim +./usr/lib/libc.so.12.3 +./usr/lib/libcrypt.so.0.0 +./usr/lib/libcurses.so.2.1 +./usr/lib/libedit.so.0.0 +./usr/lib/libg++.so.2.0 +./usr/lib/libgnumalloc.so.0.0 +./usr/lib/libkvm.so.4.0 +./usr/lib/libm.so.0.1 +./usr/lib/libpcap.so.0.0 +./usr/lib/libresolv.so.1.0 +./usr/lib/libskey.so.0.0 +./usr/lib/libtelnet.so.1.0 +./usr/lib/libtermcap.so.0.0 +./usr/lib/libtermlib.so.0.0 +./usr/lib/libutil.so.3.1 +./usr/libexec/ld.so +./usr/mdec/boot +./usr/mdec/zboot.o diff --git a/distrib/sets/lists/base/md.sun3 b/distrib/sets/lists/base/md.sun3 index 032ccfcf919..b3a73a35038 100644 --- a/distrib/sets/lists/base/md.sun3 +++ b/distrib/sets/lists/base/md.sun3 @@ -1,12 +1,13 @@ ./sbin/edlabel -./usr/lib/libc.so.12.0 +./usr/lib/libc.so.12.3 ./usr/lib/libcrypt.so.0.0 ./usr/lib/libcurses.so.2.1 ./usr/lib/libedit.so.0.0 ./usr/lib/libg++.so.2.0 ./usr/lib/libgnumalloc.so.0.0 ./usr/lib/libkvm.so.4.0 -./usr/lib/libm.so.0.0 +./usr/lib/libm.so.0.1 +./usr/lib/libpcap.so.0.0 ./usr/lib/libresolv.so.1.0 ./usr/lib/libskey.so.0.0 ./usr/lib/libtelnet.so.1.0 @@ -17,6 +18,7 @@ ./usr/mdec/bootxx ./usr/mdec/installboot ./usr/mdec/netboot +./usr/mdec/tapeboot ./usr/mdec/ufsboot ./usr/sbin/eeprom ./usr/sbin/screenblank diff --git a/distrib/sets/lists/base/mi b/distrib/sets/lists/base/mi index 4dd0955d658..55c5c8d268b 100644 --- a/distrib/sets/lists/base/mi +++ b/distrib/sets/lists/base/mi @@ -34,6 +34,7 @@ ./bin/test ./dev ./dev/MAKEDEV +./dev/MAKEDEV.local ./dev/fd ./etc ./etc/disklabels @@ -150,6 +151,7 @@ ./usr/bin/dirname ./usr/bin/du ./usr/bin/egrep +./usr/bin/eject ./usr/bin/env ./usr/bin/error ./usr/bin/ex @@ -633,11 +635,13 @@ ./usr/share/man/cat3f ./usr/share/man/cat4 ./usr/share/man/cat4/amiga +./usr/share/man/cat4/atari ./usr/share/man/cat4/hp300 ./usr/share/man/cat4/i386 ./usr/share/man/cat4/mac68k ./usr/share/man/cat4/pc532 ./usr/share/man/cat4/sparc +./usr/share/man/cat4/sun3 ./usr/share/man/cat4/tahoe ./usr/share/man/cat4/vax ./usr/share/man/cat5 @@ -645,11 +649,13 @@ ./usr/share/man/cat7 ./usr/share/man/cat8 ./usr/share/man/cat8/amiga +./usr/share/man/cat8/atari ./usr/share/man/cat8/hp300 ./usr/share/man/cat8/i386 ./usr/share/man/cat8/mac68k ./usr/share/man/cat8/pc532 ./usr/share/man/cat8/sparc +./usr/share/man/cat8/sun3 ./usr/share/man/cat8/tahoe ./usr/share/man/cat8/vax ./usr/share/man/makewhatis.sed @@ -659,6 +665,7 @@ ./usr/share/man/man3f ./usr/share/man/man4 ./usr/share/man/man4/amiga +./usr/share/man/man4/atari ./usr/share/man/man4/hp300 ./usr/share/man/man4/i386 ./usr/share/man/man4/mac68k @@ -672,6 +679,7 @@ ./usr/share/man/man7 ./usr/share/man/man8 ./usr/share/man/man8/amiga +./usr/share/man/man8/atari ./usr/share/man/man8/hp300 ./usr/share/man/man8/i386 ./usr/share/man/man8/mac68k diff --git a/distrib/sets/lists/comp/md.pc532 b/distrib/sets/lists/comp/md.pc532 index ae5c4d7e232..74584aad13d 100644 --- a/distrib/sets/lists/comp/md.pc532 +++ b/distrib/sets/lists/comp/md.pc532 @@ -1,12 +1,16 @@ +./usr/include/ns32k ./usr/include/machine/ansi.h ./usr/include/machine/asm.h +./usr/include/machine/cdefs.h ./usr/include/machine/cpu.h ./usr/include/machine/db_machdep.h +./usr/include/machine/disklabel.h ./usr/include/machine/endian.h ./usr/include/machine/exec.h ./usr/include/machine/float.h ./usr/include/machine/frame.h ./usr/include/machine/icu.h +./usr/include/machine/ieeefp.h ./usr/include/machine/jmpbuf.h ./usr/include/machine/limits.h ./usr/include/machine/mtpr.h @@ -18,10 +22,25 @@ ./usr/include/machine/psl.h ./usr/include/machine/ptrace.h ./usr/include/machine/reg.h +./usr/include/machine/setjmp.h ./usr/include/machine/signal.h ./usr/include/machine/stdarg.h ./usr/include/machine/trap.h ./usr/include/machine/types.h ./usr/include/machine/varargs.h ./usr/include/machine/vmparam.h -./usr/include/ns32k +./usr/lib/libc_pic.a +./usr/lib/libcrypt_pic.a +./usr/lib/libcurses_pic.a +./usr/lib/libedit_pic.a +./usr/lib/libg++_pic.a +./usr/lib/libgnumalloc_pic.a +./usr/lib/libkvm_pic.a +./usr/lib/libm_pic.a +./usr/lib/libpcap_pic.a +./usr/lib/libresolv_pic.a +./usr/lib/libskey_pic.a +./usr/lib/libtelnet_pic.a +./usr/lib/libtermcap_pic.a +./usr/lib/libutil_pic.a +./usr/lib/scrt0.o diff --git a/distrib/sets/lists/comp/md.sun3 b/distrib/sets/lists/comp/md.sun3 index bfa816d4385..e8e33944e69 100644 --- a/distrib/sets/lists/comp/md.sun3 +++ b/distrib/sets/lists/comp/md.sun3 @@ -28,6 +28,7 @@ ./usr/include/machine/cpufunc.h ./usr/include/machine/db_machdep.h ./usr/include/machine/disklabel.h +./usr/include/machine/dvma.h ./usr/include/machine/eeprom.h ./usr/include/machine/endian.h ./usr/include/machine/exec.h @@ -71,6 +72,7 @@ ./usr/lib/libgnumalloc_pic.a ./usr/lib/libkvm_pic.a ./usr/lib/libm_pic.a +./usr/lib/libpcap_pic.a ./usr/lib/libresolv_pic.a ./usr/lib/libskey_pic.a ./usr/lib/libtelnet_pic.a diff --git a/distrib/sets/lists/etc/md.sun3 b/distrib/sets/lists/etc/md.sun3 index e1bb3e31e7c..9e44b9ce2ae 100644 --- a/distrib/sets/lists/etc/md.sun3 +++ b/distrib/sets/lists/etc/md.sun3 @@ -1 +1,2 @@ ./etc/fstab.nfs +./etc/fstab.sd0 diff --git a/distrib/sets/lists/man/md_share b/distrib/sets/lists/man/md_share index ef08713b3d5..8c94a011dde 100644 --- a/distrib/sets/lists/man/md_share +++ b/distrib/sets/lists/man/md_share @@ -19,6 +19,8 @@ ./usr/share/man/cat4/amiga/ser.0 ./usr/share/man/cat4/amiga/wesc.0 ./usr/share/man/cat4/amiga/zssc.0 +./usr/share/man/cat4/atari/floppy.0 +./usr/share/man/cat4/atari/ms.0 ./usr/share/man/cat4/hp300/autoconf.0 ./usr/share/man/cat4/hp300/cons.0 ./usr/share/man/cat4/hp300/ct.0 @@ -79,7 +81,6 @@ ./usr/share/man/cat4/sparc/le.0 ./usr/share/man/cat4/sparc/mem.0 ./usr/share/man/cat4/sparc/openprom.0 -./usr/share/man/cat4/sun3 ./usr/share/man/cat4/sun3/bwtwo.0 ./usr/share/man/cat4/sun3/cgfour.0 ./usr/share/man/cat4/sun3/cgtwo.0 @@ -154,6 +155,8 @@ ./usr/share/man/cat4/vax/vv.0 ./usr/share/man/cat8/amiga/MAKEDEV.0 ./usr/share/man/cat8/amiga/makedev.0 +./usr/share/man/cat8/atari/MAKEDEV.0 +./usr/share/man/cat8/atari/makedev.0 ./usr/share/man/cat8/boot_hp300.0 ./usr/share/man/cat8/boot_i386.0 ./usr/share/man/cat8/boot_mac68k.0 @@ -170,7 +173,6 @@ ./usr/share/man/cat8/i386/makedev.0 ./usr/share/man/cat8/sparc/MAKEDEV.0 ./usr/share/man/cat8/sparc/makedev.0 -./usr/share/man/cat8/sun3 ./usr/share/man/cat8/sun3/MAKEDEV.0 ./usr/share/man/cat8/sun3/makedev.0 ./usr/share/man/cat8/tahoe/MAKEDEV.0 diff --git a/distrib/sparc/install.sh b/distrib/sparc/install.sh index 68f1e320aed..829e18453b9 100644 --- a/distrib/sparc/install.sh +++ b/distrib/sparc/install.sh @@ -1,21 +1,1199 @@ #!/bin/sh -# $Id: install.sh,v 1.1 1995/10/18 08:37:49 deraadt Exp $ -umask 0 - -TAR="base.tar.gz comp.tar.gz etc.tar.gz games.tar.gz man.tar.gz - misc.tar.gz secr.tar.gz text.tar.gz" - -for i in $TAR -do - if [ -f $i ]; then - echo -n $i... - cat $i | gzip -d | (cd /mnt; gtar xvpf -) - else - echo skipping $i because you do not want it - fi +# $NetBSD: install.sh,v 1.2.2.1 1995/11/01 21:26:21 pk Exp $ +# +# Copyright (c) 1995 Jason R. Thorpe. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed for the NetBSD Project +# by Jason R. Thorpe. +# 4. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# NetBSD installation script. +# In a perfect world, this would be a nice C program, with a reasonable +# user interface. + +VERSION=1.1 +ROOTDISK="" # filled in below +FILESYSTEMS="/tmp/filesystems" # used thoughout +FQDN="" # domain name + +trap "umount /tmp > /dev/null 2>&1" 0 + +getresp() { + read resp + if [ "X$resp" = "X" ]; then + resp=$1 + fi +} + +isin() { +# test the first argument against the remaining ones, return succes on a match + _a=$1; shift + while [ $# != 0 ]; do + if [ "$_a" = "$1" ]; then return 0; fi + shift + done + return 1 +} + +rmel() { +# remove first argument from list formed by the remaining arguments + _a=$1; shift + while [ $# != 0 ]; do + if [ "$_a" != "$1" ]; then echo "$1"; fi + shift + done +} + +twiddle() +{ + while : ; do + sleep 1; echo -n "/"; + sleep 1; echo -n "-"; + sleep 1; echo -n "\\"; + sleep 1; echo -n "|"; + done > /dev/tty & echo $! +} + +set_terminal() { + echo -n "Specify terminal type [sun]: " + getresp "sun" + TERM="$resp" + export TERM +} + +# +# machine dependent section +# +md_get_diskdevs() { + # return available disk devices + dmesg | egrep "(^sd[0-9]:|^x[dy][0-9]:)" | cut -d" " -f1 | sort | uniq +} + +md_get_cddevs() { + # return available CDROM devices + dmesg | grep "^sd" | grep "rev" | cut -d" " -f1 +} + +md_get_ifdevs() { + # return available network devices + dmesg | egrep "(^le[0-9]|^ie[0-9])" | cut -d" " -f1 +} + +md_installboot() { + echo "Installing boot block..." + /usr/mdec/binstall -v ffs /mnt +} + + +do_mfs_mount() { + umount $1 > /dev/null 2>&1 + if ! mount_mfs -s 2048 swap $1 ; then + cat << \__mfs_failed_1 + +FATAL ERROR: Can't mount the memory filesystem. + +__mfs_failed_1 + exit + fi + + # Bleh. Give mount_mfs a chance to DTRT. + sleep 2 +} + +getrootdisk() { + cat << \__getrootdisk_1 + +The installation program needs to know which disk to consider +the root disk. Note the unit number may be different than +the unit number you used in the standalone installation +program. + +Available disks are: + +__getrootdisk_1 + _DKDEVS=`md_get_diskdevs` + echo "$_DKDEVS" + echo "" + echo -n "Which disk is the root disk? " + getresp "" + if isin $resp $_DKDEVS ; then + ROOTDISK="$resp" + else + echo "" + echo "The disk $resp does not exist." + ROOTDISK="" + fi +} + +checkfordisklabel() { + disklabel $1 > /dev/null 2> /tmp/checkfordisklabel + if grep "no disk label" /tmp/checkfordisklabel; then + rval="1" + elif grep "disk label corrupted" /tmp/checkfordisklabel; then + rval="2" + else + rval="0" + fi + + rm -f /tmp/checkfordisklabel +} + +labelmoredisks() { + cat << \__labelmoredisks_1 + +You may label the following disks: + +__labelmoredisks_1 + _DKDEV=`rmel "${ROOTDISK}"` + echo $_DKDEVS + echo "" + echo -n "Label which disk? [done] " + getresp "done" + case "$resp" in + "done") + ;; + + *) + if echo "$_DKDEVS" | grep "^$resp" > /dev/null ; then + disklabel -e $resp + else + echo "" + echo "The disk $resp does not exist." + fi + ;; + esac +} + +addhostent() { + # $1 - IP address + # $2 - symbolic name + + # Create an entry in the hosts table. If no host table + # exists, create one. If the IP address already exists, + # replace it's entry. + if [ ! -f /tmp/hosts ]; then + echo "127.0.0.1 localhost" > /tmp/hosts + fi + + if grep "^$1 " /tmp/hosts > /dev/null; then + grep -v "^$1 " /tmp/hosts > /tmp/hosts.new + mv /tmp/hosts.new /tmp/hosts + fi + + echo "$1 $2 $2.$FQDN" >> /tmp/hosts +} + +addifconfig() { + # $1 - interface name + # $2 - interface symbolic name + # $3 - interface IP address + # $4 - interface netmask + + # Create a hostname.* file for the interface. + echo "inet $2 $4" > /tmp/hostname.$1 + + addhostent $3 $2 +} + + +configurenetwork() { + cat << \__configurenetwork_1 + +You may configure the following network interfaces: + +__configurenetwork_1 + + _IFS=`md_get_ifdevs` + echo $_IFS + echo "" + echo -n "Configure which interface? [done] " + getresp "done" + case "$resp" in + "done") + ;; + + *) + if isin $resp $_IFS ; then + _interface_name=$resp + + # remove from list + _IFS=`rmel $resp "$_IFS"` + + # Get IP address + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "IP address? " + getresp "" + _interface_ip=$resp + done + + # Get symbolic name + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Symbolic name? " + getresp "" + _interface_symname=$resp + done + + # Get netmask + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Netmask? " + getresp "" + _interface_mask=$resp + done + + # Configure the interface. If it + # succeeds, add it to the permanent + # network configuration info. + ifconfig ${_interface_name} down + if ifconfig ${_interface_name} inet \ + ${_interface_ip} \ + netmask ${_interface_mask} up ; then + addifconfig \ + ${_interface_name} \ + ${_interface_symname} \ + ${_interface_ip} \ + ${_interface_mask} + fi + else + echo "" + echo "The interface $resp does not exist." + fi + ;; + esac +} + +install_ftp() { + # Get several parameters from the user, and create + # a shell script that directs the appropriate + # commands into ftp. + cat << \__install_ftp_1 + +This is an automated ftp-based installation process. You will be asked +several questions. The correct set of commands will be placed in a script +that will be fed to ftp(1). + +__install_ftp_1 + # Get server IP address + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Server IP? [${_ftp_server_ip}] " + getresp "${_ftp_server_ip}" + _ftp_server_ip=$resp + done + + # Get server directory + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Server directory? [${_ftp_server_dir}] " + getresp "${_ftp_server_dir}" + _ftp_server_dir=$resp + done + + # Get login name + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Login? [${_ftp_server_login}] " + getresp "${_ftp_server_login}" + _ftp_server_login=$resp + done + + # Get password + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Password? [${_ftp_server_password}] " + getresp "${_ftp_server_password}" + _ftp_server_password=$resp + done + + # Get list of files for mget. + cat << \__install_ftp_2 + +You will now be asked for files to extract. Enter one file at a time. +When you are done entering files, enter 'done'. + +__install_ftp_2 + echo "#!/bin/sh" > /tmp/ftp-script.sh + echo "cd /mnt" >> /tmp/ftp-script.sh + echo "ftp -i -n $_ftp_server_ip << \__end_commands" >> \ + /tmp/ftp-script.sh + echo "user $_ftp_server_login $_ftp_server_password" >> \ + /tmp/ftp-script.sh + echo "bin" >> /tmp/ftp-script.sh + echo "cd $_ftp_server_dir" >> /tmp/ftp-script.sh + + resp="" # force one interation + while [ "X${resp}" != X"done" ]; do + echo -n "File? [done] " + getresp "done" + if [ "X${resp}" = X"done" ]; then + break + fi + + _ftp_file=`echo ${resp} | awk '{print $1}'` + echo "get ${_ftp_file} |\"tar -zxvpf -\"" >> \ + /tmp/ftp-script.sh + done + + echo "quit" >> /tmp/ftp-script.sh + echo "__end_commands" >> /tmp/ftp-script.sh + + sh /tmp/ftp-script.sh + rm -f /tmp/ftp-script.sh + echo "Extraction complete." +} + +install_common_nfs_cdrom() { + # $1 - directory containing file + + # Get the name of the file. + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "File name? " + getresp "" + done + _common_filename="/mnt2/$1/$resp" + + # Ensure file exists + if [ ! -f $_common_filename ]; then + echo "File $_common_filename does not exist. Check to make" + echo "sure you entered the information properly." + return + fi + + # Extract file + cat $_common_filename | (cd /mnt; tar -zxvpf -) + echo "Extraction complete." +} + +install_cdrom() { + # Get the cdrom device info + cat << \__install_cdrom_1 + +The following SCSI disk or disk-like devices are installed on your system; +please select the CD-ROM device containing the installation media: + +__install_cdrom_1 + _CDDEVS=`md_get_cddevs` + echo "$_CDDEVS" + echo "" + echo -n "Which is the CD-ROM with the installation media? [abort] " + getresp "abort" + case "$resp" in + abort) + echo "Aborting." + return + ;; + + *) + if isin $resp $_CDDEVS ; then + _cdrom_drive=$resp + else + echo "" + echo "The CD-ROM $resp does not exist." + echo "Aborting." + return + fi + ;; + esac + + # Get partition + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Partition? [c] " + getresp "c" + case "$resp" in + [a-h]) + _cdrom_partition=$resp + ;; + + *) + echo "Invalid response: $resp" + resp="" # force loop to repeat + ;; + esac + done + + # Ask for filesystem type + cat << \__install_cdrom_2 + +There are two CD-ROM filesystem types currently supported by this program: + 1) ISO-9660 (cd9660) + 2) Berkeley Fast Filesystem (ffs) + +__install_cdrom_2 + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Which filesystem type? [cd9660] " + getresp "cd9660" + case "$resp" in + cd9660|ffs) + _cdrom_filesystem=$resp + ;; + + *) + echo "Invalid response: $resp" + resp="" # force loop to repeat + ;; + esac + done + + # Mount the CD-ROM + if ! mount -t ${_cdrom_filesystem} -o ro \ + /dev/${_cdrom_drive}${_cdrom_partition} /mnt2 ; then + echo "Cannot mount CD-ROM drive. Aborting." + return + fi + + # Get the directory where the file lives + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo "Enter the directory relative to the mount point that" + echo -n "contains the file. [${_cdrom_directory}] " + getresp "${_cdrom_directory}" + done + _cdrom_directory=$resp + + install_common_nfs_cdrom ${_cdrom_directory} + umount -f /mnt2 > /dev/null 2>&1 +} + +install_nfs() { + # Get the IP address of the server + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Server IP address? [${_nfs_server_ip}] " + getresp "${_nfs_server_ip}" + done + _nfs_server_ip=$resp + + # Get server path to mount + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Filesystem on server to mount? [${_nfs_server_path}] " + getresp "${_nfs_server_path}" + done + _nfs_server_path=$resp + + # Determine use of TCP + echo -n "Use TCP transport (only works with capable NFS server)? [n] " + getresp "n" + case "$resp" in + y*|Y*) + _nfs_tcp="-T" + ;; + + *) + _nfs_tcp="" + ;; + esac + + # Mount the server + mkdir /mnt2 > /dev/null 2>&1 + if ! mount_nfs $_nfs_tcp ${_nfs_server_ip}:${_nfs_server_path} \ + /mnt2 ; then + echo "Cannot mount NFS server. Aborting." + return + fi + + # Get the directory where the file lives + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo "Enter the directory relative to the mount point that" + echo -n "contains the file. [${_nfs_directory}] " + getresp "${_nfs_directory}" + done + _nfs_directory=$resp + + install_common_nfs_cdrom ${_nfs_directory} + umount -f /mnt2 > /dev/null 2>&1 +} + +install_tape() { + # Get the name of the tape from the user. + cat << \__install_tape_1 + +The installation program needs to know which tape device to use. Make +sure you use a "no rewind on close" device. + +__install_tape_1 + _tape=`basename $TAPE` + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Name of tape device? [${_tape}]" + getresp "${_tape}" + done + _tape=`basename $resp` + TAPE="/dev/${_tape}" + if [ ! -c $TAPE ]; then + echo "$TAPE does not exist or is not a character special file." + echo "Aborting." + return + fi + export TAPE + + # Rewind the tape device + echo -n "Rewinding tape..." + if ! mt rewind ; then + echo "$TAPE may not be attached to the system or may not be" + echo "a tape device. Aborting." + return + fi + echo "done." + + # Get the file number + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "File number? " + getresp "" + case "$resp" in + [1-9]*) + _nskip=`expr $resp - 1` + ;; + + *) + echo "Invalid file number ${resp}." + resp="" # fore loop to repeat + ;; + esac + done + + # Skip to correct file. + echo -n "Skipping to source file..." + if [ "X${_nskip}" != X"0" ]; then + if ! mt fsf $_nskip ; then + echo "Could not skip $_nskip files. Aborting." + return + fi + fi + echo "done." + + cat << \__install_tape_2 + +There are 2 different ways the file can be stored on tape: + + 1) an image of a gzipped tar file + 2) a standard tar image + +__install_tape_2 + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + getresp "1" + case "$resp" in + 1) + ( + cd /mnt + dd if=$TAPE | tar -zxvpf - + ) + ;; + + 2) + ( + cd /mnt + tar -zxvpf $TAPE + ) + ;; + + *) + echo "Invalid response: $resp." + resp="" # force loop to repeat + ;; + esac + done + echo "Extraction complete." +} + +get_timezone() { + local _a +cat << \__get_timezone_1 + +Select a time zone for your location. Timezones are represented on the +system by a directory structure rooted in "/usr/share/timezone". Most +timezones can be selected by entering a token like "MET" or "GMT-6". +Other zones are grouped by continent, with detailed zone information +separated by a slash ("/"), e.g. "US/Pacific". + +To get a listing of what's available in /usr/share/timezone, enter "?" +at the first prompt below. + +__get_timezone_1 + if [ X$TZ = X ]; then + TZ=`ls -l /etc/timezone 2>/dev/null | awk '{print $NF}' | + sed -e 's?/usr/share/timezone/??'` + fi + while :; do + echo -n "What timezone are you in [$TZ]? " + getresp "$TZ" + case "$resp" in + "") + echo "Timezone defaults to GMT" + TZ="GMT" + break; + ;; + "?") + ls /usr/share/zoneinfo + ;; + *) + _a=$resp + if [ -d /usr/share/zoneinfo/$_a ]; then + echo -n "There are several timezones available" + echo " within '$_a'" + echo -n "Select a sub-timezone: " + getresp "" + _a=${_a}/${resp} + fi + if [ -f /usr/share/zoneinfo/$_a ]; then + TZ="$_a" + echo "You have selected timezone "$_a". + break 2 + fi + echo "'/usr/share/zoneinfo/$_a' is not a valid timezone on this system." + ;; + esac + done +} + +echo "" +echo "Welcome to the NetBSD/sparc ${VERSION} installation program." +cat << \__welcome_banner_1 + +This program is designed to help you put NetBSD on your disk, +in a simple and rational way. You'll be asked several questions, +and it would probably be useful to have your disk's hardware +manual, the installation notes, and a calculator handy. + +As with anything which modifies your disk's contents, this +program can cause SIGNIFICANT data loss, and you are advised +to make sure your data is backed up before beginning the +installation process. + +Default answers are displyed in brackets after the questions. +You can hit Control-C at any time to quit, but if you do so at a +prompt, you may have to hit return. Also, quitting in the middle of +installation may leave your system in an inconsistent state. + +__welcome_banner_1 + +echo -n "Proceed with installation? [n] " +getresp "n" +case "$resp" in + y*|Y*) + echo "Cool! Let's get to it..." + ;; + *) + cat << \__welcome_banner_2 + +OK, then. Enter 'halt' at the prompt to halt the machine. Once the +machine has halted, power-cycle the system to load new boot code. + +__welcome_banner_2 + exit + ;; +esac + +set_terminal + +get_timezone + +# We don't like it, but it sure makes a few things a lot easier. +##do_mfs_mount "/tmp" + +# Install the shadowed disktab file; lets us write to it for temporary +# purposes without mounting the miniroot read-write. +##cp /etc/disktab.shadow /tmp/disktab.shadow + +while [ "X${ROOTDISK}" = "X" ]; do + getrootdisk +done + +# Make sure there's a disklabel there. If there isn't, puke after +# disklabel prints the error message. +checkfordisklabel ${ROOTDISK} +case $rval in + 1) + cat << \__disklabel_not_present_1 + +FATAL ERROR: There is no disklabel present on the root disk! You must +label the disk before continuing. + +__disklabel_not_present_1 + exit + ;; + + 2) + cat << \__disklabel_corrupted_1 + +FATAL ERROR: The disklabel on the root disk is corrupted! You must +re-label the disk before continuing. + +__disklabel_corrupted_1 + exit + ;; + + *) + ;; +esac + +# Give the user the opportinuty to edit the root disklabel. +cat << \__disklabel_notice_1 + +You have already placed a disklabel onto the target root disk. +However, due to the limitations of the standalone program used +you may want to edit that label to change partition type information. +You will be given the opportunity to do that now. Note that you may +not change the size or location of any presently open partition. + +__disklabel_notice_1 +echo -n "Do you wish to edit the root disklabel? [y] " +getresp "y" +case "$resp" in + y*|Y*) + disklabel -W ${ROOTDISK} + disklabel -e ${ROOTDISK} + ;; + + *) + ;; +esac + +cat << \__disklabel_notice_2 + +You will now be given the opportunity to place disklabels on any additional +disks on your system. +__disklabel_notice_2 + +resp="X" # force at least one iteration +while [ "X$resp" != X"done" ]; do + labelmoredisks +done + +# Assume partition 'a' of $ROOTDISK is for the root filesystem. Loop and +# get the rest. +# XXX ASSUMES THAT THE USER DOESN'T PROVIDE BOGUS INPUT. +cat << \__get_filesystems_1 + +You will now have the opportunity to enter filesystem information. +You will be prompted for device name and mount point (full path, +including the prepending '/' character). + +Note that these do not have to be in any particular order. You will +be given the opportunity to edit the resulting 'fstab' file before +any of the filesystems are mounted. At that time you will be able +to resolve any filesystem order dependencies. + +__get_filesystems_1 + +echo "The following will be used for the root filesystem:" +echo " ${ROOTDISK}a /" + +echo "${ROOTDISK}a /" > ${FILESYSTEMS} + +resp="X" # force at least one iteration +while [ "X$resp" != X"done" ]; do + echo "" + echo -n "Device name? [done] " + getresp "done" + case "$resp" in + done) + ;; + + *) + _device_name=`basename $resp` + + # force at least one iteration + _first_char="X" + while [ "X${_first_char}" != X"/" ]; do + echo -n "Mount point? " + getresp "" + _mount_point=$resp + if [ "X${_mount_point}" = X"/" ]; then + # Invalid response; no multiple roots + _first_char="X" + else + _first_char=`echo ${_mount_point} | \ + cut -c 1` + fi + done + echo "${_device_name} ${_mount_point}" >> \ + ${FILESYSTEMS} + resp="X" # force loop to repeat + ;; + esac +done + +echo "" +echo "You have configured the following devices and mount points:" +echo "" +cat ${FILESYSTEMS} +echo "" +echo "Filesystems will now be created on these devices. If you made any" +echo -n "mistakes, you may edit this now. Edit? [n] " +getresp "n" +case "$resp" in + y*|Y*) + vi ${FILESYSTEMS} + ;; + *) + ;; +esac + +# Loop though the file, place filesystems on each device. +echo "Creating filesystems..." +( + while read line; do + _device_name=`echo $line | awk '{print $1}'` + newfs /dev/r${_device_name} + echo "" + done +) < ${FILESYSTEMS} + +# Get network configuration information, and store it for placement in the +# root filesystem later. +cat << \__network_config_1 +You will now be given the opportunity to configure the network. This will +be useful if you need to transfer the installation sets via FTP or NFS. +Even if you choose not to transfer installation sets that way, this +information will be preserved and copied into the new root filesystem. + +Note, enter all symbolic host names WITHOUT the domain name appended. +I.e. use 'hostname' NOT 'hostname.domain.name'. + +__network_config_1 +echo -n "Configure the network? [y] " +getresp "y" +case "$resp" in + y*|Y*) + echo -n "Enter system hostname: " + resp="" # force at least one iteration + while [ "X${resp}" = X"" ]; do + getresp "" + done + hostname $resp + echo $resp > /tmp/myname + + echo -n "Enter DNS domain name: " + resp="" # force at least one iteration + while [ "X${resp}" = X"" ]; do + getresp "" + done + FQDN=$resp + + resp="" # force at least one iteration + while [ "X${resp}" != X"done" ]; do + configurenetwork + done + + echo -n "Enter IP address of default route: [none] " + getresp "none" + if [ "X${resp}" != X"none" ]; then + route delete default > /dev/null 2>&1 + if route add default $resp > /dev/null ; then + echo $resp > /tmp/mygate + fi + fi + + echo "" + echo "The host table is as follows:" + echo "" + cat /tmp/hosts + echo "" + echo "You may want to edit the host table in the event that" + echo "you need to mount an NFS server." + echo -n "Would you like to edit the host table? [n] " + getresp "n" + case "$resp" in + y*|Y*) + vi /tmp/hosts + ;; + + *) + ;; + esac + + cat << \__network_config_2 + +You will now be given the opportunity to escape to the command shell to +do any additional network configuration you may need. This may include +adding additional routes, if needed. In addition, you might take this +opportunity to redo the default route in the event that it failed above. +If you do change the default route, and wish for that change to carry over +to the installed system, execute the following command at the shell +prompt: + + echo <ip_address_of_gateway> > /tmp/mygate + +where <ip_address_of_gateway> is the IP address of the default router. + +__network_config_2 + echo -n "Escape to shell? [n] " + getresp "n" + case "$resp" in + y*|Y*) + echo "Type 'exit' to return to install." + sh + ;; + + *) + ;; + esac + ;; + *) + ;; +esac + +# Now that the network has been configured, it is safe to configure the +# fstab. +awk '{ + if ($2 == "/") + printf("/dev/%s %s ffs rw 1 1\n", $1, $2) + else + printf("/dev/%s %s ffs rw 1 2\n", $1, $2) +}' < ${FILESYSTEMS} > /tmp/fstab + +echo "The fstab is configured as follows:" +echo "" +cat /tmp/fstab +cat << \__fstab_config_1 + +You may wish to edit the fstab. For example, you may need to resolve +dependencies in the order which the filesystems are mounted. You may +also wish to take this opportunity to place NFS mounts in the fstab. +This would be especially useful if you plan to keep '/usr' on an NFS +server. + +__fstab_config_1 +echo -n "Edit the fstab? [n] " +getresp "n" +case "$resp" in + y*|Y*) + vi /tmp/fstab + ;; + + *) + ;; +esac + +# Now that the 'real' fstab is configured, we munge it into a 'shadow' +# fstab which we'll use for mounting and unmounting all of the target +# filesystems relative to /mnt. Mount all filesystems. +awk '{ + if ($2 == "/") + printf("%s /mnt %s %s %s %s\n", $1, $3, $4, $5, $6) + else + printf("%s /mnt%s %s %s %s %s\n", $1, $2, $3, $4, $5, $6) +}' < /tmp/fstab > /tmp/fstab.shadow + +echo "" + +# Must mount filesystems manually, one at a time, so we can make sure the +# mount points exist. +( + while read line; do + _dev=`echo $line | awk '{print $1}'` + _mp=`echo $line | awk '{print $2}'` + _fstype=`echo $line | awk '{print $3}'` + _opt=`echo $line | awk '{print $4}'` + + # If not the root filesystem, make sure the mount + # point is present. + if [ "X${_mp}" != X"/mnt" ]; then + mkdir -p $_mp + fi + + # Mount the filesystem. If the mount fails, exit + # with an error condition to tell the outer + # layer to bail. + if ! mount -v -t $_fstype -o $_opt $_dev $_mp ; then + # error message displayed by mount + exit 1 + fi + done +) < /tmp/fstab.shadow + +if [ "X${?}" != X"0" ]; then + cat << \__mount_filesystems_1 + +FATAL ERROR: Cannot mount filesystems. Double-check your configuration +and restart the installation process. + +__mount_filesystems_1 + exit +fi + +# Ask the user which media to load the distribution from. +cat << \__install_sets_1 + +It is now time to extract the installation sets onto the disk. +Make sure The sets are either on a local device (i.e. tape, CD-ROM) or on a +network server. + +__install_sets_1 + +ALLSETS="base comp etc games man misc text" +UPGRSETS="base comp games man misc text" +RELDIR= + +if [ -f $RELDIR/base.tar.gz ]; then + echo -n "Install from sets in the current root filesystem? [y] " + getresp "y" + case "$resp" in + y*|Y*) + for _f in $ALLSETS; do + echo -n "Install $_f ? [y]" + getresp "y" + case "$resp" in + y*|Y*) + cat $RELDIR/${_f}.tar.gz | + (cd /mnt; tar -zxvpf -) + _yup=X + ;; + *) + ;; + esac + echo "Extraction complete." + done + resp="$_yup" + ;; + *) + resp="" + ;; + esac +else + # Go on prodding for alternate locations + resp="" # force at least one iteration +fi + +while [ "X${resp}" = X"" ]; do + echo -n "Install from (f)tp, (t)ape, (C)D-ROM, or (N)FS? [f] " + getresp "f" + case "$resp" in + f*|F*) + install_ftp + ;; + + t*|T*) + install_tape + ;; + + c*|C*) + install_cdrom + ;; + + n*|N*) + install_nfs + ;; + + *) + echo "Invalid response: $resp" + resp="" + ;; + esac + + # Give the user the opportunity to extract more sets. They don't + # necessarily have to come from the same media. + echo "" + echo -n "Extract more sets? [n] " + getresp "n" + case "$resp" in + y*|Y*) + # Force loop to repeat + resp="" + ;; + + *) + ;; + esac done -echo -cp netbsd.id3_scsi /mnt/netbsd -chmod 640 /mnt/netbsd; chown root.kmem /mnt/netbsd -cd /mnt/dev; ./MAKEDEV all -mv /mnt/etc/fstab.sd /mnt/etc/fstab + +# Copy in configuration information and make devices in target root. +( + cd /tmp + for file in fstab hostname.* hosts myname mygate; do + if [ -f $file ]; then + echo "Copying $file..." + cp $file /mnt/etc/$file + fi + done + + echo "Installing timezone link for $TZ ..." + rm -f /mnt/etc/localtime + ln -s /usr/share/zoneinfo/$TZ /mnt/etc/localtime + + echo -n "Making devices..." + pid=`twiddle` + cd /mnt/dev + sh MAKEDEV all + kill $pid + echo "done." + + echo "Copying kernel..." + cp /netbsd /mnt/netbsd + + md_installboot ${ROOTDISK} +) + +# Unmount all filesystems and check their integrity. +( + _devs="" + _mps="" + # maintain reverse order + while read line; do + _devs="`echo $line | awk '{print $1}'` ${_devs}" + _mps="`echo $line | awk '{print $2}'` ${_mps}" + done + echo -n "Umounting filesystems... " + for _mp in ${_mps}; do + echo -n "${_mp} " + umount ${_mp} + done + echo "Done." + + echo "Checking filesystem integrity..." + for _dev in ${_devs}; do + echo "${_dev}" + fsck -f ${_dev} + done + echo "Done." +) < /tmp/fstab.shadow + +##umount -a +##echo "Checking filesystem integrity..." +##fsck -pf + +#md_installboot_xxx + +cat << \__congratulations_1 + +CONGRATULATIONS! You have successfully installed NetBSD on your disk! +To boot the installed system, enter halt at the command prompt. Once the +system has halted, reset the machine and boot from the disk. + +__congratulations_1 + +# ALL DONE! +exit diff --git a/distrib/sun3/common/dot.cmnutils b/distrib/sun3/common/dot.cmnutils deleted file mode 100644 index cea610a4478..00000000000 --- a/distrib/sun3/common/dot.cmnutils +++ /dev/null @@ -1,110 +0,0 @@ -# -# $NetBSD: dot.cmnutils,v 1.1.1.1 1995/10/08 23:07:50 gwr Exp $ -# -# Copyright (c) 1994 Christopher G. Demetriou -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. All advertising materials mentioning features or use of this software -# must display the following acknowledgement: -# This product includes software developed by Christopher G. Demetriou. -# 4. The name of the author may not be used to endorse or promote products -# derived from this software without specific prior written permission -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# Installation utilites (functions), to get NetBSD installed on -# the hard disk. These are meant to be invoked from the shell prompt, -# by people installing NetBSD. - -Set_tmp_dir() -{ - def_tmp_dir=`pwd` - if [ "$def_tmp_dir" = "/" -o "$def_tmp_dir" = "/mnt" ]; then - def_tmp_dir=/mnt/usr/distrib - fi - - echo -n "What directory should be used to find and/or store " - echo "installtion" - echo -n "files? [$def_tmp_dir] " - read tmp_dir - if [ "$tmp_dir" = "" ]; then - tmp_dir=$def_tmp_dir - fi - if [ ! -d "$tmp_dir" ]; then - /bin/rm -rf $tmp_dir - mkdir -p $tmp_dir - fi -} - -Tmp_dir() -{ - if [ "$tmp_dir" = "" ]; then - Set_tmp_dir - fi - cd $tmp_dir -} - -Load_tape() -{ - Tmp_dir - echo -n "Which tape drive will you be using? [rst0] " - read which - if [ "X$which" = "X" ]; then - which=rst0 - fi - echo -n "Insert the tape into the tape drive and hit return to " - echo -n "continue..." - read foo - echo "Extracting files from the tape..." - tar xvfp /dev/$which - echo "Done." -} - -Extract() -{ - Tmp_dir - echo -n "Would you like to list the files as they're extracted? [n] " - read verbose - case $verbose in - y*|Y*) - tarverbose=v - ;; - *) - tarverbose= - ;; - esac - echo -n "Are you installing a '-current' snapshot? [n] " - read snapshot - case $snapshot in - y*|Y*) - snapshot=y - ;; - *) - snapshot=n - ;; - esac - if [ $snapshot = n ] - then - cat "$1".??? | gunzip | (cd / ; tar xfp$tarverbose -) - else - cat "$1".tar.gz | gunzip | (cd /mnt ; tar xfp$tarverbose -) - fi -} diff --git a/distrib/sun3/common/install.sh b/distrib/sun3/common/install.sh index c687b726bb3..80233095657 100644 --- a/distrib/sun3/common/install.sh +++ b/distrib/sun3/common/install.sh @@ -1,8 +1,7 @@ #!/bin/sh +# $NetBSD: install.sh,v 1.2.2.1 1995/11/02 00:07:25 gwr Exp $ # -# $NetBSD: install.sh,v 1.1.1.1 1995/10/08 23:07:50 gwr Exp $ -# -# Copyright (c) 1994 Christopher G. Demetriou +# Copyright (c) 1995 Jason R. Thorpe. # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -15,7 +14,8 @@ # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: -# This product includes software developed by Christopher G. Demetriou. +# This product includes software developed for the NetBSD Project +# by Jason R. Thorpe. # 4. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission # @@ -35,11 +35,16 @@ # In a perfect world, this would be a nice C program, with a reasonable # user interface. -FSTABDIR=/mnt/etc # /mnt/etc -#DONTDOIT=echo +VERSION=1.0A +ROOTDISK="" # filled in below +FILESYSTEMS="/tmp/filesystems" # used thoughout +FQDN="" # domain name -VERSION=1.0 -FSTAB=${FSTABDIR}/fstab +trap "umount /tmp > /dev/null 2>&1" 0 + +# +# Functions... +# getresp() { read resp @@ -48,233 +53,973 @@ getresp() { fi } -getvar() { - echo $(eval $(echo "echo \$$1")) +getrootdisk() { + cat << \__getrootdisk_1 + +The installation program needs to know which disk to consider +the root disk. Note the unit number may be different than +the unit number you used in the standalone installation +program. + +Available disks are: + +__getrootdisk_1 + dmesg | grep "^rd" | grep "slave" + dmesg | grep "^sd" | grep "slave" + echo "" + echo -n "Which disk is the root disk? " + getresp "" + if dmesg | grep "^$resp " | grep "slave" > /dev/null ; then + ROOTDISK="$resp" + else + echo "" + echo "The disk $resp does not exist." + ROOTDISK="" + fi } -shiftvar() { - local - var - var="$1" - list="$(getvar $var)" - set -- $list - shift - setvar $var "$*" +checkfordisklabel() { + disklabel -r $1 > /dev/null 2> /tmp/checkfordisklabel + if grep "no disk label" /tmp/checkfordisklabel; then + rval="1" + elif grep "disk label corrupted" /tmp/checkfordisklabel; then + rval="2" + else + rval="0" + fi + + rm -f /tmp/checkfordisklabel } -getparts() { - disklabel $1 2>/dev/null | sed -e '/^[ ][ ][ad-p]/!d' | - sed -e 's,^[ ]*\([a-p]\):[ ]*[0-9]*[ ]*[0-9]*[ ][ ]*\([a-zA-Z0-9.]*\).*,\1 \2,' | - sed -e ':a - N;${s/\n/ /g;p;d;} - ba' +labelmoredisks() { + cat << \__labelmoredisks_1 + +You may label the following disks: + +__labelmoredisks_1 + dmesg | grep "^rd" | grep "slave" | grep -v "${ROOTDISK} " + dmesg | grep "^sd" | grep "slave" | grep -v "${ROOTDISK} " + echo "" + echo -n "Label which disk? [done] " + getresp "done" + case "$resp" in + done) + ;; + + *) + if dmesg | grep "^$resp " | grep "slave" \ + > /dev/null ; then + # XXX CODE ME + echo "Yup, it exists." + else + echo "" + echo "The disk $resp does not exist." + fi + ;; + esac +} + +addhostent() { + # $1 - IP address + # $2 - symbolic name + + # Create an entry in the hosts table. If no host table + # exists, create one. If the IP address already exists, + # replace it's entry. + if [ ! -f /tmp/hosts ]; then + echo "127.0.0.1 localhost" > /tmp/hosts + fi + + if grep "^$1 " /tmp/hosts > /dev/null; then + grep -v "^$1 " /tmp/hosts > /tmp/hosts.new + mv /tmp/hosts.new /tmp/hosts + fi + + echo "$1 $2 $2.$FQDN" >> /tmp/hosts } -getdrives() { - local du thispart - for du in /dev/r${drivetype}?a; do - dd if=$du of=/dev/null bs=1b count=1 >/dev/null 2>&1 - if [ $? -eq 0 ]; then - thisunit=`echo $du | sed -e 's,/dev/r\(...\)a,\1,g'` - driveunits="$driveunits $thisunit" - else - continue; +addifconfig() { + # $1 - interface name + # $2 - interface symbolic name + # $3 - interface IP address + # $4 - interface netmask + + # Create a hostname.* file for the interface. + echo "inet $2 $4" > /tmp/hostname.$1 + + addhostent $3 $2 +} + +configurenetwork() { + cat << \__configurenetwork_1 + +You may configure the following network interfaces: + +__configurenetwork_1 + + dmesg | grep "^le" | grep "ipl" + echo "" + echo -n "Configure which interface? [done] " + getresp "done" + case "$resp" in + done) + ;; + + *) + if dmesg | grep "^$resp " | grep "^le" | grep "ipl" \ + > /dev/null ; then + _interface_name=$resp + + # Get IP address + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "IP address? " + getresp "" + _interface_ip=$resp + done + + # Get symbolic name + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Symbolic name? " + getresp "" + _interface_symname=$resp + done + + # Get netmask + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Netmask? " + getresp "" + _interface_mask=$resp + done + + # Configure the interface. If it + # succeeds, add it to the permanent + # network configuration info. + ifconfig ${_interface_name} down + if ifconfig ${_interface_name} inet \ + ${_interface_ip} \ + netmask ${_interface_mask} up ; then + addifconfig \ + ${_interface_name} \ + ${_interface_symname} \ + ${_interface_ip} \ + ${_interface_mask} + fi + else + echo "" + echo "The interface $resp does not exist." + fi + ;; + esac +} + +install_ftp() { + # Get several parameters from the user, and create + # a shell script that directs the appropriate + # commands into ftp. + cat << \__install_ftp_1 + +This is an automated ftp-based installation process. You will be asked +several questions. The correct set of commands will be placed in a script +that will be fed to ftp(1). + +__install_ftp_1 + # Get server IP address + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Server IP? [${_ftp_server_ip}] " + getresp "${_ftp_server_ip}" + _ftp_server_ip=$resp + done + + # Get server directory + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Server directory? [${_ftp_server_dir}] " + getresp "${_ftp_server_dir}" + _ftp_server_dir=$resp + done + + # Get login name + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Login? [${_ftp_server_login}] " + getresp "${_ftp_server_login}" + _ftp_server_login=$resp + done + + # Get password + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Password? [${_ftp_server_password}] " + getresp "${_ftp_server_password}" + _ftp_server_password=$resp + done + + # Get list of files for mget. + cat << \__install_ftp_2 + +You will now be asked for files to extract. Enter one file at a time. +When you are done entering files, enter 'done'. + +__install_ftp_2 + echo "#!/bin/sh" > /tmp/ftp-script.sh + echo "cd /mnt" >> /tmp/ftp-script.sh + echo "ftp -i -n $_ftp_server_ip << \__end_commands" >> \ + /tmp/ftp-script.sh + echo "user $_ftp_server_login $_ftp_server_password" >> \ + /tmp/ftp-script.sh + echo "bin" >> /tmp/ftp-script.sh + echo "cd $_ftp_server_dir" >> /tmp/ftp-script.sh + + resp="" # force one interation + while [ "X${resp}" != X"done" ]; do + echo -n "File? [done] " + getresp "done" + if [ "X${resp}" = X"done" ]; then + break fi - setvar $thisunit "$(getparts $thisunit)" - export $thisunit + + _ftp_file=`echo ${resp} | awk '{print $1}'` + echo "get ${_ftp_file} |\"tar -zxvpf -\"" >> \ + /tmp/ftp-script.sh done - export drivenunits + + echo "quit" >> /tmp/ftp-script.sh + echo "__end_commands" >> /tmp/ftp-script.sh + + sh /tmp/ftp-script.sh + rm -f /tmp/ftp-script.sh + echo "Extraction complete." +} + +install_common_nfs_cdrom() { + # $1 - directory containing file + + # Get the name of the file. + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "File name? " + getresp "" + done + _common_filename="/mnt2/$1/$resp" + + # Ensure file exists + if [ ! -f $_common_filename ]; then + echo "File $_common_filename does not exist. Check to make" + echo "sure you entered the information properly." + return + fi + + # Extract file + cat $_common_filename | (cd /mnt; tar -zxvpf -) + echo "Extraction complete." } -prepdrive() { - echo "which drive would you like to prepare next?" - echo "choices are: ${driveunits}" +install_cdrom() { + # Get the cdrom device info + cat << \__install_cdrom_1 + +The following SCSI disk or disk-like devices are installed on your system; +please select the CD-ROM device containing the installation media: + +__install_cdrom_1 + dmesg | grep "^sd" | grep "rev" echo "" - getresp - case $resp in - *) ;; + echo -n "Which is the CD-ROM with the installation media? [abort] " + getresp "abort" + case "$resp" in + abort) + echo "Aborting." + return + ;; + + *) + if dmesg | grep "^$resp " | grep "slave" \ + > /dev/null ; then + _cdrom_drive=$resp + else + echo "" + echo "The CD-ROM $resp does not exist." + echo "Aborting." + return + fi + ;; esac + + # Get partition + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Partition? [c] " + getresp "c" + case "$resp" in + [a-h]) + _cdrom_partition=$resp + ;; + + *) + echo "Invalid response: $resp" + resp="" # force loop to repeat + ;; + esac + done + + # Ask for filesystem type + cat << \__install_cdrom_2 + +There are two CD-ROM filesystem types currently supported by this program: + 1) ISO-9660 (cd9660) + 2) Berkeley Fast Filesystem (ffs) + +__install_cdrom_2 + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Which filesystem type? [cd9660] " + getresp "cd9660" + case "$resp" in + cd9660|ffs) + _cdrom_filesystem=$resp + ;; + + *) + echo "Invalid response: $resp" + resp="" # force loop to repeat + ;; + esac + done + + # Mount the CD-ROM + if ! mount -t ${_cdrom_filesystem} -o ro \ + /dev/${_cdrom_drive}${_cdrom_partition} /mnt2 ; then + echo "Cannot mount CD-ROM drive. Aborting." + return + fi + + # Get the directory where the file lives + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo "Enter the directory relative to the mount point that" + echo -n "contains the file. [${_cdrom_directory}] " + getresp "${_cdrom_directory}" + done + _cdrom_directory=$resp + + install_common_nfs_cdrom ${_cdrom_directory} + umount -f /mnt2 > /dev/null 2>&1 } -echo "Welcome to the NetBSD ${VERSION} installation program." -echo "" -echo "This program is designed to help you put NetBSD on your hard disk," -echo "in a simple and rational way. Its main objective is to format," -echo "mount and create an fstab for your root (/) and user (/usr)" -echo "partitions." -echo "" -echo "As with anything which modifies your hard drive's contents, this" -echo "program can cause SIGNIFICANT data loss, and you are advised" -echo "to make sure your hard drive is backed up before beginning the" -echo "installation process." -echo "" -echo "Default answers are displyed in brackets after the questions." -echo "You can hit Control-C at any time to quit, but if you do so at a" -echo "prompt, you may have to hit return. Also, quitting in the middle of" -echo "installation may leave your system in an inconsistent state." +install_nfs() { + # Get the IP address of the server + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Server IP address? [${_nfs_server_ip}] " + getresp "${_nfs_server_ip}" + done + _nfs_server_ip=$resp + + # Get server path to mount + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Filesystem on server to mount? [${_nfs_server_path}] " + getresp "${_nfs_server_path}" + done + _nfs_server_path=$resp + + # Determine use of TCP + echo -n "Use TCP transport (only works with capable NFS server)? [n] " + getresp "n" + case "$resp" in + y*|Y*) + _nfs_tcp="-T" + ;; + + *) + _nfs_tcp="" + ;; + esac + + # Mount the server + if ! mount_nfs $_nfs_tcp ${_nfs_server_ip}:${_nfs_server_path} \ + /mnt2 ; then + echo "Cannot mount NFS server. Aborting." + return + fi + + # Get the directory where the file lives + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo "Enter the directory relative to the mount point that" + echo -n "contains the file. [${_nfs_directory}] " + getresp "${_nfs_directory}" + done + _nfs_directory=$resp + + install_common_nfs_cdrom ${_nfs_directory} + umount -f /mnt2 > /dev/null 2>&1 +} + +install_tape() { + # Get the name of the tape from the user. + cat << \__install_tape_1 + +The installation program needs to know which tape device to use. Make +sure you use a "no rewind on close" device. + +__install_tape_1 + _tape=`basename $TAPE` + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "Name of tape device? [${_tape}]" + getresp "${_tape}" + done + _tape=`basename $resp` + TAPE="/dev/${_tape}" + if [ ! -c $TAPE ]; then + echo "$TAPE does not exist or is not a character special file." + echo "Aborting." + return + fi + export TAPE + + # Rewind the tape device + echo -n "Rewinding tape..." + if ! mt rewind ; then + echo "$TAPE may not be attached to the system or may not be" + echo "a tape device. Aborting." + return + fi + echo "done." + + # Get the file number + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + echo -n "File number? " + getresp "" + case "$resp" in + [1-9]*) + _nskip=`expr $resp - 1` + ;; + + *) + echo "Invalid file number ${resp}." + resp="" # fore loop to repeat + ;; + esac + done + + # Skip to correct file. + echo -n "Skipping to source file..." + if [ "X${_nskip}" != X"0" ]; then + if ! mt fsf $_nskip ; then + echo "Could not skip $_nskip files. Aborting." + return + fi + fi + echo "done." + + cat << \__install_tape_2 + +There are 2 different ways the file can be stored on tape: + + 1) an image of a gzipped tar file + 2) a standard tar image + +__install_tape_2 + resp="" # force one iteration + while [ "X${resp}" = X"" ]; do + getresp "1" + case "$resp" in + 1) + ( + cd /mnt + dd if=$TAPE | tar -zxvpf - + ) + ;; + + 2) + ( + cd /mnt + tar -zxvpf $TAPE + ) + ;; + + *) + echo "Invalid response: $resp." + resp="" # force loop to repeat + ;; + esac + done + echo "Extraction complete." +} + +# +# End of functions. +# Begin working +# + echo "" +echo "Welcome to the NetBSD ${VERSION} installation program." +cat << \__welcome_banner_1 + +This program is designed to help you put NetBSD on your hard disk, +in a simple and rational way. You'll be asked several questions, +and it would probably be useful to have your disk's hardware +manual, the installation notes, and a calculator handy. + +In particular, you will need to know some reasonably detailed +information about your disk's geometry. This program can determine +some limited information about certain specific types of HP-IB disks. +If you have SCSI disks, however, prior knowledge of disk geometry +is absolutely essential. + +As with anything which modifies your hard disk's contents, this +program can cause SIGNIFICANT data loss, and you are advised +to make sure your hard drive is backed up before beginning the +installation process. + +Default answers are displyed in brackets after the questions. +You can hit Control-C at any time to quit, but if you do so at a +prompt, you may have to hit return. Also, quitting in the middle of +installation may leave your system in an inconsistent state. + +__welcome_banner_1 echo -n "Proceed with installation? [n] " getresp "n" case "$resp" in y*|Y*) - echo "scanning for the root device" + echo "Cool! Let's get to it..." ;; *) - echo ' -OK, then. Enter "halt" at the prompt to halt the machine. -If you have set the default boot device using the "eeprom" -command, you can use the "reboot" command now. Otherwise, -you may need to specify a boot device for the PROM monitor.' + cat << \__welcome_banner_2 + +OK, then. Enter 'halt' at the prompt to halt the machine. Once the +machine has halted, power-cycle the system to load new boot code. + +__welcome_banner_2 exit ;; esac -drivetype=sd -sect_fwd="" +# Make sure root was remounted (creates /etc/fstab) +if [ ! -f /etc/fstab ] +then + echo "Need to remount root read/write first." + exit 1 +fi -# find out what units are possible for that disk, and query the user. -getdrives -for du in $driveunits; do - set -- $(getvar $du) - if [ $# -ge 2 -a "$1" = "a" -a "`echo $2 | sed -e 's,.*BSD.*,BSD,'`" = "BSD" ]; then - rdev=$du - fi +# Install the shadowed disktab file; lets us write to it for temporary +# purposes without mounting the miniroot read-write. +# XXX: I just go ahead and remount root. -gwr +# XXX: cp /etc/disktab.shadow /tmp/disktab.shadow + +while [ "X${ROOTDISK}" = "X" ]; do + getrootdisk done -echo "" -echo "The root device you have chosen is on: ${rdev}" -echo "" -# driveunits=`ls /dev/${drivetype}?a | sed -e 's,/dev/\(...\)a,\1,g'` -if [ "X${driveunits}" = "X" ]; then - echo "FATAL ERROR:" - echo "No devices for disks of type '${drivetype}'." - echo "This is probably a bug in the install disks." - echo "Exiting install program." - exit -fi +# Make sure there's a disklabel there. If there isn't, puke after +# disklabel prints the error message. +checkfordisklabel ${ROOTDISK} +case $rval in + 1) + cat << \__disklabel_not_present_1 -echo "" -echo "THIS IS YOUR LAST CHANCE!!!" -echo "" -echo "(answering yes will format your root partition on $rdev)" -echo -n "Are you SURE you want NetBSD installed on your hard drive? (yes/no) " -answer="" -while [ "$answer" = "" ]; do - getresp - case $resp in - yes|YES) - echo "" - answer=yes - ;; - no|NO) - echo ' -OK, then. enter "halt" or "reboot" at the prompt.' - exit +FATAL ERROR: There is no disklabel present on the root disk! You must +label the disk with SYS_INST before continuing. + +__disklabel_not_present_1 + exit + ;; + + 2) + cat << \__disklabel_corrupted_1 + +FATAL ERROR: The disklabel on the root disk is corrupted! You must +re-label the disk with SYS_INST before continuing. + +__disklabel_corrupted_1 + exit + ;; + + *) + ;; +esac + +# Give the user the opportinuty to edit the root disklabel. +cat << \__disklabel_notice_1 + +You have already placed a disklabel onto the target root disk. +However, due to the limitations of the standalone program used +you may want to edit that label to change partition type information. +You will be given the opporunity to do that now. Note that you may +not change the size or location of any presently open partition. + +__disklabel_notice_1 +echo -n "Do you wish to edit the root disklabel? [y] " +getresp "y" +case "$resp" in + y*|Y*) + disklabel -W ${ROOTDISK} + disklabel -e ${ROOTDISK} + ;; + + *) + ;; +esac + +cat << \__disklabel_notice_2 + +You will now be given the opportunity to place disklabels on any additional +disks on your system. +__disklabel_notice_2 + +resp="X" # force at least one iteration +while [ "X$resp" != X"done" ]; do + labelmoredisks +done + +# Assume partition 'a' of $ROOTDISK is for the root filesystem. Loop and +# get the rest. +# XXX ASSUMES THAT THE USER DOESN'T PROVIDE BOGUS INPUT. +cat << \__get_filesystems_1 + +You will now have the opportunity to enter filesystem information. +You will be prompted for device name and mount point (full path, +including the prepending '/' character). + +Note that these do not have to be in any particular order. You will +be given the opportunity to edit the resulting 'fstab' file before +any of the filesystems are mounted. At that time you will be able +to resolve any filesystem order dependencies. + +__get_filesystems_1 + +echo "The following will be used for the root filesystem:" +echo " ${ROOTDISK}a /" + +echo "${ROOTDISK}a /" > ${FILESYSTEMS} + +resp="X" # force at least one iteration +while [ "X$resp" != X"done" ]; do + echo "" + echo -n "Device name? [done] " + getresp "done" + case "$resp" in + done) ;; + *) - echo -n "I want a yes or no answer... well? " + _device_name=`basename $resp` + + # force at least one iteration + _first_char="X" + while [ "X${_first_char}" != X"/" ]; do + echo -n "Mount point? " + getresp "" + _mount_point=$resp + if [ "X${_mount_point}" = X"/" ]; then + # Invalid response; no multiple roots + _first_char="X" + else + _first_char=`echo ${_mount_point} | \ + cut -c 1` + fi + done + echo "${_device_name} ${_mount_point}" >> \ + ${FILESYSTEMS} + resp="X" # force loop to repeat ;; esac done -echo "Initializing / (root) filesystem, and mounting..." -$DONTDOIT newfs /dev/r${rdev}a $name -$DONTDOIT mount_ffs /dev/${rdev}a /mnt + +echo "" +echo "You have configured the following devices and mount points:" +echo "" +cat ${FILESYSTEMS} echo "" -echo -n "Creating a fstab..." -mkdir -p $FSTABDIR -echo "/dev/${rdev}a / ffs rw 1 1" > $FSTAB +echo "Filesystems will now be created on these devices. If you made any" +echo -n "mistakes, you may edit this now. Edit? [n] " +getresp "n" +case "$resp" in + y*|Y*) + vi ${FILESYSTEMS} + ;; + *) + ;; +esac -# get rid of this partition -shiftvar $rdev -shiftvar $rdev +# Loop though the file, place filesystems on each device. +echo "Creating filesystems..." +( + while read line; do + _device_name=`echo $line | awk '{print $1}'` + newfs /dev/r${_device_name} + echo "" + done +) < ${FILESYSTEMS} -echo "" -echo "Now lets setup your /usr file system" -echo "(Once a valid input for drive and partition is seen" -echo "it will be FORMATTED and inserted in the fstab.)" -while [ "X$usrpart" = "X" ]; do - resp="" - drivename="" - while [ "X$resp" = "X" ]; do - echo "choices: $driveunits" - echo "which drive do you want /usr on?" - getresp - set -- $driveunits - while [ $# -gt 0 ]; do - if [ "X$resp" = "X$1" ]; then - drivename=$1 - break; - else - shift - fi +# Get network configuration information, and store it for placement in the +# root filesystem later. +cat << \__network_config_1 +You will now be given the opportunity to configure the network. This will +be useful if you need to transfer the installation sets via FTP or NFS. +Even if you choose not to transfer installation sets that way, this +information will be preserved and copied into the new root filesystem. + +Note, enter all symbolic host names WITHOUT the domain name appended. +I.e. use 'hostname' NOT 'hostname.domain.name'. + +__network_config_1 +echo -n "Configure the network? [y] " +getresp "y" +case "$resp" in + y*|Y*) + echo -n "Enter system hostname: " + resp="" # force at least one iteration + while [ "X${resp}" = X"" ]; do + getresp "" done - if [ "X$drivename" != "X" ]; then - break - fi - done + hostname $resp + echo $resp > /tmp/myname - usrpart="" - echo "You have selected $drivename" - echo "here is a list of partitions on $drivename" - disklabel $drivename 2>/dev/null | sed -e '/^[ ][ ][ad-p]:/p;/^#[ \t]*size/p;d' - echo "which partition would you like to format and have" - echo -n "mounted as /usr? (supply the letter): " - getresp - if [ "X$resp" = "X" ]; then - continue; - fi + echo -n "Enter DNS domain name: " + resp="" # force at least one iteration + while [ "X${resp}" = X"" ]; do + getresp "" + done + FQDN=$resp + + resp="" # force at least one iteration + while [ "X${resp}" != X"done" ]; do + configurenetwork + done - list=$(getvar $drivename) - set -- $list - while [ $# -gt 0 ]; do - if [ "$resp" = "$1" ]; then - if [ "`echo $2 | sed -e 's,.*BSD.*,BSD,'`" != "BSD" ]; then - echo "" - echo -n "$drivename$resp is of type $2 which is not" - echo " a BSD filesystem type" - break + echo -n "Enter IP address of default route: [none] " + getresp "none" + if [ "X${resp}" != X"none" ]; then + route delete default > /dev/null 2>&1 + if route add default $resp > /dev/null ; then + echo $resp > /tmp/mygate fi - usrpart=$drivename$resp - break - else - shift - shift fi - done - if [ "X$usrpart" = "X" ]; then - echo "$resp is not a valid input." - echo "" - fi -done + echo "" + echo "The host table is as follows:" + echo "" + cat /tmp/hosts + echo "" + echo "You may want to edit the host table in the event that" + echo "you need to mount an NFS server." + echo -n "Would you like to edit the host table? [n] " + getresp "n" + case "$resp" in + y*|Y*) + vi /tmp/hosts + ;; + + *) + ;; + esac + + cat << \__network_config_2 + +You will now be given the opportunity to escape to the command shell to +do any additional network configuration you may need. This may include +adding additional routes, if needed. In addition, you might take this +opportunity to redo the default route in the event that it failed above. +If you do change the default route, and wish for that change to carry over +to the installed system, execute the following command at the shell +prompt: + + echo <ip_address_of_gateway> > /tmp/mygate + +where <ip_address_of_gateway> is the IP address of the default router. + +__network_config_2 + echo -n "Escape to shell? [n] " + getresp "n" + case "$resp" in + y*|Y*) + echo "Type 'exit' to return to install." + sh + ;; + + *) + ;; + esac + ;; + *) + ;; +esac + +# Now that the network has been configured, it is safe to configure the +# fstab. +awk '{ + if ($2 == "/") + printf("/dev/%s %s ffs rw 1 1\n", $1, $2) + else + printf("/dev/%s %s ffs rw 1 2\n", $1, $2) +}' < ${FILESYSTEMS} > /tmp/fstab + +echo "The fstab is configured as follows:" echo "" -echo "Initializing /usr filesystem, and mounting..." -$DONTDOIT newfs /dev/r${usrpart} $name -$DONTDOIT mkdir -p /mnt/usr -$DONTDOIT mount_ffs /dev/${usrpart} /mnt/usr +cat /tmp/fstab +cat << \__fstab_config_1 + +You may wish to edit the fstab. For example, you may need to resolve +dependencies in the order which the filesystems are mounted. You may +also wish to take this opportunity to place NFS mounts in the fstab. +This would be especially useful if you plan to keep '/usr' on an NFS +server. + +__fstab_config_1 +echo -n "Edit the fstab? [n] " +getresp "n" +case "$resp" in + y*|Y*) + vi /tmp/fstab + ;; + + *) + ;; +esac + +# Now that the 'real' fstab is configured, we munge it into a 'shadow' +# fstab which we'll use for mounting and unmounting all of the target +# filesystems relative to /mnt. Mount all filesystems. +awk '{ + if ($2 == "/") + printf("%s /mnt %s %s %s %s\n", $1, $3, $4, $5, $6) + else + printf("%s /mnt%s %s %s %s %s\n", $1, $2, $3, $4, $5, $6) +}' < /tmp/fstab > /tmp/fstab.shadow + echo "" -echo -n "Adding to fstab..." -echo "/dev/${usrpart} /usr ffs rw 1 2" >> $FSTAB -sync -echo " done." - -echo ' -You might want to set the PROM default boot device. -The current settings can be examined using: - eeprom bootdev - eeprom default_boot -and they can be modified by adding "=value" i.e.: - eeprom bootdev=sd(0,0,0) - eeprom default_boot=true -' - -echo ' -OK! The preliminary work of setting up your disk is now complete, -and you can install the actual NetBSD software. - -Right now, your root is mounted on /mnt and your usr on /mnt/usr. -You should consult the installation notes to determine how to load -and install the NetBSD distribution sets, and how to configure your -system when you are done. - -GOOD LUCK! -' + +# Must mount filesystems manually, one at a time, so we can make sure the +# mount points exist. +( + while read line; do + _dev=`echo $line | awk '{print $1}'` + _mp=`echo $line | awk '{print $2}'` + _fstype=`echo $line | awk '{print $3}'` + _opt=`echo $line | awk '{print $4}'` + + # If not the root filesystem, make sure the mount + # point is present. + if [ "X{$_mp}" != X"/mnt" ]; then + mkdir -p $_mp + fi + + # Mount the filesystem. If the mount fails, exit + # with an error condition to tell the outer + # later to bail. + if ! mount -v -t $_fstype -o $_opt $_dev $_mp ; then + # error message displated by mount + exit 1 + fi + done +) < /etc/fstab + +if [ "X${?}" != X"0" ]; then + cat << \__mount_filesystems_1 + +FATAL ERROR: Cannot mount filesystems. Double-check your configuration +and restart the installation process. + +__mount_filesystems_1 + exit +fi + +# Ask the user which media to load the distribution from. +cat << \__install_sets_1 + +It is now time to extract the installation sets onto the hard disk. +Make sure The sets are either on a local device (i.e. tape, CD-ROM) or on a +network server. + +__install_sets_1 +resp="" # force at least one iteration +while [ "X${resp}" = X"" ]; do + echo -n "Install from (f)tp, (t)ape, (C)D-ROM, or (N)FS? [f] " + getresp "f" + case "$resp" in + f*|F*) + install_ftp + ;; + + t*|T*) + install_tape + ;; + + c*|C*) + install_cdrom + ;; + + n*|N*) + install_nfs + ;; + + *) + echo "Invalid response: $resp" + resp="" + ;; + esac + + # Give the user the opportunity to extract more sets. They don't + # necessarily have to come from the same media. + echo "" + echo -n "Extract more sets? [n] " + getresp "n" + case "$resp" in + y*|Y*) + # Force loop to repeat + resp="" + ;; + + *) + ;; + esac +done + +# Copy in configuration information and make devices in target root. +( + cd /tmp + for file in fstab hostname.* hosts myname mygate; do + if [ -f $file ]; then + echo "Copying $file..." + cp $file /mnt/etc/$file + fi + done + + echo -n "Making devices..." + cd /mnt/dev + sh MAKEDEV all + echo "done." + + echo "Copying kernel..." + cp /netbsd /mnt/netbsd +) + +# Unmount all filesystems and check their integrity. +umount -a +echo "Checking filesystem integrity..." +fsck -pf + +# Install boot code on target disk. +echo "Installing boot block..." +disklabel -W ${ROOTDISK} +disklabel -B ${ROOTDISK} + +cat << \__congratulations_1 + +CONGRATULATIONS! You have successfully installed NetBSD on your hard disk! +To boot the installed system, enter halt at the command prompt. Once the +system has halted, power-cycle the machine in order to load new boot code. +Make sure you boot from the disk. + +__congratulations_1 + +# ALL DONE! +exit diff --git a/distrib/sun3/common/mr.instutils b/distrib/sun3/common/mr.instutils deleted file mode 100644 index 9d509f857fe..00000000000 --- a/distrib/sun3/common/mr.instutils +++ /dev/null @@ -1,148 +0,0 @@ -# -# $NetBSD: mr.instutils,v 1.1.1.1 1995/10/08 23:07:46 gwr Exp $ -# -# Copyright (c) 1994 Christopher G. Demetriou -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. All advertising materials mentioning features or use of this software -# must display the following acknowledgement: -# This product includes software developed by Christopher G. Demetriou. -# 4. The name of the author may not be used to endorse or promote products -# derived from this software without specific prior written permission -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# Installation configuration utilites (functions), to get NetBSD configured -# reasonably once it is installed on the hard disk. These are meant to be -# invoked from the shell prompt, by people installing NetBSD. - -Configure() -{ - DEV=/mnt/dev - ETC=/mnt/etc - - echo "You will now be prompted for information about this" - echo "machine. If you hit return, the default answer (in" - echo "brackets) will be used." - - echo "" - echo -n "What is this machine's hostname? [unknown.host.domain] " - read hname - if [ "$hname" = "" ]; then - hname=unknown.host.domain - fi - echo $hname > ${ETC}/myname - proto_domain=`echo $hname | sed -e 's/[^.]*\.//'` - - echo "" - echo "What domain is this machine in (this is NOT its YP" - echo -n "domain name)? [$proto_domain] " - read dname - if [ "$dname" = "" ]; then - dname=$proto_domain - fi - - echo "" - if [ -e ${ETC}/sendmail.cf ]; then - echo "WARNING: A default sendmail.cf exists, and probably" - echo "needs to be tuned and/or replaced, to work properly at" - echo "your site!" - else - echo "WARNING: No default sendmail.cf installed. Did you" - echo "forget to install the 'etc' distribution?" - fi - - echo "127.0.0.1 localhost localhost.$dname" > ${ETC}/hosts - - echo "" - echo -n "Does this machine have an ethernet interface? [y] " - read resp - case "$resp" in - n*) - ;; - *) - intf= - while [ "$intf" = "" ]; do - echo -n "What is the primary interface name " - echo -n "(e.g. ed0, ep0, etc)? " - read intf - done - echo -n "What is the hostname for this interface? [$hname] " - read ifname - if [ "$ifname" = "" ]; then - ifname=$hname - fi - ifaddr= - while [ "$ifaddr" = "" ]; do - echo -n "What is the IP address associated with " - echo -n "interface ${intf}? " - read ifaddr - done - echo "$ifaddr $ifname `echo $ifname | sed -e s/\.$dname//`" \ - >> ${ETC}/hosts - - echo -n "Does this interface have a special netmask? [n] " - read resp - case "$resp" in - y*) - echo -n "What is the netmask? [0xffffff00] " - read ifnetmask - if [ "$ifnetmask" = "" ]; then - ifnetmask=0xffffff00 - fi - ;; - *) - ifnetmask= - ;; - esac - - echo -n "Does this interface need additional flags? [n] " - read resp - case "$resp" in - y*) - echo -n "What flags? [link0] " - read ifflags - if [ "$ifflags" = "" ]; then - ifflags=link0 - fi - ;; - *) - ifflags= - ;; - esac - echo "inet $ifname $ifnetmask $ifflags" > ${ETC}/hostname.$intf - - echo "" - echo -n "WARNING: if you have any more ethernet interfaces, " - echo "you will have to configure" - echo -n "them by hand. Read the comments in /etc/netstart to" - echo "learn how to do this." - ;; - esac - - echo "" - echo -n "Making device nodes..." - cd ${DEV} - sh MAKEDEV all - echo " done." - - sync -} diff --git a/distrib/sun3/common/mr.remount b/distrib/sun3/common/mr.remount new file mode 100644 index 00000000000..1cb747484da --- /dev/null +++ b/distrib/sun3/common/mr.remount @@ -0,0 +1,34 @@ +#!/bin/sh +# $NetBSD: mr.remount,v 1.1 1995/11/01 23:53:29 gwr Exp $ +# +# Find out what the root is mounted on, +# remount the root read/write, then +# create a valid /etc/fstab for it. +# +# Uses: dmesg, grep, mount + +# Given a sequence of lines like: "root on sd0b" +# print the last part of the last line: "sd0b" +findroot() { + name='??' + while read a b c d + do + name="$c" + done + echo "$name" +} + +if [ -f /etc/fstab ] +then + echo "root already mounted read/write" + exit 1 +fi + +echo "Determining current root device..." +root=`/sbin/dmesg |grep '^root on ' |findroot` + +echo "Remounting root device $root" +/sbin/mount -u "/dev/$root" / + +echo "/dev/$root / ufs rw 1 1" > /etc/fstab +exit 0 |