Issue with a Windows 7 Boot issue - involving the BCD perhaps
First of all, thank you to whoever reads this. I'm getting pretty upset and worried about the fact that my desktop is now definitely not booting into Windows 7, which it was very nicely before I was an idiot and used Boot-Repair (the linux tool, in an attempt to get Ubuntu working.) So here's what's happening:
I start the computer, doesn't matter the boot order so long as there's nothing in the disc drive, and I get
Windows failed to start, da da da,
File: \EFI\Microsoft\Boot\BCD
Status: 0xc000000f
Info: An error occured while attempting to read the boot configuration data.
So obviously it's a BCD issue. I got my install disc and went into command line to try and find anything wrong with either mounting and/or the BCD file. I found some interesting and frustrating stuff...
In system recovery, when windows is trying to fix it itself, it says it will repair bootmgr
and fwbootmgr
. Then, it says that:
The following startup options will be added:
Name: Win 7 home premium (recovered)
Path: Windows
(And here we have what I haven't seen before...)
Windows device: Partition=\\\?\GLOBALROOT\Device\HarddiskVolume5
Also, it will copy the current BCD to \\\?\GLOBALROOT\Device\HarddiskVolume1\EFI\Microsoft\Boot\BCD.Backup.0003
And then I try to let it do its thing and it says Failed to save startup options. Next it can't find a system image when it tries to look for a backup.
So I've gotten to cmd line and I start diskpart
, where I list volumes and find that:
- Volume 1 is DELLUTILITY, FAT32, with name C:
- Volume 2 is RECOVERY, name D:
- 3 is a new partition I made to try and house Ubuntu, called E:
- 4 has no letter is named ESP and is also FAT32.
- Then vol 5, which is labelled OS and also... HAS NO LETTER??? Might that be a problem? I can assign it C:, but it doesn't stay when I reboot.
I try and run bootrec /rebuildbcd
, and it detects a windows install \\\?\GLOBALROOT\Device\Windows
there. It asks if I want to add it to boot devices, and I press y... Then it says:
The requested system device cannot be identified due to multiple indistinguishable devices potentially matching the identification criteria
This error comes up when working with various different things in cmd line relating to boot and BCD.
Additional info: C:\Windows\Boot\EFI\
has no BCD in it. Potential problem, I'd think, but I don't know how to get it there or where to find it...
When running bcdboot
, I get
BFSVC: FAiled to create a new system store. Status = [c000003a]
Here is my record from boot-repair in Ubuntu.
Please, any help would be so much appreciated. I really don't want to wipe my drive.
The requested system device cannot be identified due to multiple indistinguishable devices potentially matching the identification criteria
You've probably got multiple EFI system partitions, whether on the same drive or one on each of two drives. This confuses Windows repair tools more than it confuses the EFI itself.
You can confirm this using diskpart
inside the WinRE environment (available with install or recovery media), and use diskpart
's set id=
command to change one of the types and make it no longer an EFI system partition. After that the repair tools will happily work on the remaining EFI system partition. (I suggest changing just one hex digit of the EFI type to make it easy to put back later if needed)
The BCD is not expected to be on the Windows partition. It should exist in the EFI system partition beneath the Microsoft directory, and some of the data even gets stored by EFI in NVRAM.
Here is an actual example, from my laptop, of a partition scheme which confuses Windows repair tools. It arose because the laptop came with a rotating hard disk, and I installed an mSATA SSD large enough to use as system partition, then using the standard partition layout for the SSD. Having done so, there are now two EFI system partitions.
Microsoft DiskPart version 6.3.9600
Copyright (C) 1999-2013 Microsoft Corporation.
DISKPART> list disk
Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 465 GB 60 MB *
Disk 1 Online 202 GB 0 B *
DISKPART> select disk 0
Disk 0 is now the selected disk.
DISKPART> list part
Partition ### Type Size Offset
------------- ---------------- ------- -------
Partition 1 Recovery 400 MB 1024 KB
Partition 2 System 200 MB 401 MB
Partition 3 Reserved 128 MB 661 MB
Partition 4 Primary 452 GB 789 MB
Partition 5 Primary 12 GB 453 GB
DISKPART> select part 2
Partition 2 is now the selected partition.
DISKPART> detail part
Partition 2
Type : c12a7328-f81f-11d2-ba4b-00a0c93ec93b
Hidden : Yes
Required: No
Attrib : 0X8000000000000000
Offset in Bytes: 420478976
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
* Volume 3 FAT32 Partition 200 MB Healthy Hidden
DISKPART> select disk 1
Disk 1 is now the selected disk.
DISKPART> list part
Partition ### Type Size Offset
------------- ---------------- ------- -------
Partition 1 OEM 6000 MB 1024 KB
Partition 2 Recovery 300 MB 6001 MB
Partition 3 System 100 MB 6301 MB
Partition 4 Reserved 128 MB 6401 MB
Partition 5 Primary 196 GB 6529 MB
DISKPART> select part 3
Partition 3 is now the selected partition.
DISKPART> detail part
Partition 3
Type : c12a7328-f81f-11d2-ba4b-00a0c93ec93b
Hidden : Yes
Required: No
Attrib : 0000000000000000
Offset in Bytes: 6607077376
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
* Volume 6 FAT32 Partition 100 MB Healthy System
The string c12a7328-f81f-11d2-ba4b-00a0c93ec93b
positively identifies an EFI system partition. When I wish to hide one from repair tools, I use select disk
and select partition
and then
set id=c12a7328-f81f-11d2-ba4b-00a0c93ec930
Notice that I've changed the ID just enough to make it different, while still obvious to a technician that this is an EFI system partition.