How to Native VHD Boot on dynamic host volume?

I'm aware of this limitation, just asking if there is a work around.

I have several 80Gb hdd that I used to natively boot VHD Oses. If I limit the VHD volume to 50Gb it will be just fine. Because usually, the actual file after some tinkering reach 22Gb. After compacting the VHD and adding a child VHD to it, it will still manage to get by the 74Gb net hdd space available.

However, I run problems lately when the parent VHD reaches 35Gb. No matter how many compacting it, attaching the VHD and manually deleting garbage files (temp and others stuff), I can only manage to reduce the VHD's physical file size to 34Gb.

So I decided to convert the basic disks (2pcs. 80Gb) into dynamic disks and extend the host volume on disk 1 to disk 2. Thus, technically, the host volume becomes 148Gb.

Problem is, it will not boot. I don't have the luxury of bigger hdd to spare.

I utilized: bcdedit, bcdboot, bootrec, bootsect and diskpart utilities found on the WinPE disc when performing VHD manipulation. There is nothing there with help- or /? documentation that can help me work around this limitation. Even the internet does not have any.

I got the thinking, may be there are undocumented routine within those utilities that will work.

Of particular is bcdedit, bcdboot and bootrec. And probably bfsvc.exe, which there is no documentation available.

Case 1:

A working 50Gb native VHD boot (actual file size 35Gb) is added with child VHD on an 80Gb basic disk (hdd 1). To overcome space limitation, additional basic disk (hdd 2) in installed.

Assumed hdd 1 and hdd 2 as disk 0 and disk 1 inside diskpart, respectively. Assumed further, disk 0 has two (2) partition, (a) a 300MB active and (b) host volume of the VHD

diskpart//

select disk 0

convert dynamic

select disk 1

convert dynamic

select disk 0

select partition 2

extend disk=1 (this command extend the 74Gb volume of disk 0 to the space of disk 1 which is 74Gb, or 148 total)

exit

restart.... BSOD

interestingly, bcdedit /v will point to entries as would functioning VHD boot would. Except for some slight variation, that will account for the conversion of the basic to dynamic disks. e.g. device entry will point to partition instead of volume.

Case 2

2 clean 80Gb (hdd 1 and 2) and a functioning VHD on the third disk (hdd 3).

Assumed, hdd 1,2,3 as disk 0, disk 1 and disk 2, inside diskpart.

Routine 1:

diskpart//

select disk 0

convert dynamic

select disk 1

convert dynamic

select disk 0

create partition primary size=300

active

format fs=ntfs label=BootHD quick

create partition primary

format fs=ntfs unit=64k label=BaseHD quick

extend disk=1

select partition 1

assign letter=d

select partition 2

assign letter=e

exit

Routine 2

xcopy *.vhd from hdd 3 (C:) -> E:

Routine 3

diskpart//

select vdisk file=XXXX

attach vdisk

exit

Routine 4

Assumed vhd was assigned F:

bootsect /nt60 d: /force /mbr

bcdboot f:\Windows /s d:

error....

BFSVC.EXE xxxx blah..blah..blah

bootrec /scanos

....Found xxxxxx f:\

Add xxxxxx type Y(YES), type Y

error....

BFSVC.EXE xxxx blah..blah..blah

surprisingly, bcdedit /v will point to entries unusual to a functioning VHD boot would.

I have use diskpart, bcdedit, bcdboot and bootrec before without glitch. Matter is, what is this BFSVC.exe (Boot File Servicing Utility) supposed to be doing. And more important, how to use it. It doesn't seems to respond with help- or /? syntax. Any documentation?

January 13th, 2014 6:29am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics