Skip to main content

Windows 8 boot loader corrupted

Problem: 

 Installed Windows 7 and Windows 8 in EFI mode on a hard disk some days past. Today, the boot loader is absent or corrupted.
At present have the Windows 8 installer on a flash drive and tried using the Automatic Repair option to repair the boot loader but it didn't do anything. The Startup Repair option is also absent in the Windows 8 installer.
How I can repair or recreate the EFI boot loader from the Command Prompt?
BCDEDIT returns the following message:
The requested system device cannot be found.


Solution:

Firstly, boot from a UEFI Windows 8 recovery disk (CD/DVD/USB) - I found that the automated recovery process didn't find the correct Windows partition, nor when I managed to add it to BCD settings would it make it reliably boot-able e.g. using BCDEDIT I got it to find and launch the Windows partition but it refused to cold boot or would not "keep" the settings after a 2nd reboot or power off.
Go into the Advanced options and run the Command Prompt.
Use DISKPART tool to ensure you have all the right partitions - key thing here is your EFI partition being FAT32
DISKPART> sel disk 0

Disk 0 is now the selected disk.

DISKPART> list vol

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     E                       DVD-ROM         0 B  No Media
  Volume 1     C                NTFS   Partition    195 GB  Healthy    Boot
  Volume 2         WINRE        NTFS   Partition    400 MB  Healthy    Hidden
  Volume 3                      FAT32  Partition    260 MB  Healthy    System
I then assigned a drive letter to the EFI partition
DISKPART> sel vol 3

Volume 3 is the selected volume.

DISKPART> assign letter=b:

DiskPart successfully assigned the drive letter or mount point.
Exit Disk-part tool and at the command prompt run the following -
cd /d b:\EFI\Microsoft\Boot\

bootrec /fixboot
Delete or rename the BCD file
ren BCD BCD.bak
Use bcdboot.exe to recreate BCD store
bcdboot c:\Windows /l en-gb /s b: /f ALL
The /f ALL parameter updates the BIOS settings including UEFI firmware/NVRAM, /l en-gb is to localise for UK/GB locale, it will default to US English
Reboot and cross your fingers.
This gave me headaches. I was going in circles for a long while and there isn't a lot of reliable info about fixing UEFI/Windows 8 at the time of writing
[EDIT]
To re-enable Hyper-V, I also had to run the following -
bcdedit /set {default} hypervisorlaunchtype Auto
bcdedit /set {default} nx OptIn


CHEERS !!!

Comments

  1. OMG THANK YOU THANK YOU THANK YOU!!!!!!!!!!!! I looked for AGES!!!! Lenovo and Microsoft didn't know what the hell to do. LOL1

    ReplyDelete
    Replies
    1. I am very pleased that my post helps you. Thanks Steven.

      Delete
  2. but but BUT how do I boot into windows without booting to the USB. It wont let me write into the windows boot when i do boot into Windows OS from USB. so now that Im in my system how do i put without usb?

    ReplyDelete
  3. Oh yeah! I fixed my laptop after years of google search. Thanks Bro!

    ReplyDelete
  4. You get help from my blog http://crownanswer.blogspot.com. It’s my pleasure.

    ReplyDelete

Post a Comment

Popular posts from this blog

Checking operating system version: must be 5.0, 5.1 or 5.2 Actual 6.1 Failed

This error occurred when we are installing old oracle software in latest OS (Operating System).   Basically Its’s occurring on windows platform.

Oracle forms 11g default configuration file formsweb.cfg

#formsweb.cfg defines parameter values used by the FormsServlet # formsweb.cfg defines parameter values used by the FormsServlet (frmservlet) # This section defines the Default settings. Any of them may be overridden in the # following Named Configuration sections. If they are not overridden, then the # values here will be used. # The default settings comprise two types of parameters: System parameters, # which cannot be overridden in the URL, and User Parameters, which can. # Parameters which are not marked as System parameters are User parameters. # SYSTEM PARAMETERS