diff options
Diffstat (limited to 'sys/arch/i386/netboot/README')
-rw-r--r-- | sys/arch/i386/netboot/README | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/sys/arch/i386/netboot/README b/sys/arch/i386/netboot/README new file mode 100644 index 00000000000..5f58b127648 --- /dev/null +++ b/sys/arch/i386/netboot/README @@ -0,0 +1,183 @@ +$NetBSD: README,v 1.2 1994/10/27 04:21:00 cgd Exp $ + +Ethernet boot prom code. + +This is code that can be burned into an eprom and installed in an +ethernet card. It uses the extension facilities of the bios to to boot +a kernel via the network. + +Netboot uses bootp or rarp to determine its ip address and tftps a +designated kernel from a server. You should be running a daemon for +either bootp or rarp to service requests from this client. If you are +using bootp, the boot file name and the gateway (if necessary) will +also be transmitted to the client. If you use rarpd, the boot file +name is synthesized by this boot code from the eight hexadecimal +digits that comprise the IP address of the client and an extension of +"386bsd". If you use rarp, the rarp server must also be the tftp +server. + +If you have configured both bootp and rarpd into the boot prom, the +response from the first host to respond via either protocol will be +used. + +This code was developed using GNU as 2.1 and GNU cc version 2.3.3, +running under 386bsd. Pre 2.0 versions of GNU as might have trouble +with some syntax. Testing was done with a SMC Elite16 and 16k eproms. + + +Installation instructions: + +Check the configurable parameters in Makefile. + +Check the configurable parameters in the ethernet driver source for +the card you are using: +- in wd80x3.c: WD_BASEREG, WD_BASEMEM (irqs not used) + +Make. + +If you wish, you can test the binary (boot.bin) by copying it to a +floppy with the dosload.exe program and execute the boot code from the +floppy. + +Burn the resultant binary (boot.bin) into an eprom and install it in +the ethernet card. + +Decide which protocol (bootp or rarp) to use on a server; set up that +server. + +Setting up a bootp server entails creating a bootpd client +configuration file. The format is similar to that of printcap. An +entry looks something like: + +sams-1:\ + :bf=diskless_kernel.386bsd:\ + :gw=139.88.30.4:\ + :ht=ethernet:\ + :ha=0000c025e35b:\ + :ip=139.88.30.39:\ + :sm=255.255.255.0:\ + :to=18000: + +Setting up a rarpd server entails creating an ethernet/ip address +resolution file '/etc/ethers' with a line for each netboot client in +the form: + +00:00:c0:25:e3:5b sams-1.lerc.nasa.gov + +If you don't know the ethernet address, boot the client with the eprom +installed; the ethernet address of the card will be displayed. + +Set up tftpd on a server. Check '/etc/inetd.conf'; there should be a +line that starts something like: + +tftp dgram udp wait root ... + +perhaps commented out. + +Build a kernel that is capable of operating via NFS. Martin Renters +released some patches and a kernel configuration program that work +nicely (comp.os.386bsd.development around March 22, 1993); they should +be around somewhere. If you can't find them, I can email you a copy. + +Make the kernel available via tftp under one of the names which this +code will use to look for the kernel. If you are using bootp, you can +specify the name as a bootp client configuration parameter. If you +don't specify the name, or if you are using rarp the this code will +synthesize the name using its client's IP address. The hexadecimal +version of the client's IP address with the extension '.386bsd' is the +default choice. + +Create the exportable nfs mount points for which this kernel will use +and load them with necessary files (the base distribution, ...). +Export them so they can be mounted by this kernel when it boots from +the client IP address. + + +Usage instructions: + +At any time the escape key can be struck to gain entrance to the +interactive monitor. There is a menu of monitor commands that can be +invoked to customize a boot operation. + + +Notes: + +When Martin Renter's patches are applied to netbsd 0.8, there will be +one failure (pmap.c). Ignore it, the relevant code has already been +fixed. + +I had some small problems with getfh(2) as used in the nfs configuring +program - I suspect the problem is a bug in SunOS 4.1.1 - if you have +similar problems, I can email you my gross hack workaround. + +As noted by Mr. Renters, advisory flock()ing is not supported - this +breaks some programs. The first broken utility you will likely +encounter is vipw(1). The others: passwd, dump, ar, mail, tip, lpr, +sendmail. + +You should examine your rc script and make appropriate changes to the +boot up sequence. + +Here are the steps I took to bring netbsd 0.8 up for the client sams-1 +using the host dinah in the domain lerc.nasa.gov. + +- Create the /dev/vga device. + +- Create some ptys. + +- Create /etc/fstab to contain: + dinah:/home/386bsd-root / nfs rw + dinah:/home/386bsd-swap none swap rw +in it for the root and swap. + +- Edit /etc/rc; the line 'mount -a -t nonfs' is changed to: + mount -a -t nonfs,swap + +- Edit /etc/myname to contain + sams-1 + +- Edit /etc/hosts to contain: + 127.0.0.1 localhost loghost + 139.88.30.39 sams-1 +and delete the other stuff in it. + +- Create /etc/resolv.conf to contain: + domain lerc.nasa.gov + nameserver 128.156.1.43 + nameserver 139.88.76.3 +where the two addresses are those of some name servers in my domain. +There are, of course, the two alternatives of using just the /etc/hosts +file, or using named. + +- Create /etc/mygate to contain: + 139.88.30.4 +which is the IP address of my gateway. + +- Re-symlink /etc/localtime to the correct zone. + + +TBD: +-linux +-ne2100 +-handle small memory configuration +-USE_BIOS version +-return to bios correctly +-remove old Phys... stuff; relics of real mode prom version +-accept bootd extension items & pass as args, modify kernel to + init nfs_diskless from args. Need: + myif [local] [bootp] + mygateway [bootp] + swap_args [local] + swap_fh [bootp] + swap_saddr [local] [bootp] + swap_hostname [bootp] + root_args [local] + root_fh [bootp] + root_saddr [local] [bootp] + root_hostnam [bootp] + A tight squeeze, passing all necessary info in one bootp packet. + +Please send me any improvements you make to this code. It will be +appreciated. + +Jim McKim (mckim@lerc.nasa.gov) |