How to add an existing VHD to boot menu? Please help.

5th

Member
Member
Messages
14
Hello everyone!

A few years ago I setup my computer with Windows 8/8.1 on the local hard drive C:, just as usual. Then I added to VHDs to th menu, one Win 8.1 for games and one Windows Server 2012 R2 that I use from time to time for virtualization, where I run sort of my training environment.
Now my computer broke and I had it repaired at a shop, where they put in a new power supply. When I got my PC back on Friday, they said the'd tested it and it would boot to Windows.

Well, it does, but my boot menue has disappeared. Also, I noticed that system date was Dec 31st of 2017, so there might have been a BIOS/Firmware reset issue. Unfortunately I do not remember if my previous setting was to boot in BIOS or UEFI mode.
I do not know if or what they did to my BCD and I have a hunch they won't tell me, once I tell them about my problem. (And even if they did, my previous BCD won't just reappear by magic.)

As all my files still exist I thought it would be an easy job to add the two VHDs to the boot manager menu, but either I did not write down what I did last time or I can't find it. So I went through the internet, trying lots of tutorials and how-tos, but to no avail. One of the last ones was this one from the vendor. No matter what I try, after booting to one of my new boot menu items, the screen just stays black. It may also make a short beep, then reboot, but then the second time in a row it just stays dark. There is no error message.

I also tried to copy the original, working item, then point it to a VHD, but this also did not work.


I am probably missing something small, but I really have no idea. So every hint is appreciated here! :) After spending a few hours Friday night and Saturday on trying to get this running again, I am now here, kindly asking for your help.

BCD is attached below. Items are:
1: boot manager
2: local Windows on C:, as I got it back from the shop.
3: VHD for gaming. Apparently my config is currently not shown / got lost:
device vhd=[G:]\VMs\Games.vhd
osdevice vhd=[G:]\VMs\Games.vhd
4: VHD with my Windows Server 2012 R2 training environment
5: Copied #2 and had set
device vhd=[G:]\VMs\Games.vhd
osdevice vhd=[G:]\VMs\Games.vhd
which is not shown for some reason.

Thank you for your help! :)

Code:
Windows Boot Manager
--------------------
identifier              {bootmgr}
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
resumeobject            {a5d8c201-f0a6-11e1-aad7-9ef4fb42ac84}
displayorder            {current}
                        {d6bce695-d6d9-11e7-8499-ac220bc55fa4}
                        {d6bce696-d6d9-11e7-8499-ac220bc55fa4}
                        {d6bce697-d6d9-11e7-8499-ac220bc55fa4}
toolsdisplayorder       {memdiag}
timeout                 30
noerrordisplay          No

Windows Boot Loader
-------------------
identifier              {current}
device                  locate=\windows\{0e11e480-c500-47e8-8228-e97b0ba49ef5}
path                    \Windows\system32\winload.efi
description             Microsoft Windows
locale                  en-US
loadoptions             DDISABLE_INTEGRITY_CHECKS
inherit                 {bootloadersettings}
osdevice                locate=\windows\{0e11e480-c500-47e8-8228-e97b0ba49ef5}
systemroot              \Windows
custom:22000005         \windows\{0e11e480-c500-47e8-8228-e97b0ba49ef5}
resumeobject            {a5d8c201-f0a6-11e1-aad7-9ef4fb42ac84}
nx                      OptIn
pae                     Default
driverloadfailurepolicy UseErrorControl
detecthal               Yes
nocrashautoreboot       Yes
uselegacyapicmode       Yes

