Creating a Windows 7 VHD Virtual Hard Drive

by Klaus Graefensteiner 28. March 2010 15:25

Introduction

A few weeks ago I wrote a blog post about how to use VHD files as bootable sandbox machines. In this article I describe how to actually create a VHD file that contains a bootable Windows 7 OS.

VHD in a Nutshell

Windows 7 can boot from a Virtual Hard Disk VHD file. All the files of this virtual disk are stored in one file that can be mounted as Virtual Disk and behaves almost exactly like a physical disk volume.

Features

  • One file contains a bootable OS
  • VHDs support incremental VHDs

Limitations

  • The .VHD booted OS needs to be Windows 7, Windows Server 2008 R2 or later.
  • Performance decrease of about 3%.
  • Hibernation and BitLocker work only under certain circumstances.
  • BitLocker can be used within the guest VHD, but not on the physical disk where the VHD file is stored.
  • Windows Experience index won’t work.
  • Booting into the VHD OS you can will notice a D:\ drive which is the drive of your OS that boots from the physical drive.

Virtual PC compatibility

  • You can swap physically booted VHD file with Virtual PC VHD files. Just run sysprep /generalize /oobe.
  • Another requirement is that the OS needs to be 32-bit because of the limitations of Virtual PC.

Naming conventions

I  picked two machine names that I am going to use during this step-by-step tutorial:

  • Physical Machine: Boots from real physical disk partition: “Kreutzotter7
  • VHD Machine: Boots from VHD file that resides on physical partition: “Copra7

Content

The tutorial explains the following the procedure to:

  • Create a VHD drive using the DISKPART utility
  • Installing Windows 7 into the VDH drive

Preparation

Before you begin make sure you have the following things on hand:

  • Windows 7 Installation DVD
  • A computer that runs Windows 7 or Windows 2008 Server R2
  • Optional: A spare hard drive and a screw driver.

The Procedure

Note: Remember you are messing with the boot partition and are installing Windows 7. To be precautions, you might want to practice first on a system that you easily can loose, if something goes wrong.

Now let’s get started: Boot into Kreutzotter7, or whatever your “physical” machine is called, and create a folder called c:\vhds.

image

Figure 1: Create folder on C:\ drive called Vhds on Kreutzotter

Now insert your Windows 7 installation DVD into your DVD drive, restart the system and boot from the DVD. At the setup screen, don’t choose “Install Now”, but press “Shift-F10” to get into command line mode.

DSC00094

Figure 2: Booting form Windows 7 installation DVD and press “Shift-F10” to start the command line mode

DSC00096

Figure 3: In command line mode

In the command prompt type:

diskpart

 DSC00109

Figure 4: Enter diskpart

Create a new VHD file by entering in the DISKPART prompt:

create vdisk file=”D:\vhds\copra7.vhd” type=expandable maximum=20000

 DSC00111

Figure 5: create vdisk command

The “maximum” parameter is the disk size in mega bytes and the “file” parameter specifies the name of the file that is going to hold the VHD. This command is the most critical for two reasons:

1) As you might have noticed I used the D:\ drive instead of the C:\ drive where I created the Vhds folder. This fact caused me a major headache, because I tried to create the copra7.vhd originally on the C: drive and I got an error that indicated the disk didn’t have enough space. But on the c:\ drive of my physical OS was plenty of room. I finally looked at each of the drives using the dir commands until I found the correct drive. In my case it was the D: drive.

DSC00101

Figure 6: Finding the correct drive letter. Trying C:\

DSC00105

Figure 7: Finding the correct drive letter. Trying D:\. Bingo!

2) The disk size is also important. You don’t want to make it two small, but also not two large, because during booting of our VHD OS, the machine will check for the specified disk size and fail with a blue screen, if the physical disk doesn’t have enough room for the indicated virtual disk size that was provided with the maximum parameter.

Note: For differencing VHDs you need to add an additional parameter parent=”D:\vhds\MotherCopra.vhd”.

Now select the new VHD and attach it as a physical disk.

select vdisk file=”D:\vhds\\copra7.vhd”

 DSC00114

Figure 8: Selecting new vdisk

Now attach the vdisk using the following command:


attach vdisk

 DSC00116

Figure 9: Attaching new vdisk

At this point switch back to the setup window and start the setup.

DSC00117

Figure 10: Switched back to the Windows 7 installation screen

Proceed the normal setup, but make sure you install to the correct disk (normally the last one), ignore the “Windows cannot install to this disk” warning.

DSC00120

Figure 11: Picking the correct partition. Hint: Look at the size when in doubt.

At next startup, you’ll see Windows 7 in the boot menu!

DSC00122

Figure 12: Windows 7 installation progress

DSC00132

Figure 13: Windows 7 installation on VHD almost done

Once the installation of Windows 7 is done, you are going to see two boot entries. In my case there are two Windows 7 lines, because my physical OS is also Windows 7. The top one is the one booting from the VHD, the bottom one is the one booting from the physical partition.

 DSC00136

Figure 14: Two boot entries. The one on the top is the one that belongs to the VHD.

Now, if you are booting into Kreutzotter7 (the OS booting form the physical disk), you can see the copra7.vhd file. I recommend backing it up. You can use your VHD OS sandbox and if you are done with it, you can restore the original state by restoring the copra7.vhd file from your backup location.

 image

Figure 15: Finally, here is our vhd file

Links

Here are couple of links that my article is based on. None of them is of course as complete as mine. Hence the reason I created one for my personal reference.

Booting from a VHD

Booting from a VHD (2)

Windows 7 VHD on TechNet

More links about VHD on Windows 7

Boot from VHD on Windows 7 Gotchas

Turning a Windows 7 DVD or ISO into a Bootable VHD Virtual Machine

Native VHD support

Create bootable Windows 7 VHD

Dual boot VHD video for Windows 7 and Windows 2008 Server R2

Create a bootable Windows 7 VHD (2)

Ausblick

I am really curious about differential VHDs maybe sometime I will experiment with this feature as well.

Tags: ,

Tips & Tricks | Test Automation | Virtualization

Comments

4/2/2010 6:41:01 PM #

pingback

Pingback from topsy.com

Twitter Trackbacks for
        
        Tellingmachine | Creating a Windows 7 VHD Virtual Hard Drive
        [tellingmachine.com]
        on Topsy.com

topsy.com | Reply

Add comment




  Country flag

biuquote
  • Comment
  • Preview
Loading



About Klaus Graefensteiner

I like the programming of machines.

Add to Google Reader or Homepage

LinkedIn FacebookTwitter View Klaus Graefensteiner's profile on Technorati
Klaus Graefensteiner

Klaus Graefensteiner
works as developer in Test at Rockwell Automation and is founder of the PowerShell Unit Testing Framework PSUnit. More...

Administration

About

Powered by:
BlogEngine.Net
Version: 1.5.0.7

License:
Creative Commons License

Copyright:
© Copyright 2009, Klaus Graefensteiner.

Disclaimer:
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

Theme design:
This blog theme was designed and is copyrighted 2009 by Klaus Graefensteiner

Rendertime:
Page rendered at 9/8/2010 9:17:11 AM (PST Pacific Standard Time UTC DST -7)