17th April 07:02
(BlueBottle) Network Boot Thoughts
I have booted a new machine, an LG860A, completely over the network
using PXE. I have booted a MS DOS 6.22 environment, FreeBSD, and a tiny
"hello world" program of my own devising. I used a Win 2000 machine as
the BOOTP / DHCP / TFTP server using TFTP32 from
<http://tftpd32.jounin.net>. I also used a NFS demo server (proNFS,
labtam) to perfect the FreeBSD boot.
At long last, I have found a copy of Borland's Turbo Assembler that is
cheap enough I was willing to purchase it, so I have both TASM and MASM
I have assembled OBL.Asm using TASM.
I also have a Bluebottle kernel that retrieves files via a Ftp supported
ramdisk file system. The FtpFS code is in the distribution, a TFTP
version was developed first as a steppingstone.
So I am poised to take another small step toward a network boot diskless
bluebottle system. There are some choices to make.
The network boot programs (NBP) that I have found are mostly custom for
some environment or other.
1) pxeboot is bundled with the .iso boot image from FreeBSD, and it
is FreeBSD aware and possibly not amenable to booting another operating
system. However, if I install FreeBSD I should have the sources and be
able to modify it.
2) the pxboot program, on an OEM CD with my computer, ultimately
originating from http://www.bootmanage.com. This will load any standard
size disk image, but it complains of corruption if I try to use a
non-DOS image (native oberon or bluebottle)
3) NILO, in the unix tradition, gives me a month's work of stuff to
read and comprehend. It seems to be built on layers of other stuff, all
of which seems to be more and more homework and firmly pre PXE epoch.
So the questions come to mind:
1. What should a new NBP do?
2. Is there one around that already does it?
I propose that the NBP should be completely unaware of which operating
system it will boot next. It should probably give a rudimentary editor
that shows the environment variables that the PXE environment has set
up, and even allow them to be edited and saved (by sending them back to
the TFTP server.) It should avoid many more commitments, and it should
stay close to the PXE supplied services, e.g., use TFTP but not FTP.
It should send status messages back to a logging service, check the
clock for sanity.
This design means that the second file has to start execution at a well
known offset. The NBPs that boot a floppy image just start in real mode
at zero offset and use the boot sector on the floppy. This seems to be
ok as is, and constrains the next program, the network boot loader
Does this program exist?
NETWORK BOOT LOADER
This is probably a modification of OBL.Asm that uses the PXE bios calls
for TFTP instead of disk calls to load the Bluebottle kernel. This lets
a disk image be built with this loader instead of the disk based
loader using well known bluebottle technology. The Bluebottle kernel
would then switch to FTP or NFS to provide custom per machine and per
user bootups. This is bluebottle specific, probably just a boot disk image.