README revision 1.1
1README for ndbootd-0.1 2 3Copyright (c) 2001 Matthew Fredette. All rights reserved. 4 5See the file COPYING for no-warranty and distribution terms. 6 7ndbootd is a daemon that serves Sun's old Network Disk (ND) protocol. 8This protocol was designed by Sun before they designed NFS. ND simply 9makes the raw blocks of a disk available to network clients. Contrast 10this with the true namespace and file abstractions that NFS provides. 11 12The only reason you're likely to encounter ND nowadays is if you have 13an old Sun-2 machine, like the 2/120 or 2/50. The Sun-2 PROMs can 14only use ND to boot over the network. (Later, the Sun-3 PROMs would 15use RARP and TFTP to boot over the network.) 16 17ndbootd is a very simple ND server that only supports client reads. 18 19usage: ndbootd [OPTIONS] BOOT1-BIN 20where OPTIONS are: 21 -s, --boot2 { BOOT2-BIN | DIR } 22 find a second-stage boot program in the file 23 BOOT2-BIN or in the directory DIR 24 -i, --interface NAME use interface NAME 25 -w, --window-size COUNT 26 send at most COUNT unacknowledged packets [default=6] 27 -d, --debug set debug mode 28 29ndbootd exports a disk that the clients consider to be /dev/ndp0 (ND 30public unit zero). The disk is available to any client listed in 31/etc/ethers (Sun-2 PROMs don't do RARP, but they do learn their IP 32address from the first ND response they receive from the server.) 33 34BOOT1-BIN is a file containing the mandatory first-stage network boot 35program. The layout of the exported disk is: 36 37block 0: normally a Sun disklabel (but ignored by the PROM) 38blocks 1-15: the first-stage network boot program 39 40With the --boot2 option, ndbootd will also make a second-stage network 41boot program available to clients. When --boot2 is used with a 42filename BOOT2-BIN, that file is the second-stage network boot program 43to be served to all clients. 44 45When --boot2 is used with a directory name DIR, ndbootd finds a 46client's second-stage network boot program by turning its IP address 47into a filename in that directory, in the same manner later Sun-3 48PROMs do when TFTPing (i.e., if a client has IP address 192.168.1.10, 49ndbootd expects to find DIR/C0A8010A.SUN2). The expected use of 50--boot2 is with the /tftpboot directory, making ndbootd a functional 51replacement for tftp when used with an ND-aware first-stage boot 52program. 53 54Any second-stage network boot program always begins at block 16 of the 55exported disk, regardless of the length of the first-stage network 56boot program. 57 58Whether or not there is a second-stage network boot program, the 59exported disk appears to have infinite length. The content of all 60blocks not used by the first- or second-stage network boot programs is 61undefined. 62 63All first- and second-stage network boot programs must have had their 64exec headers stripped off. 65 66Normally, ndbootd listens on the first up and running IP interface it 67finds. Use the --interface option to give a specific interface. 68 69One parameter of the ND protocol is a sort of window size. This is 70the number of 1-kilobyte packets that can be transmitted before 71waiting for an acknowledgement. To change this from the default 6, 72use the --window-size option. 73 74When debug support is compiled in (it is by default), the --debug 75option turns on debugging. 76 77ndbootd has only been compiled and tested under NetBSD with BPF 78support, although there is a fair autoconf framework, and the raw 79interface support is broken out, which should allow for reasonable 80porting. 81 82Note that ndbootd was developed specifically to help me to boot my 83experimental NetBSD port on my Sun-2/120. In this scenario, the 84first-stage network boot (bootyy) continues to use ND to load in the 85second-stage boot program (netboot), which can do a full 86RARP/bootparams/NFS boot. (If the program netboot ever fit in 16 87blocks, we could eliminate bootyy, but this is unlikely.) 88 89(Aside: it is unusual for a network boot to have two stages of boot 90programs before the kernel; this is normally only done on real disks. 91But to the Sun-2 PROMs, /dev/ndp0 is just like a real disk in that it 92provides no EOF condition (like a tape boot gets, or like the Sun-3 93TFTP method gets), so it only loads a fixed number of blocks.) 94 95Whether ndbootd can be used to netboot SunOS on a Sun-2 is unknown, but 96the hope is that you can use the SunOS-provided sun2.bb file as the 97first-stage boot program, not use any --boot2 option, and ndbootd will 98perform as the SunOS ndbootd did. 99 100To configure ndbootd for compiling, run the 'configure' script, 101followed by make. To report bugs in compiling or using ndbootd, email 102fredette@alum.mit.edu, and please include as much information as you 103can about what you're trying to do and what goes wrong. I don't have 104much time to do support, but I'll try. 105