Yikes!!! Windows Server 2008 can’t boot, winload.exe can’t be located
Posted by Reka Burmeister in Exchange, Exchange 2007, Exchange Archiving, Exchange Testing, Software Testing on 10-02-2010
Tags: Exchange, Exchange 2007, Exchange software testing, Exchange Testing
I just came across this problem (Windows Server 2008 can’t boot, winload.exe can’t be located) and as it took me about 3 (yes THREE!!) hours to fix I thought I’d share with you all to save you time.
Working on Exchange email archiving software and PST Importing tools we have a test network with quite a few virtual machines, many with Windows Server 2008 installed.
The first lesson learnt was to never try to create a virtual (or real) Windows 2008 network with less than 50 GB of hard drive space. The Windows installation itself takes up about 10 GB, and then everyone’s favourite the winsxs folder will just grow and grow, and in the end you run out of disk space although you have nothing else on your C drive but a basic server installation and Exchange (Exchange installation that is, all relevant data files and databases are on a different drive of course).
Anyhow, after a while we found ourselves in a situation where we have a nice pool of complex networks with virtual machines and half of them are complaining about low disk space. The solution is to extend the virtual disk, but it’s not as easy as one might think.
First, you have to shut your virtual machine down, open a command prompt on your host and navigate to your VMware server installation where you’ll have to use vmware-vdiskmanager.exe as such:
vmware-vdiskmanager.exe –x [Size][dimension] [path to virtual disk]
e.g.: vmware-vdiskmanager.exe –x 50Gb E:\virtual_machines\Medium\Exchange4\Exchange4.vmdk
Make sure that you specify the real virtual disk’s path and not the flat file or a partial slice (the tool’s error reporting is very poor on that regard). You also have to make sure that you have no snapshots for the computer in question otherwise the tool will refuse to work (with the proper error message this time at least).
If everything goes well, your virtual disk will be resized to the specified value after the process finished. The next step is to mount this drive into a different virtual machine, and edit its partitions using Disk Manager (built-in UI) or diskpart which is a built-in command line tool. If you choose the former, you’ll have to select the drive that you wish to make bigger, right click on it and select “extend”, while in diskpart type:
list volume
select volume [n]
extend
List volume lists all available volumes, with the select command you can select the one that is to be extended and type extend to carry out the action.
After all this, theoretically just unmount (remove) your disk from the second machine, start the first one up and it should all work fine.
It worked for Windows Vista, but my Windows 2008 failed to boot with the error:
Can’t find c:\Windows\System32\winload.exe the file is missing or corrupted
This seemed vaguely familiar, I thought it’s just the old “NTLDR is missing or corrupted” that I was always able to fix using the installation disk. I was looking forward to have some built-in tool in the installer that might just have been developed to fix such issues. To my surprise, there was none.
The repair options were “Restore computer”, “Windows Memory Diagnostic Tool” and “Command Prompt”. Unfortunately Restore Computer needs a backup file to work with that I obviously didn’t have (virtual test machine) and rebuilding it wasn’t an option as it was one of my exchange servers in the system… I started to get rather upset and stressed about it and began googling for the problem desperately.
The first few hits were of no help and at some point I even wandered around Microsoft’s TechNet forum where I read that the start-up repair option was removed from 2008 per design (!?). It wasn’t easy, but after several unsuccessful searchers I found another blog post with the solution:
Execute next commands in repair mode (Vista / Win2k8):
c:\windows\system32\bcdedit /set {default} device partition=c:
c:\windows\system32\bcdedit /set {default} osdevice partition=c:
c:\windows\system32\bcdedit /set {bootmgr} device partition=c:
It worked like a charm, my system could boot without any problems and I didn’t have to waste a day to reinstall the server and exchange.
Hello,
Thanks for the article.
Did this occur because the OS drive size was increased ?
Thank you
In my case it was probably the drive increase. I remember that in case of XP all sorts of things could corrupt the NTLDR so I imagine that might still happen