Return to my net-boot info main page
Return to primary page of new documentation

This page contains introductory info on Netboot and Etherboot.
They both use BOOTP protocol on IP to get info where to boot
from, then TFTP to load boot image.

Of course, I am not sure if it is completely correct, also
there are few questions in it, and maybe some info I did not
put here is important enough to be required in such an info.

So, please help me make it better.

Lines marked by 'KY:' on begin are comments from Ken Yap.

Jerzy Tarasiuk (jt AT fuw.edu.pl)

PS: one of my purposes was to have the info for me, to know
    what to do with these programs, what can I expect, etc.


1. Making bootrom. Etherboot requires a driver - when you have the Etherboot driver for your card, just 'cd src' and use 'make' to make the bootrom images (will be in src/bin*/ subdirectories); otherwise you need write or get suitable driver: KY: All the known drivers are in the distribution. If a new KY: one is needed, some volunteer would have to write it. - written in C, to be compiled on Linux KY: Can also be compiled on FreeBSD. - has one public function: probe, which returns a pointer to a nic structure, describing other functions and NIC - has the following functions passed in the nic structure: - reset ( nic_struct_pointer ) - disable ( nic_struct_pointer ) - send ( nic_struct_pointer , byte eth_addr[6] , p_type , data_size , &data ) - poll ( nic_struct_pointer ) - this returns 0 if nothing received, 1 if received ( nic->packet gets data from the packet, nic->packetlen gets length of the data ) more detailed info how to write an Etherboot driver is here; and there are drivers for many cards (here is list). Netboot driver and related issues: - uses packet driver (from netboot/bootrom/netdrvr/, drivers 3c501, 3c503, 3c509, arcether, dc21x4, e100bpkt, ne1000, ne2000, ne2100, smc_wd are distributed with netboot; - has relatively large 'kernel', e.g. bootrom code length w/ 3c503 driver is 0x3172 bytes (driver size ~= 0x1512) for minimal one, other kernels result in larger image - almost 16kbytes; - a 'makerom' program which makes rom image asks for: - kernel (1:normal, 2:minimal, 3:8086; '1'-'3' ~= 112 bytes) - look for boot drives (y/n; size does not depend on answer) - driver (these from the netdrvr directory - can put own ones there, or 0 to be asked for full path of the driver to use) - command line arguments for the driver - do you want to use ANSI display driver (yes = almost 1kb more) - do you want to use acket driver debugger (almost 1kb, too) - do you want to specify an additional program, if 'yes' then - full path name of the program - command line arguments for the program - and the question about additional program displayed again (an empty program takes 5 bytes; the program is told to be invoked before driver, it can be DOS .com or .exe file) - finally, output file format (always floppy image is made) and writes files image.flo and image.rom; the first has 200-byte (decimal 200!) more than rom size, second is 0-filled to 2^N, and last byte in the image is adjusted to get proper checksum (it would be better to use FF fill (eprom programming time)); this is for last stable version - 0.8.1, new version asks other questions; both need specifying netboot base directory (-N dir), which is netboot/bootrom (unless netboot is installed)
2. Making boot images. I believe both share the same boot image format - is it true? KY: Yes the tagged image format is common. KY: In addition Etherboot can load FreeBSD images KY: in a.out or ELF format if this option is compiled in. Both have utils to make the boot image (called mknbi*), and these are different (in spite of their common origin): - Netboot has utils to make DOS or Linux images, and Menu image (written in some Pascal-like language); this allows selecting which boot image is to be used (e.g. DOS or Linux or FreeBSD) - Etherboot can make images for linux, freedos (loading kernel without the image and saving memory this way), dos, and rom - this last allows to load bootrom image from boot image, for testing purposes; I did not see info about menu there. [seems need write more on the topic - later]
3. Where can get them from and what version? Etherboot: http://etherboot.sourceforge.net/ version 4.6.3 of 08 Jul 2000 Netboot: http://www.han.de/~gero/netboot.html version 0.8.1 of 07 Jun 1998 version 0.9.0 of 22 Mar 1999 (may be unstable) (the 'version' is the last known when I was writing it)