Windows remote-boot quick guide

(c) 1999-2000 Copyright Rembo Technology SaRL - All rights reserved
http://www.bpbatch.org

Contents

 

 

Introduction

A remote-boot computer is a computer that does not relies on local ressources (such as its hard disk) to start, but uses centralized remote ressources (through the network) instead.

In the context of remote-booting, Windows can be used at both end : as a remote-boot server or as a remote-boot client. This document will describe each of these two alternatives, beginning with the client-side.

Windows as a remote-boot client

The simplest way to remote-boot a Windows client is to let the bootstrap program download an image of bootable floppy disk, install it as a ramdisk and boot it. This is the traditional configuration for diskless PC.

Of course, this is not the most efficient way of doing it. If your Windows client is disk-based (i.e., if there is a hard-disk in your Windows client), you can do many operations on it before starting Windows, and use it as a cache to reduce network load. But let's start with simple case : just booting a ramdisk.

Disk-less configuration

Booting a Windows ramdisk means loading the ramdisk content, installing a ramdisk driver, loading the boot sector at the proper memory location and jumping into it. Early bootroms did not even use a bootstrap program to do it - they had the code built-in. However, in order to be able to add new features, it is wiser to leave this code out of the bootrom, and have it at a place where it is easier to upgrade.

As the size of the ramdisk is limited (typically to the side of a floppy disk), you will have to carefully decide what to put on it, and leave the rest on a file server that you will access through your favorite network software (such as Netware, LAN Manager or NFS). However, to get access to the network, your client will need to get some host-specific network parameters. The only way to do it is to configure the network software to discover these from itself, for instance using the DHCP protocol.

Several tools are available for remote-booting disk-less Windows clients. Incom/Bootix and Lanworks sell two different proprietary bootroms that can handle simple ramdisks without a separate bootstrap program. However, if you want more flexibility and advanced features, you should rather consider buying a PXE-compliant bootrom, and freely choose your favorite fully-featured bootstrap loader listed below.

Intel offers a free bootstrap program for remote-booting a DOS ramdisk (known as the Intel PXE PDK for Windows). BpBatch can also do that, along with many other nice features.

Disk-based remote-boot

When the client computer has a hard-disk (as it is almost always the case nowadays), there is much benefit to take from it in the context of remote-booting. And in opposition to a wide-spread credence, a properly configured disk-based remote-boot client is as safe and robust as a disk-less client.

There are three ways to safely use a hard disk for remote-booting Windows, that can be freely combined :

  1. as a cache for the ramdisk images
  2. as a cache for a networked filesystem
  3. as a giant "ramdisk" (that is, as a volatile storage media that is entirely refreshed at each boot).

 

To be safe, a disk-based cache has to be validated by some kind of hash function, in order to ensure that the data it holds is valid and up-to-date. The only remote-boot package that currently supports caching ramdisk images is BpBatch.

Remote filesystem caching for DOS and Windows has been extensively developped by Measurement Techniques, Inc under the name Shared Lan Cache (SLC). It is a good commercial software.

Using a hard-disk as a volatile storage media involves either blindly rewriting it completely at each boot, or verifying each file by a hash function. BpBatch uses the first approach, and is able to completely rewrite a ready-to-use FAT filesystem within a few seconds (for a small Windows 3.1 image) or a few dozens of seconds (for a full Windows 98 image). We do not know of any other package that has this capability.

Windows as a remote-boot server

Windows NT can be used as the server for remote-boot clients by providing DHCP and TFTP services to bootroms. Installation and configuration of services for operation with PXE bootroms will be discussed in this section.

BOOTP/DHCP server

We strongly recommend to use the built-in DHCP server preinstalled in Windows NT server. If DHCP does not seem to be installed on your Windows NT server, go in the "services" tab of the network control panel and add the Microsoft DHCP service. Once installed, use the DHCP manager tool (Administrative Tools) to configure the DHCP server.

The first step of the installation is to create a DHCP scope. A scope is a range of addresses reserved for DHCP (i.e. the DHCP server can use any of the addresses contained in this scope for DHCP clients requesting an IP address).
The DHCP server will dynamically allocate addresses to clients requesting address. If you want to statically bind a specific host with a specific IP address, you must create a reservation (Scope menu).

A PXE bootrom requires specific DHCP parameters. If these parameters are not present in the DHCP reply, the PXE bootrom will display an error message and will halt. Here is the list of required DHCP parameters :

 

Setting up Basic IP information is straightforward. IP address and subnet mask are defined by the scope itself, and the default gateway can be set by adding the "Routers" options to the scope.

The boot filename is defined by the DHCP option 67 (overloaded bootfilename) because the DHCP server does not give access to the standard DHCP bootfilename field. Server IP information cannot be changed. The DHCP server always set its own IP address in this field. The TFTP service must therefore be located on the same computer as the DHCP server.

To setup PXE-specific information, you will have to add a new option tag (menu options/default) for the vendor class. Set the name of this new option to "ClassID", its type to "String" and its identifier to 60. You will then be able to add this new option to the scope and set its value to "PXEClient".
Vendor encapsulated options are defined by option 43. If you do not want to specify PXE specific options, set this value to the following array of bytes, preserving the ordering: 01,04,00,00,00,00,ff.
Note: if you are using the Intel PXE PDK for Windows (for TFTP), you can disable the ProxyDHCP service. This service is only used when the DHCP server cannot provide PXE-compliant information. To disable the ProxyDHCP service, stop and disable the "Intel boot services" in the service control panel.

Note for BpBatch users: BpBatch gets its arguments from the DHCP option 135. To specify a value for this option, you must first create it (menu options/default). Use the name "BpBatch arguments", type "String" and identifier 135.
If you plan to use DHCP site-specific options in your script, please note that you can only use options 128 to 134. Other options are not processed by PXE bootroms.

TFTP server

TFTP is the protocol used by bootroms in order to get files from the server. Any TFTP server could be used for PXE bootroms, but we recommend you to use an enhanced server, supporting large blocks transfers. This will speed up large TFTP downloads. Enhanced servers also support MTFTP, a multicast variant of the TFTP protocol, used to reduce the amount of traffic generated.

Two enhanced TFTP servers are available for Windows NT: Incom/Bootix TFTP server and Intel TFTP server. We recommend you to use the Intel TFTP server. This server is included in the PXE PDK for Windows.

Configuration of the TFTP server is done by changing keys in the registry. You can get a list of all the keys in the PXE PDK documentation. If you need to store files available by TFTP in a different location, you will have to change the following key:

HKEY_LOCAL_MACHINE\SOFTWARE\Intel\PXE\MTFTPD\BASE_DIR

Additional information about Intel TFTP server can be found in the PXE PDK for Windows documentation

Note for BpBatch users: the boot filename DHCP parameter is used by BpBatch to determine which kind of TFTP is installed. If the filename is "bpbatch", BpBatch will use standard TFTP services on port 69. If the filename is "bpbatch.P", then BpBatch will use large packets service on port 59. Finally, if the filename is "bpbatch.B", then BpBatch will use large packets service on port 69 using the blksize option.
The following list will help you choose the name of the boot file depending on your TFTP server:

 

Links and related documentation

 

[ top ]