Windows 2008 R2 / Windows 7 with Citrix PVS – System reserved partition issue

Now that I am done with a new XenApp 6.5 Farm, it is time to set up Citrix Provisioning 6.1 and convert the environment to a PVS managed farm.

Unfortunately after booting up a converted Windows 2008 R2 XenApp 6.5 server to a PVS disk with XenCovert, I received a “Please insert System Disk” error when booting up.  After doing some research, I realized that that the System Reserved partition is not compatible for a Provisioned image. Note that this applies to Windows 7 as well.

Some facts:
If you install Windows 7/Windows 2008 on a clean disk with no existing partitions, it creates a System Reserved partition at the beginning of the disk and uses the remainder of the unallocated space to create your system drive. That small partition isn’t assigned a drive letter, so you won’t even know it exists unless you look in the Disk Management console or use a low-level utility, such as Diskpart, to inspect the disk structure.


1. Set up your Windows 7/ Windows 2008 R2 servers without the System Reserved partition:

Once Setup is loaded, press Shift + F10 keys at the first setup screen (which allows selection of language, keyboard and locale). A Command Prompt window will be opened.

Run Diskpart

Type in the following:

List disk (to show the ID number of the hard disk to partition, normally is Disk 0)

select disk 0 (change 0 to another number if applicable)


create partition primary

select partition 1


format fs=ntfs quick


Continue installation

2. Remove the System Reserve partion – In my case this is what I had to do since the server I wanted to convert to a PVS image was already finalized.

I found this solution in this article from terabyte however Carlo from extracted the information into a simple to follow instructions.

Assign a drive letter to the System Reserved partition. I used S.

Unload the BCD registry hive by running the following command:

reg  unload  HKLM\BCD00000000

Copy the bootmgr file from the System Reserved partition to the C: Partition. 

robocopy  S:\  C:\  bootmgr

Copy the Boot folder from the (booting) partition to the C: partition.

robocopy  S:\Boot  C:\Boot  /s

To update the copied BCD file so it will boot correctly, run the following command:

bcdedit  /store  c:\boot\bcd  /set  {bootmgr}  device  partition=C:

Remove the Drive letter (S:) from Disk Manager and Reboot.

Once the System Restarts (Booting from the C: drive now), you are now free to delete the System Reserved partition.image

With only 1 active Volume now, you can assign a vDisk (in my case V) and proceed with your XenConvert imaging.  Be sure to use Volume to Volume.

Lastly as noted by MWaler in his post (thanks for the pointer) , make sure to set the active partition, if not you will run into issues when booting up.



Injecting drivers to your PVS image

Ok… so if you been working with XenApp for a while, well you know that PVS is an awesome way of distributing virtual apps to internal/external users.

I am proud to have worked in a very complex and demanding PVS environment where I learned a ton from.  To give you some history, we started with an ESX 3.5 XenApp environment and decided to go with PVS images as we were hosting over 400 XenApp apps.  Because of the success and demand for Apps, we decided to go physical rather than virtual in order to get more users per XenApp server. (I did try XenServer but it just did not compare to a physical server)

One of the best messaging engineers I had the pleasure of working with injected in my brain that I should always consider running a hybrid virtualization environment, meaning utilize virtualization as much as you can, but always think what would happen if your visualization layer goes down (Thank you Mike).  For a company where XenApp was the ONLY way of working remotely, and very crucial business units ONLY utilized XenApp for their everyday work, downtime was not an option.

Well with that thought in mind… How the hell can we make virtual XenApp VMs boot up on physical servers?  Let me tell you that this process can be tedious.

Now the article below assumes you already have a PVS image.  If your process includes updating the PVS device software taget.  Please read this good article from Citrix first.

Lets get started

1 ) Boot existing VM in standard mode with image that will be updated

2) Add drive to VM (this can be done while VM is powered on).  Drive must be larger than the used capacity of the vdisk to be imaged.  Below is a sample screenshot of a new F: added to the VM


3) Run BNImage.exe from C:\Program Files\Citrix\Provisioning Server.  Select new drive as destination for image


4) When imaging completes, set partition as active in device manager.  Shutdown VM.

5) Set Machine to boot from hard drive on provisioning server

6) Change order of disks on VM so new drive is SCSI 0: 0.  Cache Drive should be SCSI 0: 1

7) Boot machine from local disk

8) Add SCSI drivers to image for target device (not necessary for G6 – G7 since the SCSI controller is the same)

9) Remove current version of provisioning server software.

10) Upgrade VMWare tools to latest version

11) Remove VMware Tools, VMWare user process, SunJavaUpdateSched from windows run key (HKLM\Software\Microsoft\windows\currentversion\run)

11) Upgrade VM to hardware version 7 (this requires shutting down VM). Right click on the VM in the VI client for this option.

13) While VM is shutdown, Change NIC for VM to VMXNet3.  Update provisioning server with new MAC address

14) While VM is shutdown, Temporarily add additional disk to VM on SCSI bus 1:xx.  This will add an additional SCSI controller.  Select LSI SAS.

15) Power back on virtual machine.  VMXnet3 will be detected, and LSI SAS controller.  Add drivers for LSI SAS controller. –

16)  Shutdown VM and remove temporary drive on SCSI bus 1:00.  Change first SCSI controller to LSI SAS.

17) Boot VM with Acronis CD – [CTXStore_UnProtected_01] AcronisBootCD.iso.  Create Acronis image of VM on Network location

18) Boot target physical machine with Acronis CD.  Copy image created from VM to local drive on server.

19) Set physical machine to PXE boot from provisioning server.  Set machine to boot from hard drive on provisioning server.  Attach blank PVS VHD disk to machine that image can be copied to.

20) Boot physical machine into OS on local drive.  Machine will hang for a few minutes on the login screen while drivers are loaded in the background.  If the machine is not yet accepting keyboard input just wait a few minutes.  Once drivers are finished loading, login.

21) Install Provisioning server target device software (5.6 SP2).   PVS_Device.exe

Once installed new PVS volume should show up right away without reboot (as long as the server was PXE booted).

22) Run Bindcfg.exe from C:\Program Files\Citrix\Provisioning Services\.  Select additional NICs to bind PVS to.

23) Verify registry keys in Citrix KB article after PVS target reinstall –

22) Run BNImage.exe software to image local disk to provisioning server drive.

23) Switch server to boot from vdisk, confirm server boots correctly from vdisk