Product Documentation

Configuring UEFI pre-boot environments

Mar 08, 2017

XenDesktop supports Unified Extensible Firmware Interface (UEFI) hardware technology on Hyper-V VMs that are managed using SCVMM and streamed using Provisioning Services. This enables customers to: 

  • Stream the server operating system at startup time using gigabit network speeds, so users experience faster startups
  • Support TB disks in a virtualized environment 

UEFI is a complete replacement for the BIOS and requires a new bootstrap. Two new bootstraps are available: one for 32-bit and one for 64-bit systems.  The introduction of another bootstrap complicates network topologies depending upon how the bootstrap is delivered.

Network topology

Using a PXE server allows for the simplest topology because the PXE protocol works with multiple architectures. The Provisioning Services PXE Server recognizes the architecture flag embedded in the DHCP, then discovers and returns the appropriate bootstrap filename. Both legacy BIOS computers and UEFI computers may therefore be located on the same network segment.

If DHCP option 67 is chosen, there are two topology options:

  • On a single segment, use DHCP reservations to specify the bootstrap filename (option 67) for each and every target device. This is feasible for smaller environments but quickly scales out of hand for enterprise environments.
  • Divide the environment into multiple segments, isolating the legacy devices from the UEFI devices. For each segment, configure a DHCP scope with the appropriate option 67 set.

Configuring bootstraps

The UEFI bootstrap cannot have embedded settings. DHCP options are therefore used to configure the UEFI bootstrap.

DHCP Option 11 – RLP Server

Option 11 allows you to specify multiple IPv4 addresses. Use this option to specify the addresses of the streaming NICs on the Provisioning Services server. You can specify more than four addresses. The UEFI bootstrap reads all addresses then uses round-robin to select one address to connect to.

Note:  Option 17 takes precedence over option 11.

DHCP Option 17 – Root Path

The Root Path option is typically used with iSCSI to specify the server and virtual disk to start. Provisioning Services uses the following format to specify the server address:

pvs:[IPv4]<:17:6910>   

pvs – Required identifier

IPv4 – Address of a streaming NIC on the Provisioning Services server

17 – Protocol identifier for UDP (required if a logon port is specified)

port – Logon port (not required if the default port of 6910 is used)

Examples:

pvs:[server.corp.com]:17:6910

pvs:[server.corp.com]

pvs:[192.168.1.1]

pvs:[192.168.1.1]:17:6910

Associating a target device with a bootstrap

Use the BOOTPTAB file to associate a target device with a specific bootstrap. At Provisioning Services 7.7, the following changes have been made to the format of the BOOTPTAB file to support mixed legacy and UEFI environments:

  • The ‘ar’ tag specifies the architecture of the target device’s boot environment. You can make multiple entries for the same MAC address but different architectures. This is for use with hardware that supports both legacy BIOS and UEFI booting.
  • Wildcards are not supported. If an entry for a given MAC address is not found in the BOOTPTAB file, the registry is searched for an appropriate value for the architecture. If neither is found, a default value is used.

The registry is used to provide the default bootstrap file name for a given architecture. The name of the value is the architecture number and the value is a string with the name of the bootstrap file. The following table lists the architectures supported and entries created by the Provisioning Services installer:

HKLM\Software\Citrix\ProvisioningServices\Boot Services\PXE

Value

Architecture

Bootstrap file name

0

x86  BIOS

ardbp32.bin

6

x86 UEFI

pvsnbpia32.efi

7

x64 UEFI

pvsnbpx64.efi

9

EBC (for VMware ESX)

pvsnbpx64.efi

 

The full list of architectures is available from the IETF:  www.ietf.org/assignments/dhcpv6-parameters/dhcpv6-parameters.xml

The format of the BOOTPTAB file is:

<hostname>:ha=<mac_address>:ar=<architecture>:bf=<bootstrap_name>

Examples:

host001:ha=001122334455:ar=0:bf=ardbp32.bin

host002:ha=554433221100:ar=7:bf=pvsnbpx64.efi

If the architecture flag is missing, 0 is the default value.