共用方式為


VMBus fails to load (device cannot find enough free resources Code 12) on a Windows Server 2008 x86 virtual machine under Hyper-V

There is one particular scenario where you could be faced with this when booting a VM using Hyper-V. The most obvious way you can immediately notice it is that when using Virtual Machine Connection to remotely control a virtual machine, you do not have mouse integration.

(Note that in Windows Server 2008 RTM, Hyper-V Beta integration components are in-box. You will see similar lack of mouse integration on future releases of Hyper-V where you have updated the physical machine but not updated the virtual machine image. Once we have a new release of Hyper-V available, I’ll post more on that.)

The issue is very specific to where you have a Windows Server 2008 x86 (not x64) virtual machine originally built using Virtual PC or Virtual Server.  It should not apply to Windows Vista SP1 (currently not supported in Hyper-V Beta). Opening Device Manager (Start devmgmt.msc) inside the virtual machine will provide the first sign that you are hitting the issue. As you can see in the screenshot below, under the Computer node, it says “Advanced Configuration and Power Interface (ACPI) PC”.

1

If you scan further down Device Manager to the bottom of the “System Devices” and double-click on VMBus (which has a yellow exclamation mark against it), you will see in the device status area that the device cannot find enough free resources that it can use. (Code 12).

2

The reason for this is similar to the issues stated in yesterdays blog post about having the correct HAL installed. For VMBus and other components necessary for synthetic device support in Hyper-V to load correctly, the HAL running in the virtual machine must be an APIC HAL. Fortunately, Windows Vista and Windows Server 2008 have a new boot option to force HAL detection during boot, which is off by default. The easiest way (command line junkies excused) to change this setting is through the “msconfig.exe” tool. If you select the boot tab and then hit advanced, you’ll notice a checkbox marked “Detect HAL”. After selecting this checkbox and hitting OK, you must reboot the virtual machine.

3

Once the virtual machine is restarted, open up device manager again. This time you will notice that under the computer node, it now reads “ACPI x86-based PC”.

4

A few final comments. First, the “Detect HAL” checkbox is sticky, and causes boot to be very slightly longer (so slight in fact, I can’t notice a difference using a stop-watch). If you do not intend returning this virtual machine back to Virtual Server or Virtual PC, you could turn the checkbox off and reboot.

To clear up a point from my previous post, I said that “In theory it is possible to swap the HAL, but not in a Microsoft supported manner (except on Vista and Windows Server 2008 – that’s a post for another day)”. Hopefully that is a little clearer now. You may be wondering, if you clear the checkbox, and while the virtual machine is configured with an APIC HAL, what happens if you take the VHD back to Virtual Server or Virtual PC?  In this case, the boot will not complete, even in safe mode. The way to resolve this is to ensure the check box for Detect HAL is checked before shutting down the virtual machine under Hyper-V. 

You can also set or clear the checkbox in a slightly smarter way if you don’t have a Hyper-V machine available to boot the virtual machine to toggle the checkbox directly while the VM is running. The answer is in BCDEditt. You could loopback mount the VHD and use bcdedit to alter the boot configuration store offline. I haven’t tried it with a mounted VHD, but the parameters would look something like “bcdedit /set {current} detecthal yes” replacing {current} with an appropriate store. There's something to investigate and a blog post for another day…

Cheers,
John.

