\"      $NetBSD: boot.8,v 1.2 2004/01/07 12:55:42 wiz Exp $
\"
\" Copyright (c) 1991, 1993
\"      The Regents of the University of California.  All rights reserved.
\"
\" This code is derived from software written and contributed
\" to Berkeley by William Jolitz.
\"
\" 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. Neither the name of the University nor the names of its contributors
\"    may be used to endorse or promote products derived from this software
\"    without specific prior written permission.
\"
\" THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
\"
\"     @(#)boot_i386.8  8.2 (Berkeley) 4/19/94
\"
Dd January 7, 2004
Dt BOOT 8 cobalt
Os
Sh NAME
Nm boot
Nd system bootstrapping procedures
Sh DESCRIPTION
Tn Cobalt
Networks' MIPS-based Microservers
Po
now known as
Tn Sun
Server Appliances
Pc
that can run
Nx Ns /cobalt
can use any of the following boot procedures:
Pp
Bl -bullet
It
bootstrap
Nx
from disk using the standard
Tn Cobalt
Tn Firmware
boot sequence
It
bootstrap
Nx
from disk using the
Nx
boot loader
It
network bootstrap
Nx
using the standard
Tn Cobalt
Tn Firmware
means from a
Tn TCP/IP
Tn LAN
with
Tn DHCP
and
Tn NFS .
El
Ss Power fail and crash recovery
Normally, the system will reboot itself at power-up or after crashes.
An automatic consistency check of the file systems will be performed,
and unless this fails, the system will resume multi-user operations.
Ss Cobalt Boot Sequence
The first program to take a control after reboot or at power-on is the
Tn Cobalt
Tn Firmware .
The
Tn Firmware
can load a compressed kernel from disk, subject to a few limitations.
The
Tn Firmware
expects the disk to contain DOS-style partition information with
the first partition being a boot one which is special in that it
should reside close to the beginning of the disk and must contain
an
Tn ext2
file system with a
Pa boot
directory which is treated specially by the
Tn Firmware .
The default sequence is pretty straightforward, the
Tn Firmware
finds the boot partition, mounts the ext2 file system from it and
tries to load a compressed kernel image from the
Pa boot
directory.
The name of the kernel image differs from machine to machine and
this is the reason for having multiple copies of
Nx
kernel installed under different names.
The following kernel image names are known to be in use by certain
Tn Cobalt
flavors:
Bd -unfilled -offset indent
Pa /boot/vmlinuz.gz
Pa /boot/vmlinux.gz
Pa /boot/vmlinux-nfsroot.gz
Pa /boot/vmlinux_RAQ.gz
Pa /boot/vmlinux_raq-2800.gz
Ed
Pp
where
Pa /boot
is the directory on the boot partition.
Pp
The
Tn Firmware
console provides the means to alter the default boot sequence and/or
to specify boot parameters.
Pressing
Sq Aq space
right after the
Tn Firmware
printed its greeting brings the
Tn Firmware
console prompt and pressing
Sq \&?
at the prompt prints a help screen with all commands supported by
the
Tn Firmware .
For example, the
Sq bfd
command can be used to boot a kernel image:
Bd -unfilled -offset indent
Cobalt: bfd /boot/\*[Lt]kernel image\*[Gt] [options]
Ed
Pp
where
Dq options
are the kernel options.
Ss Bootstrap from disk using the standard Firmware sequence
The
Tn Firmware
enters the standard boot sequence after reboot or at power-on when
no front-panel buttons are pressed and the
Tn Firmware
console is not used to change the boot procedure.
At boot time, the
Tn Firmware
checks the hardware, prints the banner and performs the standard
Tn Cobalt
boot sequence.
There are a few culprits tightly connected to this boot method.
First of all, the kernel must be compressed.
Second, the
Tn Firmware
enforces a hard restriction on the kernel size
Po
it cannot exceed approximately 1000000/2500000 bytes
compressed/uncompressed
Pc
resulting in a lock-up should this requirement not be fulfilled.
For
Nx ,
another pitfall is that the uncompressed kernel should be copied to
the root directory to make certain system binaries
Po
such as e.g. netstat
Pc
work, and the kernel images in the
Pa boot
directory should always be in sync with the ones installed in the
root directory.
Ss Bootstrap from disk using the NetBSD boot loader
The
Nx
boot loader is an attempt to break through the limitations enforced
by the
Tn Firmware
loader.
The main idea is to make the
Tn Firmware
load the
Nx
boot loader and let the latter take care of loading the kernel.
To achieve this goal, multiple copies of the boot loader are
installed in the
Pa boot
directory on the boot partition, one copy per each kernel image
name the
Tn Cobalt
Tn Firmware
might look for.
The
Nx
kernel is located in the root directory
Po
usually
Pa /dev/wd0a
Pc
like it is on other platforms.
Once running, the boot loader prints a banner similar to the following:
Bd -unfilled -offset indent
\*[Gt]\*[Gt] NetBSD/cobalt 1.6ZG Bootloader, Revision 0.1 [@0x81000000]
\*[Gt]\*[Gt] (user@buildhost, builddate)
\*[Gt]\*[Gt] Memory:              32768 k
\*[Gt]\*[Gt] Firmware boot string:    root=/dev/hda1 ro
Loading: wd0a:netbsd
2249104+195856 [81872+73284]=0x27af90
Starting at 0x80001000
Ed
Pp
by default, the boot loader uses
Dq Li wd0a:netbsd
as kernel specification which corresponds to the file
Nm netbsd
on partition
Dq a
of the
Nx
Tn MBR
partition of the first hard disk known to the
Tn Firmware
Po
which is an
Tn IDE
or similar device - see the
Sx BUGS
section
Pc .
In case this fails, the boot loader will try a few alternative
kernel image names and if this also fails the loader will repeat
the whole procedure for all other
Nx
slices
Pq if any
and will load the first kernel image found.
Ss Boot loader Options
It is possible to specify some options to the boot loader by breaking
into the
Tn Firmware
and using the
Dq bfd
command:
Bd -unfilled -offset indent
Cobalt: bfd /boot/boot.gz [options]
Ed
Pp
The boot loader allows the following options:
Bl -tag -width 04n -offset 04n
It Xo Ic nbsd=
Op Va device : Ns
Op Va filename
Op Fl acdqsv
Xc
The default
Va device
will be set to
Va wd0a
which is the first
Nx
partition on the first drive, as numbered by the
Tn Firmware .
To boot from an alternate disk, the full name of the device should
be given at the prompt.
Va device
is of the form
Va xdNx
where
Va xd
is the device from which to boot,
Va N
is the unit number, and
Va x
is the partition letter.
Pp
The following list of supported devices may vary from installation to
installation:
Pp
Bl -hang -compact
It wd
Hard disks as numbered by the BIOS. This includes ST506, IDE, ESDI,
RLL disks on a WD100[2367] or lookalike controller(s), and SCSI
disks on SCSI controllers recognized by the
Tn Firmware .
El
Pp
The default
Va filename
is
Pa netbsd ;
if the boot loader fails to successfully
open that image, it then tries
Pa netbsd.gz
(expected to be a kernel image compressed by
Xr gzip 1 ) ,
followed by
Pa netbsd ,
Pa netbsd.gz ,
Pa onetbsd ,
Pa onetbsd.gz ,
Pa netbsd.bak ,
Pa netbsd.bak.gz ,
Pa netbsd.old ,
Pa netbsd.old.gz ,
Pa netbsd.cobalt ,
Pa netbsd.cobalt.gz ,
Pa netbsd.elf ,
and finally
Pa netbsd.elf.gz .
Alternate system images can be loaded by just specifying the name
of the image.
Pp
Options are:
Bl -tag -width xxx
It Fl a
Prompt for the root file system device, the system crash dump
device, and the path to
Xr init 8 .
It Fl c
Bring the system up into the device configuration manager.
From here the device locators can be tuned to the hardware; see
Xr userconf 4 .
It Fl d
Bring the system up in debug mode.
Here it waits for a kernel debugger connect; see
Xr ddb 4 .
It Fl q
Boot the system in quiet mode.
It Fl s
Bring the system up in single-user mode.
It Fl v
Boot the system in verbose mode.
El
El
Pp
It is always a good idea to have a small rescue kernel in the
Pa boot
directory.
In an emergency case, this will allow you to use the
Tn Firmware
Sq bfd
command to boot the rescue image:
Bd -unfilled -offset indent
Cobalt: bfd /boot/netbsd.gz
Ed
Ss Network bootstrap using the standard Firmware sequence
The
Tn Cobalt
Tn Firmware
allows to boot a kernel over the network, with all the limitations
of the
Tn Firmware
loader described above.
The simplest method is to break into the
Tn Firmware
prompt and use
Dq bfd
command to specify where to boot from:
Bd -unfilled -offset indent
Cobalt: bfd /netbsd.gz nfsroot=/home/raq/root
Ed
Pp
The
Tn Firmware
is picky about syntax and in general, so if things fail mysteriously,
try to conform to the conventions described above.
For netbooting, you need to NFS-export the directory given to
Dq nfsroot= ,
and the named kernel
Pq Pa netbsd.gz
needs to be executable and in that directory.
You will also need to setup
Xr rarpd 8
and
Xr dhcpd 8 .
Once the kernel is loaded with the command line values, the data
given via DHCP is used to mount the root filesystem.
Here is a known working DHCP entry:
Bd -unfilled -offset indent
host raq {
       hardware ethernet 0:10:e0:0:52:62;      # raq MAC
       fixed-address 10.0.0.15;                # raq address
       filename "/netbsd.gz";                  # kernel name in root-path
       option root-path "/home/raq/root";      # absolute dir on nfs server
       server-name="10.0.0.3";                 # IP of nfs server
}
Ed
Pp
Another option is to hold down the left and right cursor buttons
during power-on which executes the command
Bd -unfilled -offset indent
bfd /boot/vmlinux.gz root=/dev/nfs nfsroot=/nfsroot,
Ed
Pp
resulting in a netboot.
On RaQ 1's, the default kernel name is
Pa vmlinux_RAQ.gz
and on RaQ 2's, it is
Pa vmlinux_raq-2800.gz .
Sh FILES
Bl -tag -width /usr/mdec/bootxx_fstype -compact
It Pa /boot/boot.gz
boot program code loaded by the
Tn Firmware
loader
It Pa /boot/netbsd.gz
Xr gzip 1 Ns -compressed
rescue system code
It Pa /netbsd
system code
It Pa /netbsd.gz
Xr gzip 1 Ns -compressed
system code
El
Sh SEE ALSO
Xr ddb 4 ,
Xr userconf 4 ,
Xr fdisk 8 ,
Xr halt 8 ,
Xr reboot 8 ,
Xr shutdown 8
Sh BUGS
The
Nx
boot loader supports booting off IDE hard drives only.
This is less a bug of the boot loader code than a shortcoming of
the
Tn Cobalt
Tn Firmare
and shall be considered as such.