Next Previous Contents

1. Etherboot

Currently there seem to be two different packages for installing a disk-less PC-based UNIX station.

  1. On sunsite in pub/linux/system/Linux-boot/netboot-nfs.tar.gz is a package that contains code for patching a 1.2.x Linux kernel to boot from an NFS mounted file-system and to accept an NFS mounted swap file. This package also comes with code for making your own BOOT-prom. Unfortunately, the BOOT-prom code suffers from two major drawbacks.
    1. Currently, only Western Digital and SMC Ethernet cards are supported.
    2. You need to have a DOS based 16bit C compiler and assembly code development system for making the BOOT-prom images. (for your convenience, the original kernel patches from this package are found in the directory `netboot-0.x'; please copy the entire package from sunsite, if you need more information on it. I did not write any of the files in this directory, so please refer to the respective copyright information in that directory)
  2. FreeBSD comes with its own code for booting disk-less UNIX PC's. This code supports a wide variety of popular Ethernet cards (Western Digital, SMC, NE1000, NE2000, 3COM 3c503, 3COM 3c509). Actually, the code does auto-detection, so you can even have one BOOT-prom image for different cards (although, EPROM size is a limiting factor; if you want to support all different cards with the same BOOT-prom image you will probably have to remove some of the more advanced features of the code). Besides, the code can be compiled in an 32bit environment, using standard GCC. Obviously, this package does not directly support Linux.

Since both Western Digital and SMC Ethernet cards are a lot more expensive then NE2000 cards (you can get the latter for as little as $10 if you do not mind buying a used one), I was looking into how to obtain a BOOT-prom for an NE2000 card. For lack of an DOS development system, I decided to go with the FreeBSD code.

In the directory `patches', you can find the changes that I had to make in order to get the package support my system. You need to apply two patches to the freebsd-code:


  patch -p0 <netboot-freebsd-compiles-with-linux.patch
  patch -p0 <netboot-freebsd-loads-linux-kernel.patch

(This directory also contains a modified set of patches for patching 1.3.x kernels; as the patch file is based on the code in `netboot-0.x/lx1.2.2-patch', please consult that directory for copyright information!)

If you rather want to try standard settings, you should have a look at the files in the directory `binaries'. I pre-compiled both *.com and *.rom files for all supported ethernet cards. All images will fit in a 16KB EPROM. I could only test the NE2000 code, but I expect that for the majority of users the other files will probably work `out-of-the-box', too. Even if you want to try these images, please read on first, so you know what to do with the files!

If you want to compile your own code, you should edit netboot-freebsd/Makefile or netboot-freebsd/Makefile.linux and make the BOOT-prom images (specify Makefile.linux as your makefile if you compile under Linux).

I never tried building BOOT-prom images in an a.out environment (neither did I try compiling under FreeBSD), but I have been told that there are some old versions of `objdump' that might cause problems. So, if you are stuck with extracting the text and data segment from the compiled binaries, you should either try to update to a newer release of `objdump' or -- preferably -- compile the code in an ELF environment.

Please note, that the BOOT-prom images still support loading FreeBSD, so if you ever decide switching from Linux to FreeBSD you do not have to burn a new EPROM.

Apart from the FreeBSD file format, the BOOT-prom auto-detects Linux kernels and `tagged files'; the latter is the format that is prefered by the netboot-0.x code. If you want to use this format, you need the utilities that come with the netboot-0.x package. For your convenience I copied them into the directory `netboot-0.x' (please note, that I did not write any of the files in that directory, so please refer to the Copyright information that comes with those files).

After calling `make' you will have both a *.com and a *.rom file for your Ethernet card. The *.rom file is exactly 16kB long (please check, that the total size of text segment plus data segment does not exceed 16kB; the sizes are displayed during compilation) and needs to be put into the EPROM. The *.com file can be used for testing the code before burning an EPROM. You should load the *.com file from a boot-disk. I noticed that having other drivers or newer versions of DOS loaded before calling the *.com file can cause serious problems, thus I suggest you format a new DOS disk with system files (format a: /s) and then rename *.com into command.com when you copy it onto the disk (you could also specify the original name as your SHELL= in config.sys).

You will now have to setup your server to provide the necessary services for the disk-less workstation. The following instructions should get you started:

(These instructions assume, that you do *not* use the `tagged file format' that is used by the `netboot-0.x' package; if you prefer to use that format instead, you might want to have a look at ftp://ftp.ix.de/pub/ix/linux/iX-Terminal)

Good luck and enjoy using your new disk-less workstation

Markus (gutschk AT math PERIOD uni-muenster PERIOD de)


Next Previous Contents