Booting a Network Computer

From RISC OS
Revision as of 12:04, 21 November 2007 by Caliston (talk | contribs) (Start page - getting a network addres)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Introduction

Acorn Network Computers (NCs) are discless machines designed to boot from a telephone or ethernet network. They have NCOS in ROM or flash, but rely on the network for applications other than the basic browser and wordprocessor that might be supplied.

As NCs were under development for much of the time they were available, there are many different versions of NC hardware and software available. The following is mostly based on NCOS 0.1 but will probably apply to other versions too. I'm assuming you're booting from some kind of Unix machine, though you could probably boot from Windows or RISC OS with the right software.

Network config

Ethernet NCs expect to find an IP address using BOOTP. You can cancel this on boot by holding down both Alt keys which may leave you in a configuration menu (in NCOS 0.1 it just dumps you into the browser with no network active).

To boot you'll need a BOOTP server on your network. This can either be standalone bootpd, or some DHCP servers (notably ISC dhcpd) also provide BOOTP. For the root directory you'll also need an NFS server. Note these don't have to be the same machine.

bootpd configuration

Here's a sample /etc/bootptab configuration:

.default:\
# domain name
        :hn:dn="mydomain.example.com":\
# TFTP boot directory
        :td=/tftpboot:\
# name servers
        :ds=192.168.1.2:\
        :to=auto:\
        :ns="192.168.1.2"

# Next, we can define different master entries for each subnet. . .

.subnet115:\
# use default template we've just defined
        :tc=.default:\
# subnet mask
        :sm=255.255.255.0:\
# gateway
        :gw=192.168.1.2:\
# NFS boot server address
        :sa=192.168.1.4:

# entry for NC - 'ournc' is in the DNS and resolves to the IP address we want to give it
ournc:  tc=.subnet115:\
# MAC address of NC - printed by NC on boot
        ha=00.11.22.33.44.55:\
# NFS mountpoint on server 192.168.1.4 to boot from
        bf=/nc
# we could also do ip=192.168.1.99 to set the IP address explicitly

Typing 'man 5 bootptab' should explain all the two-letter codes. Remember to separate each statement with colons and, if an entry spills onto more than one line, add backslashes at the end of lines.

This will give the NC an IP address and tell it which NFS share on which server to mount as its root directory.

dhcpd configuration

ISC's /etc/dhcpd.conf is a little less terse:

allow booting;
allow bootp;

# option definitions common to all supported networks...
option domain-name "mydomain.example.com";
option domain-name-servers 192.168.1.2;

option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;

default-lease-time 600;
max-lease-time 7200;

# Acorn NC
host ournc {
  hardware ethernet 00:11:22:33:44:55;
  fixed-address 192.168.1.99;
  option host-name "ournc"; 

  #stage 1: kernel to fetch by TFTP (Acorn NC can't do this but other NC-like devices can)
  #filename "kernel.bin";

  #stage 2: NFS root
  next-server 192.168.1.4;
  option root-path "/nc";
}

You can also add sections to this to issue IP addresses by DHCP to other parts of your network, but I'll ignore this for now.