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