NOTE: THIS IS A WORK IN PROGRESS!

It is not complete at this point in time. (26-September-2002)

PXE Booting BSD/OS

This document describes the steps needed to have BSD/OS 4.3 and BSD/OS 5.0 boot from a server using PXE. Detailed configuration steps for all the components that need to be configured are described. This includes the DHCP server, the TFTPD server and the operating system software that will be downloaded to the computer.

My personal history with netbooting computers

I have been intrigued by network booting of various computer systems since I started using computers. I had early experiences with network booting of PC hardware in the summer of 1986, using a proprietary networking system, based on 2.5 mbps ArcNet technology. This system, designed and built around the Nestar manufactured PLAN server hardware, featured distributed booting of the client computer, network printing, volume sharing for read-only data and centralized backup software. This was all done on 8088 and 80286 class computers, using PC-DOS 3.2, and later PC-DOS 3.3. When the 80386 processor was introduced, the same system ran on it too.

When I got to the University of Maryland, you can imagine my surprise to discover the rest of the PC world was so far behind the PLAN hardware and software capabilities -- the Novell Netware of the late 1980's was incapable of booting off the network. It just accessed network drives once the workstation had booted from a local hard disk. One giant step backwards. The 3Com hardware and software of that era was little better than Netware, it might have even been worse. Certainly it is hard to imagine a worse ethernet card than the 3Com 3C501!

I have worked on netbooting software and configuration of the following types of computers at various times in the past decade or so: DEC VaxStations, a DEC MicroVax, DEC MIPS-based workstations, Sun2 workstations, Sun3 workstations, and Sun4c/Sun4m/Sun4u workstations.

Computers that use Intel processors and Intel-compatible processors (hereafter refered to as ``x86'') have finally grown up and are now able to boot from a network, just the ``big boys'' of yesteryear. So, for me, it has come in a completely full circle. Once again it is time to work with the network booting capabilities on x86 based computers.

PXE: Theory of Operation

PXE provides a mechanism for a computer to perform certain operations before the actual boot code of the operating system starts running. In the case of PXE, it provides a path by which network configuration takes place and the retrevial of both network configuration information and the first level bootstrap program from a remote computer.

PXE uses extensions to the DHCP configuration mechanism, which provide for specification of a file to boot, often referred to as the PXE loader. Other options can be passed to the PXE loader via DHCP, which can be used to more fully specify what information should be used when booting.

PXE uses the tftp protocol for retrieving the PXE loader from a remote server. There must be a tftp server accessable by the client computer for PXE booting to be succesful.

Overall Strategy for PXE Operations with BSD/OS

PXE booting support was added in the 4.3 release of BSD/OS. BSD/OS 5.0 has essentially the same PXE support (with a few relatively minor changes to the pxeboot program), so both versions of the operating system will be treated as more or less the same for the remainder of this document. The PXE loader that is provided with BSD/OS is called pxeboot and is located in /usr/bootstraps/pxeboot. This program provides the functions of the standard /boot program, with certain additions. The first major addition is the ability to have full access to PXE configuration information in the boot program. The second major addition is support for reading files via NFS or retrieving them from a TFTP server has also been added to this program.

The file retrival support in the PXE loader does not need to be the same as the PXE ROM supports. In fact, on many systems, the same mechanisms are not supported by both the PXE ROM and the PXE loader. On BSD/OS, both tftp and NFS are supported retrieval mechanisms. Other operating systems' PXE loader programs, may not support retriving files via TFTP, but only via NFS. This somewhat limits the range of configurations those operating systems can support. More importantly, it forces the system administrator to have an NFS server accessible on the network that the client is using. Certain computer configurations, such as diskless X-Terminals, would benefit from not having to use any NFS mounted filesystems.

BSD/OS and PXE: Configuration Options

With the addition of both TFTP and NFS to the list of retrieval methods, a variety of different possibilities presents itself for how a machine boots off the network. Some of these possibilities are better suited to hostile network environments than others.XXX - awk

Running Entirely from TFTP files

Running from NFS Mounted Directories

Configuring Components

Configuring the ISC DHCP Server

Of DHCP Vendor Codes and PXE Boot Prom Bugs

Configuring the TFTPD Server

Populating the /tftpboot Directory

Other PXE Resources

Many people have written about PXE booting for many different situations. Some of the best work that I have found about this subject are here:
The Official PXE Specification, Version 2.1
The document that specifies exactly how PXE works, with all the lowest level, nitty-gritty details. Given that PXE is the Preboot eXecution Environment, there are lots and lots of x86 specific things in the specification (although some attention is paid to making this a multi-architecture protocol). A local copy of the specification PDF file is available from this server.
Matt Simerson's guide to installing FreeBSD via PXE.
All about automating FreeBSD installs when done from a PXE boot environment. Some instructions about configuring a DHCP server are also included.
``Installing and Maintaining clusters of servers using PXE and Rsync'' by Cor Bosman.
This paper appeared in the SANE2002 conference, held in May 2002. It describes automating FreeBSD server installation via PXE and also describes using rsync to track changes on a large number of servers. Local copies of the paper, both as Postscript and converted to PDF are available from this server.

Copyright

Copyright (c) 2002 Kurt J. Lidl. All rights reserved.
Redistributions of this information must retain the above copyright notice.
Valid HTML 4.0! lidl@pix.net
See http://www.pix.net/software/pxeboot/ for any updates to this file.
Last Update: $Date: 2008/09/29 01:58:49 $