Windows remote-boot quick guide
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
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.
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
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
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
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 :
- as a cache for the ramdisk images
- as a cache for a networked filesystem
- 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
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
- Basic IP information: IP address, default gateway, subnet mask.
- Bootrom information: the server IP address and a boot filename.
The bootrom will load the specified filename using TFTP on the given
server IP address. This filename will then be executed.
- PXE-specific information: vendor class set to "PXEClient" and a
valid set of encapsulated options (TAG 43)
Encapsulated vendor options describe PXE-specific parameters. You can
find a list of these parameters in the Intel PXE PDK documentation.
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
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 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
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:
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:
- Incom/Bootix TFTP server: bpbatch.P
- Intel (and Bootware) TFTP server: bpbatch.B
- Any other TFTP server not supporting the blksize option: bpbatch
Links and related documentation