Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 08 Jan 2004 22:48:24 +0200
From:      Diomidis Spinellis <dds@aueb.gr>
To:        Brooks Davis <brooks@one-eyed-alien.net>
Cc:        "Matthew D. Fuller" <fullermd@over-yonder.net>
Subject:   Re: Discussion on the future of floppies in 5.x and 6.x
Message-ID:  <3FFDC218.60607@aueb.gr>
In-Reply-To: <20040108171108.GA6216@Odin.AC.HMC.Edu>
References:  <20040107235737.I32227@pooker.samsco.home> <20040108075059.GK53429@silverwraith.com> <20040108075811.GJ48603@over-yonder.net> <20040108095207.GA52153@atrbg11.informatik.tu-muenchen.de> <20040108171108.GA6216@Odin.AC.HMC.Edu>

next in thread | previous in thread | raw e-mail | index | archive | help
Brooks Davis wrote:
> I think it would be really cool if someone would add a feature to
> disk 1 to become a PXE install server.  It should be fairly straight
> forward other then dealing with sysinstall.

I presume the above means a PXE *client*.  This would be cool, but by no 
means trivial.  I looked at this in the past when I wanted to network 
boot FreeBSD on a couple of machines that did not support a boot ROM and 
reached a dead end; I ended up using PicoBSD and NFS-mounting most of 
the stuff.

Following Brook's suggestion, I looked around to see how difficult a PXE 
client project would be.  Here are some bullets and pointers:

- What we would need is a PXE emulator.  PXE stands for Portable 
Execution *Environment*, and it really does supply a (primitive) but not 
trivial environment used to bootstrap the code.

- Microsoft supplies with its Remote Installation Server (RIS) a program 
(rbfg.exe) that creates such an emulation floppy.  This PXE emulator 
only supports PCI cards.  See http://support.microsoft.com/?kbid=242920

- Apparently the same product, but with additional functionality, is 
sold by Argon Technologies.   See 
http://www.argontechnology.com/rbfg/index.shtml

- An open-source project called pxe-toolkit aimed at providing examples 
of PXE client and server code.  The project seems to have dissappeared 
from the face of the earth.  Its homepage on freshmeat and a download 
page on savannah are dead; a page with links on 
http://savannah.nongnu.org/projects/pxe-toolkit does not contain any 
useful pointers.

- The PXE specification (2.1) is freely available from Intel in PDF 
format (500K, 103 pages).  See 
ftp://download.intel.com/labs/manage/wfm/download/pxespec.pdf

- Implementing a PXE client from scratch is obviously doable, but not 
trivial.  One problem is that the API is 16-bit, so we would have to use 
16-bit development tools, libraries, and an execution environment.  The 
client should support a DHCP client, preboot functionality, and an API. 
  The API consists of 37 relatively high-level functions providing TFTP, 
UDP, and UNDI (Universal Network Driver Interface) functionality.  Here 
is a list to give you a rough idea of the functionality that has to be 
provided:

UNLOAD_STACK, GET_CACHED_INFO, RESTART_TFTP, START_UNDI, STOP_UNDI,
START_BASE, STOP_BASE, TFTP_OPEN, TFTP_CLOSE, TFTP_READ, TFTP_READ_FILE,
TFTP_GET_FSIZE, UDP_OPEN, UDP_CLOSE, UDP_WRITE, UDP_READ, UNDI_STARTUP,
UNDI_CLEANUP, UNDI_INITIALIZE, UNDI_RESET_ADAPTER, UNDI_SHUTDOWN,
UNDI_OPEN, UNDI_CLOSE, UNDI_TRANSMIT, UNDI_SET_MCAST_ADDRESS,
UNDI_SET_STATION_ADDRESS, UNDI_SET_PACKET_FILTER, UNDI_GET_INFORMATION,
UNDI_GET_STATISTICS, UNDI_CLEAR_STATISTICS, UNDI_INITIATE_DIAGS,
UNDI_FORCE_INTERRUPT, UNDI_GET_MCAST_ADDRESS, UNDI_GET_NIC_TYPE,
UNDI_GET_IFACE_INFO, UNDI_GET_STATE, UNDI_ISR.

I hope this information helps if anyone wants to take it up from here.

Diomidis
-- 
Diomidis Spinellis                      Assistant Professor
Department of Management Science and Technology      (DMST)
Athens University of Economics and Business          (AUEB)
http://www.dmst.aueb.gr/dds/             mailto:dds@aueb.gr




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3FFDC218.60607>