Comments

  • Anonymous
    January 01, 2003
    Bill - also can you verify which SKU you are using? I suspect it is a home version in which case they are not supported under licensing terms to run as VMs, hence we do not provide Integration Services for them which may be what you are seeing. Thanks, John.

  • Anonymous
    January 01, 2003
    The comment has been removed

  • Anonymous
    January 01, 2003
    Aveam o masina virtuala facuta cu Virtual PC si din motive de spatiu resurse si curiozitate m-am hotarat

  • Anonymous
    January 01, 2003
    redstone64 - can you provide a download link to the actual media you are installing from. Can you also confirm whether you are running Hyper-V Beta or Hyper-V RC0, and if the latter, you have applied the RC0 MSU update in the virtual machine. Thanks, John.

  • Anonymous
    January 01, 2003
    Redstone64 - Just to be clear (sorry!) - so you

  1. downloaded this ISO, burnt it and installed that on the physical machine itself (ie the parent partition).
  2. Applied the x64 version of KB949219 MSU on the parent partition
  3. Enabled the Hyper-V role
  4. Build a virtual machine using the same media
  5. Applied the x64 version of KB949219 MSU inside the virtual machine
  6. You are seeing VMBus device error 12 in the virtual machine That will allow me to verify things here. Thanks, John.
  • Anonymous
    January 01, 2003
    BMcGinnis - correct, this post only applies to 2K8 x86, not Windows 7. What version of Windows 7 are you running in the VM? You can verify if it is RTM if BuildLabEx in the registry under HKLMSoftwareMicrosoftWindows NTCurrentVersion says 7600.16385.amd64fre.win7_rtm..... If either of the first two sets of numbers are lower, you need to upgrade to RTM. Can you also verify the build number of the parent partition. Thanks, John.

  • Anonymous
    January 01, 2003
    Redstone64 - Can you email me windowslogscbscbs.log from inside the virtual machine please. The link is at the top. Thanks, John.

  • Anonymous
    January 01, 2003
    Parent partition - 6002.18082.amd64fre.vistasp2_gdr.090803-2339 Windows7 vm - 7600.16385.x86fre.win7_rtm.090713-1255 Thx Bill

  • Anonymous
    January 01, 2003
    Hyper-V HW & SW requirement: http://technet.microsoft.com/en-us/library/cc816844.aspx Hyper-V RTM

  • Anonymous
    January 01, 2003
    @Redstone64. Yes, indeed, MSI is Message Signalled Interrupt. Out of interest, what motherboard is this you are using. There are very few motherboards which support VT/AMD-V and NX/XD which do not support MSI. In fact, there is only one I am aware of (need to go digging now to find out what machine it was). Thanks, John.

  • Anonymous
    January 01, 2003
    Mike - can you use the email link at the top so that we can take a look at %WINDIR%vmguestsetup.log and %WINDIR%setupapi.log  in the virtual machine which is failing. Thanks, John.

  • Anonymous
    January 01, 2003
    Andrea - while I understand, please also remember that Windows Server 2008 itself (implicitly including Hyper-V) is not supported on this motherboard - one of the requirements for certification for 2008 is support for ECC RAM. While we make best efforts to make Hyper-V work across a broad range of hardware, we have certain hard requirements, one of which being support for MSI. Unfortunately, it just appears that this is one of a very small number of older boards where something on the board is not exposing MSI (I believe the chipset though does support it). I would also strongly recommend you look to newer processors though to seriously kick the tyres of Hyper-V. As I understand it, this board also only supports up to a P4 processor. More recent processors are significantly faster and your experience will be significantly better. Thanks, John.

  • Anonymous
    January 01, 2003
    Getting same set of errors on a Windows7 x86 VM.  Setting referenced on Windows& does not exist in msconfig ?

  • Anonymous
    January 01, 2003
    Redstone64-  FYI, following the exact steps 1-6 above, I can't repro. I just need to know if you did something different which could explain what you're seeing. Thanks, John.

  • Anonymous
    January 01, 2003
    @Korleqn - I took it from Redstone64's confirmation that he did steps 1-6 that he was able to start a virtual machine, which I would not expect if VMBus fails to start on the parent partition (physical machine), so this sounds different. Have you enabled VT/AMD-V and NX/XD in the BIOS, made sure you are on the latest BIOS and hard power cycled the machine. Can you provide similar details for your physical machine as for Redstone64? Thanks, John.

  • Anonymous
    January 01, 2003
    Andrea - some OEM BIOS updates include a BIOS workaround for a microcode flaw in F2 revision processors. However, that tends to be only in "real" server boards. I would recommend you try a later BIOS if you have not already. Also, please note that even with F3 and later processors, we still require full support from the BIOS as well. This is not always the case, especially in commodity desktop boards. This is a question you should ask to the motherboard manufacturer before replacing the processor only to find that there may still be a problem. Thanks, John.

  • Anonymous
    March 26, 2008
    in windows 2008 x64 version latest trial, this does not work, still vmbus sends code 12.

  • Anonymous
    March 26, 2008
    Download Link: Windows version is 6.0.6001 Service Pack 1 Build 6001 Downloaded Installed Windows 2008 x64 Edition More Shortly "6001.18000.080118-1840_amd64fre_Server_en-us-KRMSXFRE_EN_DVD.iso" http://www.microsoft.com/downloads/details.aspx?FamilyId=13C7300E-935C-415A-A79C-538E933D5424&WT.sp=technet,dcsjwb9vb00000c932fd0rjc7_5p3t&displaylang=en Applied Patch After Install: Release Candidate 0 (RC0) update to the Hyper-V Update for Windows Server 2008 x64 Edition (KB949219) Still In device manager, vmbus device sends code 12.

  • Anonymous
    March 26, 2008
    The comment has been removed

  • Anonymous
    March 27, 2008
    I installed these roles and features with the hyper-v to the machine: .NET Framework 3.0 Features .NET Framework 3.0 Desktop Exprience Group Policy Environment Windows Process Activation Service Process Model .NET Environment Configuration APIs. Roles: Hyper-v File Services Network Policy and Access Services today, I do the 1-6 of all things you applied except I install the hyper-v before the patch. still it does not work. Sends code 12 from vmbus driver.

  • Anonymous
    March 29, 2008
    Same problem here, clean Server 2008 RTM install, installed hyper-v and downloaded and installed the rc0 update for hyper-v in device manager VMbus sits there with a yellow exclamation and code 12 . this is on the physical machine btw and it is preventing me to run any virtual machine....

  • Anonymous
    April 07, 2008
    Just wanted to add my own comment, since there seems to be a lot of people out there who like myself missunderstood all the steps earlier (although it is in fact written there..). The trick most people forget is that you have to install the patch "on the virtuel machine" in addition to the host itself! This can be a problem if you have no network drivers working, but either burn a cd or mount a physical disk. Anyway, hope this helps! Best regards, Morten Yndesdal MCT Glasspaper

  • Anonymous
    April 08, 2008
    After long fighting with VMBus device driver, I got a conclusion from a message comes out to event viewer. "VMBus cannot start because the machine does not support MSI." What  is MSI? I looked up wikipedia with a sadly conclusion. Message Signaled Interrupts, in PCI 2.2 and later and PCI Express, is an alternate form of interrupt from the traditional pin-signalled system; instead of asserting a given IRQ pin, a message is written to a segment of system memory. Each device can have from 1 to 32 unique memory locations in which to write MSI events to. An advantage of the MSI system is that data can be pushed along with the MSI event, allowing for greater functionality. That means i need a very good, brand new motherboard to use hyper-v functionality. Thank You,

  • Anonymous
    April 08, 2008
    VIA P4M900 Chipset, ASUS P5VD2-VM Mainboard. Pretty old.

  • Anonymous
    April 13, 2008
    I've got the same message as Redstone64. My motherboard is an Asus M2V. I do agree that this may not be the ideal machine where to run Hyper-V, but it's a pain if I'm not able to prototype virtual machines on my home system before deployng them on a server.

  • Anonymous
    April 16, 2008
    Thank you for your answer, John. The Asus M2V supports an Athlon64 X2 up to 6000+ and up to 8 Gb or RAM. I do agree with you that this is not a server-grade board, but it's a fairly tipical development machine, at least here in Italy.

  • Anonymous
    April 17, 2008
    John, you're right!. My processor is a revision F2. This requirement  has certainly been documented somewere, but I've never heard of it in my Server 2008 readings. Anyway, my next purchase would be a newer processor :-) Thank you,  Andrea

  • Anonymous
    April 17, 2008
    John, you're right!. My processor is a revision F2. This requirement  has certainly been documented somewere, but I've never heard of it in my Server 2008 readings. It would be useful to have Hyper-V refusing to install on unsupported processors! So, my next purchase will be a newer CPU :-) Thank you,  Andrea

  • Anonymous
    May 04, 2008
    Hi, I have tried the MSCONFIG steps on a HP ML350 G5 (BIOS January '08) with  8Gb RAM. I am able to create new VMs, but when I am trying to use old VMs(W2K8 DC)  from Virtual PC 2K7, I got exclamation marks on MS VMBus HID, MS VMBus Video Driver and MS VMBus Network Adapter. The server is shown as ACPI x86-based PC. If I try to run the KB949219, I get  an error: "Installer encountered an error : 0x80070422 The service cannot be started..." For W2K3, it seems ok, as long as I update the drivers in the guests,

  • Anonymous
    June 07, 2008
    does any one have success with Asus p5E ws professional board populated with 8GB of RAM? or other board with 2 Raid 5 array capability Core 2 duo 3Ghz or Qaud 2.6Ghz? what speed are the RAM modules run at, the brand and make? I do understand non eec can not be certified but I intend to use a PC as lab and development PC. it is not going to be run around the clock.

  • Anonymous
    June 19, 2008
    Great post.  Just what I needed - saved me a bunch of time troubleshooting.  Thanks very much.

  • Anonymous
    August 14, 2008
    This post was a lifesaver.  I'd been puzzling on how to get my old VirtualPC image to work with Hyper-V RTM and sure enough, switching the HAL over was the missing piece. This is on an Asus P5NE-SLI with a Q6600 dual core.

  • Anonymous
    August 20, 2008
    Thank you so much for this post - saved me hours of vain.

  • Anonymous
    September 22, 2008
    Thanks for the OP John!  Solved my problem exactly with a VPC->HV migration.

  • Anonymous
    September 30, 2008
    The comment has been removed

  • Anonymous
    March 01, 2009
    "As I understand it, this board also only supports up to a P4 processor. " Nope, it does support Core 2s.

  • Anonymous
    August 21, 2009
    FYI There is a script to loopback mount a VHD at: http://blogs.technet.com/tonyso/archive/2009/08/21/hyper-v-how-to-loopback-mount-a-vhd-using-script.aspx

  • Anonymous
    January 23, 2010
    Just a further note on the subject. I did a P to V migration using Acronis with 2K8 SP2 and had this issue launching as a VM in 2K8 Std R2. Same Behavior same fix.

  • Anonymous
    February 25, 2010
    THX a LOT !!! I thought I'm 2 stupid to install the integration services... :)