Windows 8.1 UEFI x64 is not able to boot-up UEFI Images

7,998

Solution 1

After 1 year I came across the same problem again. Luckily this time I found a solution. In order to add an OsLoader in windows Boot-Manager which loads non-Windows UEFI images you need to manually edit BCD registry. In RegEdit there is a key named "HKEY_LOCAL_MACHINE\BCD00000000" - which is loaded from Windows EFI System-Partition and editing it's subkeys directly edit the BSD file. There is a key named "Description" under it but we'll focus on the other one named "Objects". Under it you need to a new object (or modify existing). Then under the target-object-GUID-name you need to edit the "Description" Type value to "0x10100003" (which means firmware application osloader - credits for this find go to this page). That's it - then the 'path' and 'device' elements of this object specify an UEFI file which will be loaded when the OS-Loader is selected.

BIG WARNING:

Don't do the above just to test it - loading an Uefi this way burns it down into the Uefi Boot configuration and after loading - you may wouldn't be able booting to Windows again (unless the app you loaded doesn't reset the Uefi Boot Cfg) - so use this only if you're sure about it.

I did so and then I should manually fix my Windows boot-up using Uefi Boot Cfg. Which is prefered to use.

EDIT: I forgot to add that you first need to own permission for editing "HKEY_LOCAL_MACHINE\BCD00000000", which is easy - just click Properties on it and change permissions ;).

EDIT: This discovery shows that the most powerful (and easy - at least for me) way of editing Windows BSD is using the registry. The behavior I accomplished by doing so - isn't possible to be done using BCDedit, neither the BCD WMI.

Solution 2

EFI is a pre-boot environment. As such, EFI itself is not a Windows tool, a Linux tool, or any other OS-level tool. I want to make this clear because some of your phrases make it sound as if you think EFI is a part of Windows. It isn't.

The path rEfit\refind is an unusual one for an EFI boot program. Such programs normally reside in subdirectories of the EFI directory on the ESP, as in EFI\refind or EFI\Microsoft. Although such a non-standard location is unlikely to be the source of your problem, I can't rule out that possibility. Thus, using a more normal location is my first suggestion.

I'm not very familiar with the output of the Windows bcdedit command that you've shown, so I can't comment on it; however, I can suggest that you review the rEFInd installation instructions for installing from Windows. It's entirely possible that you erred in typing in one of the commands.

If that doesn't help, then try installing rEFInd from another OS. Presumably you've installed rEFInd to boot something else along with Windows. For most people that's Linux, and if the Windows tools aren't working, you should be able to install rEFInd from Linux.

Share:
7,998

Related videos on Youtube

Nemo759
Author by

Nemo759

Updated on September 18, 2022

Comments

  • Nemo759
    Nemo759 over 1 year

    The question appeared after asking this one. It seems that the Win8.1 UEFI x64 Boot Manager is unable to boot anything other than the windows itself (winload.efi). Trying to launch any other UEFI image (.efi) from it gives the error code 0xC000007B and I'm pretty sure that this isn't because of a missing file but instead because the file is 'invalid' as when I rename that file the error changes to 0xC000000F. I have disabled the secure boot but without any luck.

    At the moment I'm trying to integrate the rEFInd bootloader. I can say that it's UEFI image is working as it is able to boot from a USB flash drive using the firmware. Using the Windows Boot Manager however give the same results explained above (error code 0xC000007B). At the moment my BCD configuration is (picture):

    Command line screenshot http://imageshack.com/a/img811/7857/kbth.png

    As F:\rEfit\refind is the directory where refind is stored and "refind_x64.efi" is the program image.

    NOTE: I'm also wondering are only UEFI images (.efi files) allowed to boot in an UEFI Windows and also what is the format of the non-UEFI one's (like ntldr, bootmgr)?

    EDIT: Moving rEFInd to a standard directory ("EFI") didn't solved the problem.

    • gronostaj
      gronostaj over 10 years
      I have embedded your image inline, but copy-pasting it could improve readability. You can copy text from cmd window by right-clicking, then selecting Mark, dragging the text block you want to copy and pressing Enter. Then you can paste it into the SU editor and apply formatting (preformatted block will work great).
    • jww
      jww over 9 years
  • Nemo759
    Nemo759 over 10 years
    Yes - moving it to "EFI" folder didn't solved my problem. But I don't want to use the rEFInd as a primary boot manager - instead I want to boot Windows XP from it and to link it with the Windows 8 Boot Menu.
  • Nemo759
    Nemo759 over 10 years
    Any other suggestions?
  • Nemo759
    Nemo759 over 10 years
    Nobody???? Why - I mean this is crazy - haven't you tried using an UEFI Windows with other OS?
  • Rod Smith
    Rod Smith over 10 years
    Although the EFI-mode Windows boot manager is theoretically capable of chainloading other EFI boot loaders, I have yet to see a clear explanation of how to set this up. Thus, my only suggestion is to use rEFInd as the primary boot manager. It is highly configurable, so if there's something you don't like about it, you may be able to change it. Please skim the configuration file options described in Table 1 in the rEFInd configuration file documentation.
  • Anthony
    Anthony about 9 years
    Setting 0x10100003 seems to have BCD update the UEFI firmware as well to add a new entry to the boot menu (which works with my specifications). But, I continue to get 0xC000000D errors though. I can boot from the UEFI Firmware options. But, Windows doesn't like the Fat32 partition with the gummibootx64.efi file. I MUST use Windows 8.1's Boot Manager because of touch on my tablet - no virtual keyboard at power on!
  • Anthony
    Anthony about 9 years
    For the record, the ESP partition (where the EFI binary/bootstrappers are stored) should be FAT32 to be "sharable" across Linux and Windows. They are also usually hidden from Windows normally (you can see it in Disk Management). The original question has the author trying to boot an additional EFI firmware located in his ESP partition - as EFI allows for multiple boot strappers in a single partition. Just pick what you want. I, like the author, MUST use the Windows Boot Manager in 8.1. My reason is for the Touchscreen it supports on my tablet with no Keyboard!!!
  • AntoineL
    AntoineL over 8 years
    This code 0x10100003 which represents neither a real osloader (0x10200003) nor a real EFI object like a boot manager (0x10100002) seems more like a bug than anything else to me. That is, it might appear in the menu just because of a bug in current BootMgFw.EFI. Also, it does not seems that BootMgFw.efi has the code to chain-load other EFI applications: despite the extension, winload.efior memdiag.efi are not EFI applications, then are "boot applications"; also they need to be specifically signed by Microsoft, even when test-signing.