Workflow of WDS.
Here is the workflow for WDS deployment, these steps assume that WDS, DHCP and client are on the same subnet.
1. PXE boot is initiated by the client to locate the DHCP server; the code- how to do that is located in firmware of the network adapter, here is the PXE specification document from Intel about PXE standard: specification: https://download.intel.com/design/archives/wfm/downloads/pxespec.pdf . Note that WDS server too recives the broadcast packet in this case but it did not respond since client does not have any valid IP.
2. as per the PXE boot process, a DHCPOFFER packet is sent to the DHCP server to locate a DHCP server so that client can register itself to the TCP network, here is the link for DHCP lease process, https://technet.microsoft.com/en-us/library/cc958935.aspx
3. Once DORA process occurs and at the end of this process client receives an IP; this IP will then be used to copy over some of the other files.
4. Client sends a broadcast packet again this time to identify the network boot server, this time WDS server acknoledges it and we download wdsnbp.com, though this is not an actual boot program; it performs following very important tasks.
- It performs the platform validation; is it a x86, x64 or amd64 based machine.
- It parses any rule that has been confured from server side, e.g. any client unattend.xml that is specified at the server side or any auto add rules that are configured on the server side.
5. we now download, pxeboot.com or pxebootn12.com- These are the actual boot programs that are responsible for doing the network boot, later one will ask user to hit an enter key before it will proceed to the WDS install, former one will directly proceed to network boot.
..whatever is download henceforth is via TFTP protocol.
6. Bootmanager, bootmgr.exe is downloaded from \boot\x86 or from \boot\x64 based upon applicable architecture.
7. BCD is downloaded from the same directory.
8. BCD store contains the entries for the boot images that are added in the WDS console. Boot Manager reads BCD store and if there are multiple entries found in BCD store (multiple boot.wim) it gives user a choice to pick one.
9. Once user chooses which boot.wim he wants to boot into, WDS downloads boot.sdi- this is a virtual directory on which boot.wim is actually mounted, (remember- we can't access boot.wim just like that we have to mount it first.)
10. Now we download boot.wim, the actual winpe. since this is of around few hundred MBs; it takes some time to dowload over winpe.
11. Boot.wim, if coped over directly from windows DVD will have two indexes; the second index is applied to the on the client.
12. Winpe boot process occurs, https://technet.microsoft.com/en-us/library/cc721977%28v=ws.10%29.aspx lists the steps to what happened next, essentially, winpeshl.exe is called which looks for setup.exe
13. Since setup.exe is explicitly defined at the root of this boot.wim, winpeshl.exe starts executing it.
14. Serup.exe identifies that it is booted from a PXE mode by checking HKLM\System\CurrentControlSet\Control\PXE. key, so it knows that it has to start in the WDS mode, so it prompts for user for the credentials to connect to WDS server, here is more information about the setup.exe wds mode https://technet.microsoft.com/en-us/library/cc770495(v=ws.10).aspx
15. Once the connection is established, install.wim is downloaded and is applied over the client, the installation is now pretty similar to how you install from a DVD.
thank you for reading.
Comments
- Anonymous
December 05, 2016
In the BCD store, is it possible to point it at a image that's already installed? Or is it possible to have an actual pre-setup Vhd / WIM downloaded and mounted?