OK, I've had a chance to stabilize the software itself over the past week, ready to look at this again now.
@Trip: Well, I tried that parameter - and got the output below (yaaay I can finally paste - that took long enough); so I'm putting this one on ice for the moment.
C:\Users\c>reagentc /setreimage /path c:\ /target c:\windows /index 1
REAGENTC.EXE: Windows RE cannot be placed in the root directory of a volume.
@Misty: Here's the exact batch I used (yaaay I can finally paste - if I could only upload images too now), on a 64 bit BIOS mode VMware install of Windows 8.1 with Update 1:
ECHO Creating ramdisksdidevice entry...
for /f "tokens=2 delims={}" %%g in ('bcdedit.exe /create /device') do set ramdisk={%%g}
bcdedit.exe /set %ramdisk% ramdisksdidevice partition=R:
bcdedit.exe /set %ramdisk% ramdisksdipath \recovery\windowsre\boot.sdi
echo.
Echo Adding RAM Boot WinPE entry...
for /f "tokens=2 delims={}" %%g in ('bcdedit.exe /create /application osloader') do set GUID={%%g}
bcdedit.exe /set %GUID% systemroot \Windows
bcdedit.exe /set %GUID% detecthal Yes
bcdedit.exe /set %GUID% winpe Yes
bcdedit.exe /set %GUID% osdevice ramdisk=[R:]\recovery\windowsre\winpe.wim,%ramdisk%
bcdedit.exe /set %GUID% device ramdisk=[R:]\recovery\windowsre\winpe.wim,%ramdisk%
bcdedit.exe /set %GUID% path \windows\system32\winload.exe
bcdedit.exe /set %GUID% description "Windows PE (BIOS)"
bcdedit.exe /displayorder %guid% /addlast
echo.
pause
I had assigned the drive letter R: to the recovery partition previously with diskpart. And \recovery\windowsre\ is where the dough is at, on the VM at least. Below's the bcdedit /enum /v:
Windows Boot Manager
--------------------
identifier {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device partition=R:
description Windows Boot Manager
locale en-US
inherit {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
integrityservices Enable
default {ebf50045-2dfc-11e3-989e-9fdd3899dfcb}
resumeobject {ebf50044-2dfc-11e3-989e-9fdd3899dfcb}
displayorder {ebf50045-2dfc-11e3-989e-9fdd3899dfcb}
{ebf50049-2dfc-11e3-989e-9fdd3899dfcb}
toolsdisplayorder {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout 30
Windows Boot Loader
-------------------
identifier {ebf50045-2dfc-11e3-989e-9fdd3899dfcb}
device partition=C:
path \Windows\system32\winload.exe
description Windows 8.1
locale en-US
inherit {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
recoverysequence {ebf50046-2dfc-11e3-989e-9fdd3899dfcb}
integrityservices Enable
recoveryenabled Yes
allowedinmemorysettings 0x15000075
osdevice partition=C:
systemroot \Windows
resumeobject {ebf50044-2dfc-11e3-989e-9fdd3899dfcb}
nx OptIn
bootmenupolicy Standard
Windows Boot Loader
-------------------
identifier {ebf50049-2dfc-11e3-989e-9fdd3899dfcb}
device ramdisk=[R:]\recovery\windowsre\winpe.wim,{ebf50048-2dfc
-11e3-989e-9fdd3899dfcb}
path \windows\system32\winload.exe
description Windows PE (BIOS)
osdevice ramdisk=[R:]\recovery\windowsre\winpe.wim,{ebf50048-2dfc
-11e3-989e-9fdd3899dfcb}
systemroot \Windows
detecthal Yes
winpe Yes
Here's the boot error (no VMware error, but a black Windows error screen):
Windows Boot Manager | Windows failed to start...
Status: 0xc000000f
A required device isn't connected or can't be accessed.
(Would have loved to attach a direct VM screenshot, but need to figure how to upload files first).
So, still no joy.
@Wonko: More bad news for the WinRE reuse idea comes from, maybe you guessed it, the Surface Pro front. I assigned partition letter R to my recovery partition using diskpart, and here's what I get on the command line:
C:\Users\c>chkdsk r:
The type of the file system is RAW.
CHKDSK is not available for RAW drives.
C:\Users\c>r:
The device is not ready.
C:\Windows\System32\Recovery\reagent.xml makes it clear that this is the right partition:
<?xml version='1.0' encoding='utf-8'?>
<WindowsRE version="2.0">
<WinreBCD id="{f8db333a-6f15-11e3-9c00-281878d8fc61}"/>
<WinreLocation path="\Recovery\WindowsRE" id="0" offset="1048576" guid="{f34ab2f8-14cb-4329-b960-29ac0ac5a0c0}"/>
<ImageLocation path="" id="0" offset="0" guid="{00000000-0000-0000-0000-000000000000}"/>
<PBRImageLocation path="\RecoveryImage" id="0" offset="57941164032" guid="{f34ab2f8-14cb-4329-b960-29ac0ac5a0c0}" index="1"/>
<PBRCustomImageLocation path="" id="0" offset="0" guid="{00000000-0000-0000-0000-000000000000}" index="0"/>
<InstallState state="1"/>
<OsInstallAvailable state="1"/>
<CustomImageAvailable state="0"/>
<IsAutoRepairOn state="1"/>
<WinREStaged state="0"/>
<OperationParam path=""/>
<OsBuildVersion path="9600.16384.amd64fre.winblue_rtm.130821-1623"/>
<OemTool state="0"/>
<IsServer state="0"/>
<DownlevelWinreLocation path="" id="0" offset="0" guid="{00000000-0000-0000-0000-000000000000}"/>
<ScheduledOperation state="5"/>
</WindowsRE>
There's also a few more potential issues that occur to me:
a ) Assume we can work around the above issue (need to figure out how). Otherwise, no-go.
b ) Do we know whether, when Windows 8.1 Update 1 is installed, the WinRE environment also gets updated to Windows 8.1 Update 1 with the WoF driver for WIMBoot? Otherwise, again, this is a no-go type situation.
Edited by simonking, 07 July 2014 - 10:55 PM.