Windows Boot Loader
-------------------
identifier              {d6bce695-d6d9-11e7-8499-ac220bc55fa4}
device                  locate=\Windows\system32\winload.exe
path                    \Windows\system32\winload.exe
description             Windows 8.1 Games ][ (SSD)
osdevice                locate=\Windows
systemroot              \Windows
nx                      OptIn

Windows Boot Loader
-------------------
identifier              {d6bce696-d6d9-11e7-8499-ac220bc55fa4}
device                  vhd=[E:]\Daten\VirtualMachines\HV\vhd\WinSrv2012R2.HyperV-Bootcamp.vhdx
path                    \Windows\system32\winload.exe
description             Windows Server 2012R2 Bootcamp
osdevice                vhd=[E:]\Daten\VirtualMachines\HV\vhd\WinSrv2012R2.HyperV-Bootcamp.vhdx
systemroot              \Windows
nx                      OptIn

Windows Boot Loader
-------------------
identifier              {d6bce697-d6d9-11e7-8499-ac220bc55fa4}
device                  locate=\Windows\system32\winload.exe
path                    \Windows\system32\winload.exe
description             Windows 8.1 Games #2 (SSD)
locale                  en-US
loadoptions             DDISABLE_INTEGRITY_CHECKS
inherit                 {bootloadersettings}
osdevice                locate=\Windows
systemroot              \Windows
custom:22000005         \windows\{0e11e480-c500-47e8-8228-e97b0ba49ef5}
resumeobject            {a5d8c201-f0a6-11e1-aad7-9ef4fb42ac84}
nx                      OptIn
pae                     Default
driverloadfailurepolicy UseErrorControl
detecthal               Yes
nocrashautoreboot       Yes
uselegacyapicmode       Yes
 
In an elevated command prompt I have just tried to fix the missing device/osdevice of #3and #5:
bcdedit /set {d6bce695-d6d9-11e7-8499-ac220bc55fa4} device vhd=[G:]\VMs\Games.vhd
bcdedit /set {d6bce695-d6d9-11e7-8499-ac220bc55fa4} osdevice vhd=[G:]\VMs\Games.vhd

returned "The operation completed successfully.", but it still reads:
device locate=\Windows\system32\winload.exe
:think:
 
This thread has been moved. Please note that my issue is about native boot, not virtualization.
 
Use a free program like EasyBCD > Software Library - NeoSmart Technologies

and delete every BCD entry ( other than the current OS )

Mount each VHD and note the drive letter assignment (% = drive letter assignment)

then from a command prompt (admin) type:

bcdboot %:\ windows

it will create the boot entry for that certain vhd.. then you can again use EasyBCD to rename the description of the vhd boot entry...

I will also note that your BOOTMGR is using bootmgfw.efi
and your Current OS is using winload.efi

which means your system has a UEFI system partition.
Your VHD's are setup to use a Legacy / MBR boot

I assume these are x64 VHD's > if so > then you can just edit winload.exe to winload.efi
 
Hello KYHI!
I apologize for my late reply; my employer sent me on a bunch of business trips before Christmas which barely left me a day at home, so all my private stuff hat to wait. I was lucky I had all my presents ready before.

Thank you very much for your much appreciated help! I followed your procedure and it worked! :)

If I remember correctly, when I setup this installation some years ago, UEFI was pretty new (at least to me) and as I had heard of some problems it might bring, I decided to go with traditional BIOS. At a later time I changed this to UEFI for reasons I do not remember anymore - I think this was when I configured my training environment.

Unfortunately I only have a very vague idea of how booting works with Windows 8 and above. I bought two books on Windows 8/8.1, but both do not go deeper than listing all bcdedit commands. As I do not understand the boot process, when there is a problem, all I can do is look it up on the internet and follow the steps, not actually knowing what I am doing.
So if you (or anyone) has a recommendation on a book explaining this I'd appreciate this!

Thank you again for your post, which helped me a lot and saved me a lot of time and frustration! :)
 
Read Your Boot Manager
Code:
{bootmgr}
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
Read Your {Current} Windows Boot Loader
Code:
Windows Boot Loader
-------------------
identifier              {current}
device                  locate=\windows\{0e11e480-c500-47e8-8228-e97b0ba49ef5}
path                    \Windows\system32\winload.efi

All You needed to do was >
bcdedit /set { } Path=\Windows\system32\winload.efi

UEFI uses BootMGR and WinLoad with EFI extention
BIOS uses BootMGR and Winload with EXE extension
 
Back
Top