boot
directory which is treated specially by the
Firmware.
The default sequence is pretty straightforward, the
Firmware
finds the boot partition, mounts the Ext2 file system from it and
tries to load a compressed kernel image from the
boot
directory.
The name of the kernel image differs from machine to machine and
this is the reason for having multiple copies of
NetBSD
kernel installed under different names.
The following kernel image names are known to be in use by certain
Cobalt
flavors:
/boot/vmlinuz.gz
/boot/vmlinux.gz
/boot/vmlinux-nfsroot.gz
/boot/vmlinux_RAQ.gz
/boot/vmlinux_raq-2800.gz
where
/boot
is the directory on the boot partition.
The Firmware console provides the means to alter the default boot sequence and/or to specify boot parameters. Pressing `<space>' right after the Firmware printed its greeting brings the Firmware console prompt and pressing `?' at the prompt prints a help screen with all commands supported by the Firmware. For example, the `bfd' command can be used to boot a kernel image:
Cobalt: bfd /boot/<kernel image> [options]
where ``options'' are the kernel options.
boot
directory should always be in sync with the ones installed in the
root directory.
boot
directory on the boot partition, one copy per each kernel image
name the
Cobalt
Firmware
might look for.
The
NetBSD
kernel is located in the root directory
/dev/wd0a
(usually)
like it is on other platforms.
Once running, the boot loader prints a banner to the serial console
similar to the following:
>> NetBSD/cobalt 5.0 Bootloader, Revision 0.9 [@0x80f00000] >> (user@buildhost, builddate) >> Model: Cobalt Qube 2 >> Memory: 32768 k >> PROM boot string: root=/dev/hda1 ro Boot [wd0a:netbsd]: Loading: wd0a:netbsd 3763776+312244 [216944+209676]=0x44b97c Starting at 0x80001000
The boot loader also prints a banner to the LCD panels as the following:
NetBSD/cobalt BootloaderLoading: wd0a:netbsd
[device]: [filename] [-acdmqsvxz]
The default device will be set to the disk that the boot loader was loaded from. To boot from an alternate disk or partition, the full name of the device should be given at the prompt. device is of the form xdNx where xd is the device from which to boot, N is the unit number, and x is the partition letter of the NetBSD disklabel(5) in the NetBSD partition of the MBR partitions. The NetBSD boot loader recognizes FFS (both UFS1 and UFS2) and Linux Ext2fs.
The following list of supported devices may vary from installation to installation:
The default
filename
is
netbsd
;
if the boot loader fails to successfully
open that image, it then tries
netbsd.gz
(expected to be a kernel image compressed by
gzip(1)),
followed by
netbsd
,
netbsd.gz
,
onetbsd
,
onetbsd.gz
,
netbsd.bak
,
netbsd.bak.gz
,
netbsd.old
,
netbsd.old.gz
,
netbsd.cobalt
,
netbsd.cobalt.gz
,
netbsd.elf
,
and finally
netbsd.elf.gz
.
Alternate system images can be loaded by just specifying the name
of the image, so it is always a good idea to have a copy of working kernel
in the
NetBSD
root partition before trying a new kernel.
Options are:
As the older version of the boot loader, it is also possible to specify options to the boot loader by breaking into the Firmware and using the ``bfd'' command:
Cobalt: bfd /boot/boot.gz [options]
The boot loader allows the following options:
The device, filename and options on the bfd prompt are same with the boot loader.
It is also a good idea to have a small rescue kernel in the
boot
directory in the Ext2 partition for the Firmware boot.
In an emergency case, this will allow you to use the
Firmware
`bfd'
command to boot the rescue image:
Cobalt: bfd /boot/netbsd.gz
Cobalt: bfd /netbsd.gz nfsroot=/home/raq/root
The
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
``nfsroot='',
and the named kernel
(netbsd.gz
)
needs to be executable and in that directory.
You will also need to setup
dhcpd(8).
Once the kernel is loaded with the command line values, the data
given via DHCP is used to mount the root file system.
Here is a known working DHCP entry:
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 }
Another option is to hold down the left and right cursor buttons during power-on which executes the command
bfd /boot/vmlinux.gz root=/dev/nfs nfsroot=/nfsroot,
resulting in a netboot.
On RaQ 1's, the default kernel name is
vmlinux_RAQ.gz
and on RaQ 2's, it is
vmlinux_raq-2800.gz
.
Cobalt: bfd /boot/boot.gz nfsroot=/home/raq/root
Note the boot loader binary needs to be gzip(1)-compressed. Once the boot loader is successfully loaded it prints a banner as well as booting from disk:
>> NetBSD/cobalt 5.0 Bootloader, Revision 0.9 [@0x80f00000] >> (user@buildhost, builddate) >> Model: Cobalt Qube 2 >> Memory: 32768 k >> PROM boot string: root=/dev/nfs nfsroot=/nfsroot nfsaddrs=bootp Boot [nfs:netbsd]: Loading: nfs:netbsd 3763776+312244 [216944+209676]=0x44b97c Starting at 0x80001000
The boot loader load the NetBSD kernel via NFS which should be specified by the DHCP configuration on the server. Note the nfsroot option specified on the ``bfd'' prompt will be ignored by the NetBSD boot loader so it's recommended to use the same directory on the ``bfd'' prompt and in the DHCP configuration.
/boot/boot.gz
/boot/netbsd.gz
/netbsd
/netbsd.gz
/usr/mdec/boot