I am a bit of a newb with virtual machines, so go easy on me. I am currently dual-booting Windows 7 and Windows Vista. I want to convert the Vista installation into a virtual machine, and then remove that physical partition (the virtual hard disk will be on my USB drive).

I managed to create a virtual hard disk of Vista using the 'Disk2vhd' application. However, when I try to create a virtual machine in Virtual PC 2007 (running on my Windows 7), Vista doesn't load. Safe load doesn't work either, and gets stuck on crcdisk.sys.

Any ideas on what might be happening?

  • For anyone else wishing to do this, please bear in mind the potential licensing implications this might have. If you have an OEM version of Windows (i.e it was pre-installed on your computer), it is licensed for the hardware it was installed on only. I don't know what Microsoft's official line on this is, but I would definitely err on the side of caution. – Ben Pilbrow Dec 18 '10 at 21:00

You could try VMWare Converter and then VMDK2VHD. NOTE: You can find a copy of VMDK2VHD on the net without having to sign into that site.

I have not used VMWare converter for P2V convertions, but I have used VMDK2VHD to convert a VMware image over to HyperV.

YMMV but this may help you out.

Also, a cloning tool like clonezilla or ghost can assist in creating a disk image that you could then restore inside the virtual machine.

  • I actually have the VHD file, not the VMD. However your suggestion to use Clonezilla sounds interesting - I have installed VirtualBox, and will give this a try. Thanks! – Wild Thing Nov 27 '09 at 10:09

If you want your current Vista image to boot in VPC, you need to change two things. You need to tell Vista to detect the right HAL at boot and to use the standard (old) IDE driver.

Do the first by booting Vista on the box, opening a command window and typing:

bcdedit /set detecthal on

Do the second by going to device manager and changing your storage driver to basic IDE.

Then use disk2vhd.


1) This blog post may help:

http:// hawflakes.unoc.net/?tag=fix_hdc

2) And this:

Start VM with the XP cdrom in the player.
boot from cd-rom and press R this will load the recovery console
login with local administrator password of the VM
goto system32 directory, cd system32
type:  expand d:\i386\halacpi.dl_  and press enter
type:  copy halacpi.dll hal.dll  and press enter, type Y to overwrite
reboot the VM
boot in normal mode and update all drivers, this is a automated proces, but check it
reboot again in normal mode
install VM additions

3) Or even this:

Problem: if the VM you created using Disk2vhd is XP and during boot the screen goes black after the bios boot and never finishes booting, you probably have a HAL issue.  This has happened on every physical XP that I've used disk2vhd to make a VM.
Solution that has worked for me was to copy NTOSKRNL.EXE and HAL.DLL files from a known good VM to the bad VM.  Abreaviated instructions using VPC2007Sp1 are:  
1. Mount or add the VHD file from the VM you are having problems to a known good VM, should show up as a secondary hard drive, for example D: when you boot.    
2. From the known good VM, do a search for NTOSKRNL.EXE and HAL.DLL files, you'll find many versions in a couple of different directories.  Find the most recent and copy those files and replace the files on the VHD VM that you were having problems with, ensure to replace all the files in all directories.  Shut down the VM.
3. Start the VM you were having problems with, it should now boot because you replaced the NTOSKRNL.EXE and HAL.DLL files within the VM with known good NTOSKRNL.EXE and HAL.DLL files from a known good VM.


  • I just used option #3 to get a Windows Server 2008 x86 install running inside of Windows 7 x64 with no problems. It should be noted though that in order to overwrite ntoskrnl.exe & hal.dll you need to take ownership of them first. – Brian Surowiec Nov 7 '10 at 2:21

I had the same problem and suspected it was related to the fact that Virtual PC doesn't support Multi-CPU guest OS and the Vista image that I created was from a Core2Duo system.

I mounted (attached) the VHD using Windows 7 diskpart utility then renamed the active hal.dll file in c:\windows\system32 to hal-multi.dll (it should be safe to just delete it since it's really just a copy of halmacpi.dll that is in the same directory but I was being extra cautious). I then made a copy of halacpi.dll (the single-CPU hal.dll) and renamed it hal.dll. I then unmounted the vdisk and attempted to boot the VM again. It worked! :)

  • After trying the bcdedit trick (see @Jake), messing around with registry keys (see @pjcdev), and switching hd emulation from SATA to IDE (in virtualbox 4.1.12; same problem using VMWare 4.0.4, but no SATA-or-IDE option that I could find), your post solved my problem. Or it may have been a combination, but that was certainly the tipping point. – tucuxi Jul 29 '12 at 19:12

I also had this problem. The original physical system had an SATA interface. I did the HAL swap but was still getting the BSOD after crcdisk.sys when booting up the virtual instance. To get it working, I ran through the registry changes here:


HKLM/System/CurrentControlSet/Services/pciide/Start = 3 HKLM/System/CurrentControlSet/Services/intelide/Start = 0

The other catch was I had already made a VHD image. To change the registy values I booted the virtual instance with the NT Offline Password tool (which is also an offline registry editor). Thankfully, I didn't have to recreate the VHD file. In this tool ControlSet001 is the same as CurrentControlSet (at least in my case).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy