Followers

Winload.exe Is Missing Or Corrupt (No Its Not)

So we have all seen and heard the many solutions to this issue, most which refer to the direct editing of the BCD and MBR..

However, no one has pointed out exactly why this issue happens, which should be the first step in identifying a fix. The corruption of BCD occurs, In the most part, when the vista setup finishes and the sysprep command is run, generalising BCD, and in most cases i have found, users running either a dual boot, or seperate HD's, the generalisation of BCD fails. It can also occur after installing the update KB936330, also known as Vista service pack 1.

I am unsure why the issue can occur after installing the service pack, but I am certain that a generalised BCD was included in the package (Generalised being an OOBE prepared BCD.exe) and this may pertain to why some systems have this issue after, as additional HD's may not be installed until after the initial setup. We can be certain that no system with one HD is suffering from this issue, and that the problem extends from the shutdown sequence.

There are two fixes, One pertaining to a single boot system, and one pertaining to a multi-boot system. Usually the system will be afflicted with either, but in some cases, can be afflicted by both.

THE PROCESS

Once running a repair from the Vista disc, windows should boot fine once, but upon a shutdown the same error will be presented. However upon a "Restart" the issue is not present and windows will boot fine. It appears that upon the shutdown sequence, the BCD is corrupted and the information is erased.

Most people would follow the onscreen prompts and insert the vista disc and proceed with a repair, when in 99% of cases, simply turning the pc off and back on again will be sufice and the system will then boot into windows fine. Try it, I can almost guareentee that it is the case.

If this is not the case, you may need to insert the installation disc and proceed to the repair OS screen, and select command prompt. Once in the command prompt;

Run bootrec

You will see a number of options;

/repairmbr
/repairbcd
/osscan

Repair BCD is the most essential command, as it locates missing OS's from BCD and links them, without modifying the other contents of BCD. Repair MBR is a dangerous command, and should only be used after running repairbcd as it will wipe the MBR and recreate it using the information from BCD. If the MBR is corrupted with false information from BCD, windows will be unable to repair this itself and a reinstall will be needed to correct it. Os Scan is a simple tool, used by repairbcd to scan for OS's not linked to either the MBR or the BCD.

Run bootrec /repairbcd

Answer Y once repairbcd has found the desired installation. You should recieve the message, "All tasks completed successfully"

Run bootrec /osscan

If osscan returns an OS that is not linked, that is a vista OS, you will need to;

Run bootrec /repairmbr

Repairmbr is fully automated. There is no need to explain it here.

 
Once these steps have been completed, your "generalised" BCD will no longer be "generalised" and the system should be able to start without problem. If you are presented with the same error, simply turn the system off and back on again, The system should boot fine. I have notified microsoft of the fact that this only occurs upon issuing of the shutdown command and hopefully they should release a fix.
  
WHEN ALL ELSE FAILS

If the problem persists even after performing all of these steps and restarting does not fix the issue, the problem directly extends from the installation and the system should be reinstalled with a fresh install, and with the primary drive only. After this, the service pack should be applied. Once this has been completed, additional drives should then be installed and configured.

 
USE OF BCDEDIT

In 90% of cases, this does not fix the issue. Only when pertaining to dual boot systems, will this correctely identify and fix the issue, because the "Generalised" BCD is not the problem, it is the actual "Unknown" entries in the BCD. If those are not present, then your issue is the "Generalisation" of BCD and not the actual entries in BCD, and this WILL NOT WORK.

 Divine Logix wrote:
Hi All,

I had this problem and I have just fixed it. The winload.exe is not currupt. What is wrong is that entries in your bcdedit are corrupt. Once you change that manually, you will be back up and running. Once again, there is no need to re-install or even do a repair as vista suggests. You do not need to replace winload.exe file.

Solution:

If you can get to a command prompt/DOS screen, go to d:\windows\system32
"d" is the drive where vista is installed.
Once there, type: "bcdedit.exe" or you can just type "bcdedit". Do not include the quotation marks " ".
It will generate a screen like this:
---------------------------------------------------------------------------------------------------------
Windows Boot Manager
--------------------
identifier              {bootmgr}
device                  partition=C:
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {default}
resumeobject            {fe04aef5-e49c-11db-9f2f-cdf57e93812b}
displayorder            {ntldr}
                        {default}
toolsdisplayorder       {memdiag}
timeout                 10
Windows Legacy OS Loader
------------------------
identifier              {ntldr}
device                  partition=C:
path                    \ntldr
description             Windows 2003 Server Enterprise
Windows Boot Loader
-------------------identifier              {default}
device                  partition=D:

path                    \Windows\system32\winload.exe
description             Microsoft Windows Vista
locale                  en-US
inherit                 {bootloadersettings}
osdevice                partition=D:
systemroot              \Windows
resumeobject            {fe04aef5-e49c-11db-9f2f-cdf57e93812b}
nx                      OptIn
------------------------------------------------------------------------------------------------------

now check your result against the above, make sure that all the parameters above are the same (except for your drive letter, which might be different from mine).
Now look at the "windows bootloader" section and note what you see in your report/DOS screen:
You may notice that instead of displaying "osdevice partition=D:" it may display "osdevice unknown". The same applies with "device". I have highlighted what I am referring to as bold in the report above.
If these settings are not showing the drive on which your vista is installed, you must change it. Since mine is drive "D" for vista, this is the command you must type:

D:\Windows\System32>bcdedit /set {default} osdevice "partition=D:

Also, if the "device" is showing as unknown, type this command:

D:\Windows\System32>bcdedit /set {default} device "partition=D:

If the path is  \Windows\system32\winload.exe, then that's fine. Remember "D" above is the name of the drive on which your vista is installed. If your vista in on "F", use "F", etc. "default" in the blue text command above is the identifier for the os boot-up that you are trying to fix, in this case, vista. Sometimes, for the identifier you might have some long random numbers (GUID), just copy it and use it if is not the "default" that is shown.

Exit the DOS screen, restart your system, and you should be ok. If you have any problems please let me know.

Regards....DivineLogix


Hopefully this has helped many people, and I am sorry that I could not provide a complete fix for this issue, but I have been able to point out why and hopefuly someone with a greater knowledge in those areas can provide a fix.

Source:
www.technet.microsoft.com

Published by
S.G.Godwin Dinesh.MCA
Sr.System Administrator

No comments:

Post a Comment