1.  Field of the Invention
Embodiments of the present invention relate generally to the selection of network boot devices and more specifically to a method for selecting a network boot device using a hardware class identifier. 
2.  Description of the Related Art
A diskless client is a computing device which, having little or no disk drive capacity, relies on a network connection to a server device to obtain stored data.  In certain computing environments, diskless clients can offer cost and management advantages over full-featured computing devices.  The diskless computing device becomes a client of a server system, which provides software boot images to the client.  The server system includes mass storage, such as one or more hard disks, from which operating system (OS) boot images are served to one or more client devices.  This type of server system is hereafter referred to as a boot server.  The boot server therefore maintains unique operating system boot images for each unique configuration of hardware represented in the client devices.  For example, one client device may include a specific type of graphics controller that uses a specific device driver, while a second client device may include a second type of graphics controller that uses a second type of device driver.  In such a case, the boot server maintains at least two unique boot images, one for each of the two unique configurations of hardware, determined by the specific type of graphics controller. 
Typically, the diskless client connects to the boot server by using a protocol such as internet Small Computer System Interface (iSCSI), which enables the client to use the boot server as a local boot device.  In order to establish this connection, the client requires the network address of the boot server.  However, in a situation where there are multiple boot servers providing multiple types of boot images, a determination of the proper boot server for a particular client must be made first.  In such a situation, the assignment of a client to a specific boot server may require the manual intervention by a user or administrator, an expensive and error-prone process.  Further, a manual process requires that a new client will not be usable until the assignment is completed.  Also, to avoid a manual intervention every time the client is booted up, the server assignment may have to be fixed in the configuration of the client (i.e., hard-coded).  Thus, the flexibility of the overall system is reduced, since the hard-coding of each client to a server must be updated whenever changes are made to the addresses or contents of the boot servers. 
As the foregoing illustrates, there is a need in the art for a more efficient technique for assigning boot image servers to diskless computing devices.