.\"	$NetBSD: install,v 1.25 2022/10/06 20:42:13 andvar Exp $
.\"
.\" Copyright (c) 1999-2002 The NetBSD Foundation, Inc.
.\" 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.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
.\" ``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 FOUNDATION OR CONTRIBUTORS
.\" 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.
.\"
Installing
.Nx
is a relatively complex process, but if you have
this document in hand it should not be too difficult.
.Pp
There are several ways to install
.Nx
onto your disk.
If your
.Tn MVME147
machine has a tape drive the easiest way is
.Sx "Installing from tape"
(details below).
All other machines can be installed easily over the network from a
suitable NFS server.
See
.Sx "Installing from NFS"
for details.
Otherwise, if you have another \*M machine running
.Nx
you can
initialize the disk on that machine and then move the disk.
.
.Ss2 Installing from tape
.
Create the
.Nx*M
\*V boot tape as described in the section
entitled
.Sx "Creating boot/install tapes" .
Then, with the tape in the drive, type the following at the Bug prompt:
.Pp
.Dl 147-Bug\*[Gt] Ic "bo 5"
.Pp
.Dl 16x-Bug\*[Gt] Ic "bo 0,50"
.Pp
As mentioned earlier, this assumes your tape is jumpered for SCSI-ID 5.
.Pp
As the tape loads (which may take 20 to 30 seconds), you will see a
series of status messages.
It may be useful if you can capture these
messages to a file, or a scrollable xterm window.
In particular, you should make a note of the lines which describe the
geometry of the SCSI disks detected by
.Nx .
They are of the form:
.(disp
sd0 at scsibus0 targ 0 lun 0: \*[Lt]Maker, Disk, Foo\*[Gt] SCSI1 0/direct fixed
sd0: 800 MB, 800 cyl, 16 head, 128 sec, 512 bytes/sect x 1638400 sectors
.disp)
.Pp
The information of most interest is the number of sectors; for the fictitious
disk above, it's 1638400.
You will need this number when you come to create a disklabel for that drive.
.Pp
Here is an example of an MVME147 system booting from tape:
.(disp
RAM address from VMEbus = $00000000

Booting from: VME147, Controller 5, Device 0
Loading: Operating System

Volume: NBSD

IPL loaded at:  $003F0000
\*[Gt]\*[Gt] BSD MVME147 tapeboot [$Revision: 1.25 $]
578616+422344+55540+[46032+51284]=0x11a6e4
Start @ 0x8000 ...
Copyright (c) 1996, 1997, 1998, 1999, 2000
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 1.5 (RAMDISK) #1: Sun Oct 29 16:19:04 GMT 2000
    steve@fatbob:/usr/src/sys/arch/mvme68k/compile/RAMDISK
Motorola MVME-147S: 25MHz MC68030 CPU+MMU, MC68882 FPU
real mem  = 7237632
avail mem = 6381568
using 88 buffers containing 360448 bytes of memory
mainbus0 (root)
pcc0 at mainbus0: Peripheral Channel Controller, rev 0, vecbase 0x40
clock0 at pcc0 offset 0x0 ipl 5: Mostek MK48T02, 2048 bytes of NVRAM
  \&.
  \&.

.disp)
.Pp
.(Note
The exact text of the messages will vary depending on which
\*M
variant you're using.
.Note)
.Pp
Finally, you will see the following "welcome" message:
.(disp
        Welcome to the NetBSD/\*M RAMDISK root!

This environment is designed to do only four things:
  1:  Partition your disk (use the command:  disklabel -i -I /dev/rsd0c)
  2:  Copy a miniroot image into the swap partition  (/dev/rsd0b)
  3:  Make that partition bootable (using 'installboot')
  4:  Reboot (using the swap partition, i.e. /dev/sd0b).

Copying the miniroot can be done several ways, allowing the source
of the miniroot image to be on any of these:
    boot tape,  NFS server, TFTP server, rsh server

The easiest is loading from tape, which is done as follows:
        mt -f /dev/nrst0 rewind
        mt -f /dev/nrst0 fsf 3
        dd if=/dev/nrst0 of=/dev/rsd0b bs=8k conv=sync
(For help with other methods, please see the install notes.)

To reboot using the swap partition after running installboot, first
use
.Ic halt ,
then at the Bug monitor prompt use a command like:
        	1x7Bug\*[Gt] bo 0,,b:

To view this message again, type:  cat /.welcome
#
.disp)
.Pp
You must now create a disklabel on the disk you wish to use for the
root file system
.Pq Pa / .
This will usually be
.Li sd0 .
The disklabel is used by
NetBSD to identify the starting block and size of each partition on
the disk.
.Pp
Partitions are named
.Li sd0a ,
.Li sd0b ,
.Li sd0c ,
etc,
up to
.Li sd0h .
The \*M port of
.Nx
makes some assumptions about the first three partitions on a boot disk:
.Pp
.(tag sd0c -compact
.It Li sd0a
The root file system
.Pq Pa / .
.It Li sd0b
The swap partition.
.It Li sd0c
The whole disk.
Also known as the
.Em raw partition .
.tag)
.Pp
The
.Em raw partition No is special;
.Nx
is able to use it even if the
disk has no label.
You should never create a file system on the Raw Partition,
even on a non-boot disk.
.Pp
It is good practice to put
.Pa /usr
on a different partition than
.Pa /
(root, AKA
.Li sd0a ) .
So, the first available partition for
.Pa /usr
is
.Li sd0d .
Refer to the section entitled
.Sx NetBSD System Requirements and Supported Devices
for information on the recommended sizes of the
.Pa /
(root),
.Pa /usr
and swap partitions.
.Pp
You are not required to define any partitions beyond
.Li sd0d ,
but if you
have a large disk drive, you might want to create several other partitions
for file systems such as
.Pa /home
or
.Pa /usr/src .
Note that at this time you
are only required to partition the root/boot disk; you will get the
opportunity to partition any other disks in your system from the main
.Ic miniroot
installation program.
.Pp
To create the disklabel and partitions, use the
.Li disklabel
program, passing it the name of the Raw Partition of your root/boot disk.
.Pp
.Dl # Ic "disklabel -i -I /dev/rsd0c"
.Dl important disklabel -i options:
.Dl ?     - short help on all commands
.Dl P     - print current partition table
.Dl W     - write the current partition table
.Dl Q     - quit
.Dl [a-p] - define named partition
.Pp
To start creating the basic partitions, you should enter
.Ic a
at the partition\*[Gt] prompt.
.Li disklabel
will then prompt for the partition information in a form similar to:
.Pp
.Dl partition> Ic a
.Dl Filesystem type [?] [unused]: Ic 4.2BSD
.Dl Start offset ('x' to start after part 'x') [0c, 0s, 0M]:
.Dl Partition size ('$' for all remaining) [0c, 0s, 0M]: Ic 32m
.Pp
When you enter the start and length of a partition, you can append
s, c, m, or g to specify sectors, cylinders, megabytes or gigabytes
respectively.
.Pp
The above example creates partition
.Sq Li a ,
starting at sector zero
and with a size of 32MB.
.Pp
The
.Li type
of the partition should be
.Li 4.2BSD ,
which is the recommended
.Nx
file system type.
.Pp
Next, create a swap partition (b).
Note that the minimum size of this swap partition should be 8 MB,
otherwise you won't be able to use a miniroot to complete the
.Nx
installation!
.Pp
.Dl partition> Ic b
.Dl Filesystem type [?] [unused]: Ic swap
.Dl Start offset ('x' to start after part 'x') [0c, 0s, 0M]: Ic a
.Dl Partition size ('$' for all remaining) [0c, 0s, 0M]: Ic 16m
.Pp
Here, we specify that the swap partition starts immediately after the
.Sq Li a
partition and is of size 16MB.
The length of the swap partition should be at least as large as the
amount of RAM in your system and ideally 64MB or over.
The remainder of the disk can be allocated to the 
.Sq Li d
partition for the
.Pa /usr
file system.
.Pp
.Dl partition> Ic d
.Dl Filesystem type [?] [unused]: Ic 4.2BSD
.Dl Start offset ('x' to start after part 'x') [0c, 0s, 0M]: Ic b
.Dl Partition size ('$' for all remaining) [0c, 0s, 0M]: Ic $
.Pp
Note that the above partition sizes are just guidelines.
If your disk is large enough, you should resize the partitions
appropriately and perhaps also create a /var partition as well.
.Pp
You now need to write this new disklabel, together with the partition
details you've just entered, to disk.
You might also try the
.Sq Ic P
command
to view the partitions.
Once written, you can quit back to the shell using
.Sq Ic Q .
.Pp
Now that your disk's partitioned, you need to get the proper installation
miniroot image onto it.
The miniroot image is designed to be copied into
the swap partition of your disk.
This is a safe place which won't be overwritten by the installation procedure.
From the shell prompt, use the
following commands to copy the miniroot image from tape to swap (b).
.Pp
.Dl # Ic "mt -f /dev/nrst0 rewind"
.Dl # Ic "mt -f /dev/nrst0 fsf 3"
.Dl # Ic "dd if=/dev/nrst0 of=/dev/rsd0b bs=8k conv=osync"
.Pp
The disk and the miniroot must now be made bootable using the
.Xr installboot 8
command.
To do this, issue the following commands:
.Pp
.Dl # Ic "mount /dev/sd0b /mnt"
.Dl # Ic "installboot /mnt/usr/mdec/bootsd /bootxx /dev/rsd0b"
.Dl # Ic "umount /dev/sd0b"
.Pp
You can now shutdown the system.
.Pp
.Dl # Ic halt
.Dl signal 15
.Dl syncing disks... done
.Dl unmounting / (root_device)...
.Dl halted
.Pp
.Dl 147-Bug\*[Gt] Ic reset
.Dl Reset Local SCSI Bus [Y,N] N? Ic y
.Dl Automatic reset of known SCSI Buses on RESET [Y,N] Y?
.Dl Cold/Warm Reset flag [C,W] = C?
.Dl Execute Soft Reset [Y,N] N? Ic y
.Pp
Resetting the other types of MVME boards are very similar.
You should now reboot from that just installed miniroot.
See the section entitled
.Sx "Booting the miniroot"
for details.
.
.Ss2 Installing from NFS
.
Before you can install from NFS, you must have already configured
your NFS server to support your machine as a bootable client.
Instructions for configuring the server are found in the section
entitled
.Sx Getting the NetBSD System onto Useful Media
above.
.Pp
To get started on the MVME147, you need to download
.Pa sboot
into RAM (you will find
.Ic sboot
in the
.Pa install
directory of the \*M distribution).
You can either do that through the console line or through a 2nd serial
connection.
For example, an MVME147 connected to a sun4/110 and accessed via
.Xr tip 1
can be loaded as follows:
.Pp
.(disp
lo 0
~Ccat sboot
go 4000
.disp)
.Pp
Which will look like this:
.Pp
.Dl 147-Bug\*[Gt] Ic "lo 0"
.Dl ~CLocal command? Ic "cat sboot"
.Pp
.Em away for 11 seconds
.Pp
.Dl !
.Pp
.Dl 147-Bug\*[Gt] Ic "g 4000"
.Dl Effective address: 00004000
.Pp
.Dl sboot: serial line bootstrap program (end = 6018)
.Pp
.Dl \*[Gt]\*[Gt]\*[Gt]
.Pp
Now, if you want to do it through serial line 1, then connect serial
line one to a machine.
At the
.Li 147-Bug\*[Gt] No prompt type Ic \&tm 1
You should then login to the machine it is connected to.
Then press
.Key CONTROL-A
to escape to Bug.
Do
.Ic lo 1;x=cat sboot Em ...
then when that is done you can reconnect
.Ic tm 1 No and logout.
.No Then do Ic go 4000
and you've got the
.Li "\*[Gt]\*[Gt]\*[Gt] "
prompt of
.Ic sboot .
.Pp
Once you've got the
.Li "\*[Gt]\*[Gt\*[Gt] "
prompt, you can boot the
.Li RAMDISK
kernel from the server:
.Pp
.Dl \*[Gt]\*[Gt]\*[Gt] Ic b
.Pp
.(disp
le0: ethernet address: 8:0:3e:20:cb:87
My ip address is: 192.168.1.4
Server ip address is: 192.168.1.1
4800
Download was a success!
.disp)
.Pp
See below for the next step in booting MVME147.
.Pp
The MVME162, MVME167, MVME172 and MVME177 boards are able to download netboot
directly using TFTP.
To enable this, you must first configure the networking parameters
on the board as described in the section entitled "Preparing your System
for
.Nx
Installation.
On a properly configured MVME162/172 or MVME167/177, all you need to type is:
.Pp
.Dl 1xx-Bug\*[Gt] Ic nbo
.Pp
For all board types, the boot messages are very similar:
.Pp
.(disp
Start @ 0x8000 ...
\*[Gt]\*[Gt] BSD MVME147 netboot (via sboot) [$Revision: 1.25 $]
device: le0 attached to 08:00:3e:20:cb:87
boot: client IP address: 192.168.1.4
boot: client name: soapy
root addr=192.168.1.1 path=/export/soapy
578616+422344+55540+[46032+51284]=0x11a6e4
Start @ 0x8000 ...
Copyright (c) 1996, 1997, 1998, 1999, 2000
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 1.5 (RAMDISK) #1: Sun Oct 29 16:19:04 GMT 2000
    steve@fatbob:/usr/src/sys/arch/mvme68k/compile/RAMDISK
Motorola MVME-147S: 25MHz MC68030 CPU+MMU, MC68882 FPU
real mem  = 7237632
avail mem = 6381568
using 88 buffers containing 360448 bytes of memory
mainbus0 (root)
pcc0 at mainbus0: Peripheral Channel Controller, rev 0, vecbase 0x40
clock0 at pcc0 offset 0x0 ipl 5: Mostek MK48T02, 2048 bytes of NVRAM
  \&.
  \&.
.disp)
.Pp
After the boot program loads the
.Li RAMDISK
kernel, you should see the
welcome screen as shown in the "tape boot" section above.
.Pp
You now need to create a disklabel with partition information on the
SCSI disk on which you intend to create your root file system
.Pq Pa / .
Follow the instructions in the previous section entitled
.Sx "Installing from tape"
to do this.
(But stop short of the part which describes how to
copy the miniroot from tape.)
.Pp
You must now configure the network interface before you can access the
NFS server containing the miniroot image.
For example the command:
.Pp
.Dl # Ic "ifconfig le0 inet 192.168.1.4 up"
.Pp
will bring up the MVME147 network interface
.Li le0
with that address.
The command:
.Pp
.Dl # Ic "ifconfig ie0 inet 192.168.1.4 up"
.Pp
will bring up the MVME162/172 or MVME167/177 network interface
.Li ie0
with that address.
The next
step is to copy the miniroot from your server.
This can be done using either NFS or remote shell.
(In the examples that follow, the server has
IP address 192.168.1.1) You may then need to add a default route if the
server is on a different subnet:
.Pp
.Dl # Ic "route add default 192.168.1.2 1"
.Pp
You can look at the route table using:
.Pp
.Dl # Ic "route show"
.Pp
Now mount the NFS file system containing the miniroot image:
.Pp
.Dl # Ic "mount -r 192.168.1.1:/export/soapy /mnt"
.Pp
The procedure is simpler if you have space for an expanded (not
compressed) copy of the miniroot image.
In that case:
.Pp
.Dl # Ic "dd if=/mnt/miniroot of=/dev/rsd0b bs=8k"
.Pp
Otherwise, you will need to use
.Ic gzcat
to expand the miniroot image while copying.
.Pp
.Dl # Ic gzcat miniroot.fs.gz | dd of=/dev/rsd0b obs=8k conv=osync
.Pp
You must now make the disk bootable.
Refer to the previous section on
installing from tape, where it describes how to run
.Ic installboot .
This is immediately following the part which explains how to copy the
miniroot from tape.
.
.Ss2 Booting the miniroot
.
Assuming the miniroot is installed on partition
.Sq Li b
of the disk with
SCSI-ID 0, then the boot command is:
.Pp
.Dl 1xx-Bug\*[Gt] Ic "bo 0,,b:"
.Pp
The command line parameters above are:
.Pp
.(tag xxx
.It Ic 0
controller (usually zero)
.It Ic ,,
bug argument separators
.It Ic \&b:\&
tell the bootstrap code to boot from partition
.Li b
.tag)
.Pp
You should see a bunch of boot messages, followed by messages from
the miniroot kernel just as you did when the
.Li RAMDISK
kernel booted.
.Pp
You will then be prompted to enter the root device.
Since the miniroot was booted from the swap partition, you should enter
.Li sd0b .
You will
then be asked for the swap device and file system type.
Just press
.Key RETURN
twice to accept the defaults.
When asked to enter a terminal type, either accept the default,
or use whatever the TERM environment
variable is set to in the shell of your host system:
.Pp
.Dl boot device: sd0
.Dl root device (default sd0a): Ic sd0b
.Dl dump device (default sd0b):  Em (return)
.Dl file system (default generic): Em (return)
.Dl root on sd0b dumps on sd0b
.Dl mountroot: trying ffs...
.Dl root file system type: ffs
.Dl init: copying out path `/sbin/init' 11
.Dl erase ^H, werase ^W, kill ^U, intr ^C
.Dl Terminal type? [vt100] Em return
.Pp
Congratulations!
The system should now be running the miniroot installation program.
.
.Ss2 Miniroot install program:
.
The miniroot's install program is very simple to use.
It will guide you through the entire process, and is well automated.
.Pp
All recent releases of NetBSD provide the option of using
.Ic sysinst
instead of the old installation and upgrade shell scripts.
At this time,
.Ic sysinst
is not capable of installing distribution sets from tape.
In such a case, you should fallback to the shell script installation
or upgrade procedure.
In all other cases,
.Ic sysinst
should be used.
Note that as soon as
.Ic sysinst
can deal with tapes, the shell script tools will be removed.
.Pp
The miniroot's install program (both
.Ic sysinst
and the shell script version) will:
.(bullet
Allow you to place disklabels on additional disks.
The disk we are installing on should already have
been partitioned using the
.Li RAMDISK
kernel.
.Pp
Note that partition sizes and offsets are expressed
in sectors.
When you fill out the disklabel, you will need to specify partition
types and file system parameters.
If you're unsure what these values should be, use the
following defaults:
.(disp
fstype: 4.2BSD
fsize: 1024
bsize: 4096
cpg: 16
.disp)
.Pp
If the partition will be a swap partition, use the following:
.(disp
fstype: swap
fsize: 0 (or blank)
bsize: 0 (or blank)
cpg: 0 (or blank)
.disp)
.Pp
Note that partition
.Sq Li c
is special; it covers then entire
disk and should not be assigned to a file system.
.Pp
The number of partitions is currently fixed at 8.
.It
Create file systems on target partitions.
.It
Allow you to set up your system's network configuration.
Remember to specify host names without the domain name
appended to the end.
For example use
.Li foo
instead of
.Li foo.bar.org .
If, during the process of configuring
the network interfaces, you make a mistake, you will
be able to re-configure that interface by simply selecting
it for configuration again.
.It
Mount target file systems.
You will be given the opportunity to manually edit the resulting
.Pa /etc/fstab .
.It
Extract binary sets from the media of your choice.
.It
Copy configuration information gathered during the
installation process to your root file system
.Pq Pa / .
.It
Make device nodes in your root file system under
.Pa /dev .
.It
Copy a new kernel onto your root partition
.Pq Pa / .
.It
Install a new boot block.
.It
Check your file systems for integrity.
.bullet)
.Pp
First-time installation on a system through a method other than the
installation program is possible, but strongly discouraged.
.
.so ../common/sysinst
