Windows 7 and Windows Server 2008 R2 support booting from a VHD directly. No host OS involved. Very nice! It kind of blows my mind a bit to think of the possibilities.
How Does It Work?
It works like a dual boot machine, where you pick your OS option at startup. Instead of having physical disk partitions, you can multi-boot onto a VHD instead of a disk partition. You can boot directly to a VHD running SharePoint 2010 beta for example. You can have as many of these as you need (and have disk space for).
For people limited to 4GB or RAM on a laptop, this can help SharePoint 2010 run much smoother because it has all the physical memory, no memory sharing with the host. Your physical disk is available from the booted OS (VHD becomes C:, and physical disks looks like a D:, E:, etc.). All physical hardware is available, just as if you installed the OS directly to a disk partition.
You can even get it to work with Vista as your main OS on your machine if you’re not ready to rebuild your machine with Windows 7 or Windows Server 2008 R2.
What’s the Catch?
There are a few catches that I’m aware of:
- It only works if the VHD is stored on an internal disk
- The OS on the VHD must be Windows 7 or 2008 Server R2
- Hibernation and bit-locker don’t work when booted from VHD’s. Suspend does work on my Dell D830 after I installed the NVIDEA drivers for my video card.
- It works best with a fixed-size VHD, dynamic VHD disks will run slower
- There is a slight performance hit, around 3%, when compared to a boot from a physical disk. It’s negligilbe, I haven’t noticed a difference at all.
- The vhd is not portable to other boxes due to hardware differences between machines. You can sysprep and image and move it that way.
Great! Now How Do I Set It Up?
I won’t recreate a detailed walkthrough here, but the basic gist of it is this:
- Insert Windows 7 or Windows Server 2008 R2 media
- Boot from the CD like you’re installing the OS normally
- At the first screen, hit Shift-F10 to open a command window
- Use the DiskPart utility to create and mount the vhd. Type DiskPart at the command prompt cnd enter the following commands:
- create vdisk file=C:\VHD-Windows7.vhd maximum=40960
- select vdisk file=C:\VHD-Windows7.vhd
- attach vdisk
- Close the command prompt and continue setup
- Select the Custom (Advanced) Install option
- Select the VHD disk you created for the install
- That’s it! The Windows installer takes care of the rest.
- If you want more control, you can use BCDEdit or EasyBCD to edit the boot menu
If you need a more detailed walkthrough, the best one I’ve seen is here:
If you’re interested in booting a Windows 7 VHD from a system running Vista (I’m not!), you might find these helpful:
- 4SysOps: How to add a Windows 7 VHD to Vista’s boot manager menu
- Intellects: Boot From VHD – Replacing Vista or Windows 2008 Bootloader with Windows 7 Bootloader