From owner-freebsd-hackers@FreeBSD.ORG Thu Jan 8 12:48:44 2004 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7EF3816A54F for ; Thu, 8 Jan 2004 12:48:44 -0800 (PST) Received: from hermes.aueb.gr (hermes.aueb.gr [195.251.255.142]) by mx1.FreeBSD.org (Postfix) with ESMTP id A0A3A43D53 for ; Thu, 8 Jan 2004 12:48:26 -0800 (PST) (envelope-from dds@aueb.gr) Received: from aueb.gr (faculty05.right.dialup.aueb.gr [195.251.255.249]) by hermes.aueb.gr (8.12.9/8.12.9) with ESMTP id i08KmWiC016091; Thu, 8 Jan 2004 22:48:33 +0200 Message-ID: <3FFDC218.60607@aueb.gr> Date: Thu, 08 Jan 2004 22:48:24 +0200 From: Diomidis Spinellis User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031007 X-Accept-Language: en-us, en, el, de MIME-Version: 1.0 To: Brooks Davis 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> In-Reply-To: <20040108171108.GA6216@Odin.AC.HMC.Edu> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: hackers@freebsd.org cc: "Matthew D. Fuller" Subject: Re: Discussion on the future of floppies in 5.x and 6.x X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Jan 2004 20:48:45 -0000 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