Annotation of Net2/arch/i386/netboot/readme, revision 1.1.1.1

1.1       root        1: Ethernet boot prom code.
                      2: 
                      3: This is code that can be burned into an eprom and installed in an
                      4: ethernet card. It uses the extension facilities of the bios to to boot
                      5: a kernel via the network.
                      6: 
                      7: Netboot uses bootp or rarp to determine its ip address and tftps a
                      8: designated kernel from a server. You should be running a daemon for
                      9: either bootp or rarp to service requests from this client. If you are
                     10: using bootp, the boot file name and the gateway (if necessary) will
                     11: also be transmitted to the client. If you use rarpd, the boot file
                     12: name is synthesized by this boot code from the eight hexadecimal
                     13: digits that comprise the IP address of the client and an extension of
                     14: "386bsd". If you use rarp, the rarp server must also be the tftp
                     15: server.
                     16: 
                     17: If you have configured both bootp and rarpd into the boot prom, the
                     18: response from the first host to respond via either protocol will be
                     19: used.
                     20: 
                     21: This code was developed using GNU as 2.1 and GNU cc version 2.3.3,
                     22: running under 386bsd.  Pre 2.0 versions of GNU as might have trouble
                     23: with some syntax.  Testing was done with a SMC Elite16 and 16k eproms.
                     24: 
                     25: 
                     26: Installation instructions:
                     27: 
                     28: Check the configurable parameters in Makefile.
                     29: 
                     30: Check the configurable parameters in the ethernet driver source for
                     31: the card you are using:
                     32: - in wd80x3.c: WD_BASEREG, WD_BASEMEM (irqs not used)
                     33: 
                     34: Make.
                     35: 
                     36: If you wish, you can test the binary (boot.bin) by copying it to a
                     37: floppy with the dosload.exe program and execute the boot code from the
                     38: floppy.
                     39: 
                     40: Burn the resultant binary (boot.bin) into an eprom and install it in
                     41: the ethernet card.
                     42: 
                     43: Decide which protocol (bootp or rarp) to use on a server; set up that
                     44: server.
                     45: 
                     46: Setting up a bootp server entails creating a bootpd client
                     47: configuration file. The format is similar to that of printcap. An
                     48: entry looks something like:
                     49: 
                     50: sams-1:\
                     51:        :bf=diskless_kernel.386bsd:\
                     52:        :gw=139.88.30.4:\
                     53:        :ht=ethernet:\
                     54:        :ha=0000c025e35b:\
                     55:        :ip=139.88.30.39:\
                     56:        :sm=255.255.255.0:\
                     57:        :to=18000:
                     58: 
                     59: Setting up a rarpd server entails creating an ethernet/ip address
                     60: resolution file '/etc/ethers' with a line for each netboot client in
                     61: the form:
                     62: 
                     63: 00:00:c0:25:e3:5b       sams-1.lerc.nasa.gov
                     64: 
                     65: If you don't know the ethernet address, boot the client with the eprom
                     66: installed; the ethernet address of the card will be displayed.
                     67: 
                     68: Set up tftpd on a server. Check '/etc/inetd.conf'; there should be a
                     69: line that starts something like:
                     70: 
                     71: tftp    dgram   udp     wait    root    ...
                     72: 
                     73: perhaps commented out.
                     74: 
                     75: Build a kernel that is capable of operating via NFS.  Martin Renters
                     76: released some patches and a kernel configuration program that work
                     77: nicely (comp.os.386bsd.development around March 22, 1993); they should
                     78: be around somewhere. If you can't find them, I can email you a copy.
                     79: 
                     80: Make the kernel available via tftp under one of the names which this
                     81: code will use to look for the kernel.  If you are using bootp, you can
                     82: specify the name as a bootp client configuration parameter. If you
                     83: don't specify the name, or if you are using rarp the this code will
                     84: synthesize the name using its client's IP address.  The hexadecimal
                     85: version of the client's IP address with the extension '.386bsd' is the
                     86: default choice.
                     87: 
                     88: Create the exportable nfs mount points for which this kernel will use
                     89: and load them with necessary files (the base distribution, ...).
                     90: Export them so they can be mounted by this kernel when it boots from
                     91: the client IP address.
                     92: 
                     93: 
                     94: Usage instructions:
                     95: 
                     96: At any time the escape key can be struck to gain entrance to the
                     97: interactive monitor. There is a menu of monitor commands that can be
                     98: invoked to customize a boot operation.
                     99: 
                    100: 
                    101: Notes:
                    102: 
                    103: When Martin Renter's patches are applied to netbsd 0.8, there will be
                    104: one failure (pmap.c). Ignore it, the relevant code has already been
                    105: fixed.
                    106: 
                    107: I had some small problems with getfh(2) as used in the nfs configuring
                    108: program - I suspect the problem is a bug in SunOS 4.1.1 - if you have
                    109: similar problems, I can email you my gross hack workaround.
                    110: 
                    111: As noted by Mr. Renters, advisory flock()ing is not supported - this
                    112: breaks some programs. The first broken utility you will likely
                    113: encounter is vipw(1). The others: passwd, dump, ar, mail, tip, lpr,
                    114: sendmail.
                    115: 
                    116: You should examine your rc script and make appropriate changes to the
                    117: boot up sequence.
                    118: 
                    119: Here are the steps I took to bring netbsd 0.8 up for the client sams-1
                    120: using the host dinah in the domain lerc.nasa.gov.
                    121: 
                    122: - Create the /dev/vga device.
                    123: 
                    124: - Create some ptys.
                    125: 
                    126: - Create /etc/fstab to contain:
                    127:        dinah:/home/386bsd-root / nfs rw
                    128:        dinah:/home/386bsd-swap none swap rw
                    129: in it for the root and swap.
                    130: 
                    131: - Edit /etc/rc; the line 'mount -a -t nonfs' is changed to:
                    132:        mount -a -t nonfs,swap
                    133: 
                    134: - Edit /etc/myname to contain
                    135:        sams-1
                    136: 
                    137: - Edit /etc/hosts to contain:
                    138:        127.0.0.1       localhost loghost
                    139:        139.88.30.39    sams-1
                    140: and delete the other stuff in it.
                    141: 
                    142: - Create /etc/resolv.conf to contain:
                    143:        domain lerc.nasa.gov
                    144:        nameserver 128.156.1.43
                    145:        nameserver 139.88.76.3
                    146: where the two addresses are those of some name servers in my domain.
                    147: There are, of course, the two alternatives of using just the /etc/hosts
                    148: file, or using named.
                    149: 
                    150: - Create /etc/mygate to contain:
                    151:        139.88.30.4
                    152: which is the IP address of my gateway.
                    153: 
                    154: - Re-symlink /etc/localtime to the correct zone.
                    155: 
                    156: 
                    157: TBD:
                    158: -linux
                    159: -ne2100
                    160: -handle small memory configuration
                    161: -USE_BIOS version
                    162: -return to bios correctly
                    163: -remove old Phys... stuff; relics of real mode prom version
                    164: -accept bootd extension items & pass as args, modify kernel to
                    165:  init nfs_diskless from args. Need:
                    166:        myif                    [local] [bootp]
                    167:        mygateway                       [bootp]
                    168:        swap_args               [local]
                    169:        swap_fh                         [bootp]
                    170:        swap_saddr              [local] [bootp]
                    171:        swap_hostname                   [bootp]
                    172:        root_args               [local]
                    173:        root_fh                         [bootp]
                    174:        root_saddr              [local] [bootp]
                    175:        root_hostnam                    [bootp]
                    176:  A tight squeeze, passing all necessary info in one bootp packet.
                    177: 
                    178: Please send me any improvements you make to this code. It will be
                    179: appreciated.
                    180: 
                    181: Jim McKim ([email protected])

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.