I have a new Dell M4400 laptop that I just got up and running with Windows 7 and thought “WOW! It would be great to boot this thing as Hyper-V server and just run the demos on there … but I have everything installed already!” What to do? The solution turns out to be incredibly simple: Dual boot between Windows 7 and Windows Server 2008 R2 using boot from VHD. At the end of the day the only drawbacks seem to be that I’ll lose the ability to hibernate when I’m booted off of VHD and I’ll see about a 3% overhead in disk performance so I took the plunge, I’m pretty pleased with it so I thought I’d share what it took to get up and running and my list of reference articles/sites.
Pre-Requisites
- You’ll need a machine that supports hardware virtualization with Windows 7 already installed and hardware virtualization enabled in the bios.
- You’ll need the install media for Windows Server 2008 R2. I recommend a USB stick and following my blog article: Installing Windows 2008 off a USB stick
- You’ll need to take your prom dress off and not be a little girl about it. You’ll likely not blow up your machine but in case you do you’ll be hard at work getting things back. I run windows home server at home for backup so I have no worries, those backups are rock solid!
The Process
The first thing you need to do is create a VHD to boot off of and make it available to the setup. Here’s the steps:
1. Start the Windows Server setup. When you get to the install screen (shown below) press Shift-F12:
This will bring up a dos prompt. You’re actually inside of a WinPE (Windows Preinstalled Environment) it’s from here we’re going to: Mount our drive on the Windows 7 install, connect to the volume, create a VHD on that drive, attach the VHD to the system before we continue the setup.
2. In this step we’ll create the VHD and and attach it to our system so the installer will see it.
- From the DOS prompt enter DISKPART
X:\Sources>diskpart
- List our drives in the system.
DISKPART> list disk
Disk ### Status Size Free Dyn Gpt
——– ————- ——- ——- — —
Disk 0 Online 298 GB 0 B
Disk 1 Online 3864 MB 0 B
- Select the drive we’re going to create the VHD on.
DISKPART> select disk 0
Disk 0 is now the selected disk.
- List our volumes before we create the VHD.
DISKPART> list vol
Volume ### Ltr Label Fs Type Size Status Info
———- — ———– —– ———- ——- ——— ——–
Volume 0 E DVD-ROM 0 B No Media
Volume 1 C System Rese NTFS Partition 100 MB Healthy
Volume 2 D NTFS Partition 297 GB Healthy
Volume 3 F FAT32 Removable 3863 MB Healthy
Volume 4 FAT Partition 172 MB Healthy Hidden
- Create our VHD on the drive we have our Windows7 OS installed on.
DISKPART> create vdisk file=d:\vhds\windows2008.vhd MAXIMUM=50000 TYPE=EXPANDABLE
100 percent completed
DiskPart successfully created the virtual disk file.
- Select the VHD Disk
DISKPART> select vdisk file=d:\vhds\windows2008.vhd
DiskPart successfully selected the virtual disk file.
- Attach the VHD Disk to the system
DISKPART> attach vdisk
100 percent completed
DiskPart successfully attached the virtual disk file.
- Create the Primary Partition on the VHD
DISKPART> cre part pri
DiskPart succeeded in creating the specified partition.
- Format the new Partition (quickly thanks Alex)
DISKPART> format fs=ntfs quick
100 percent completed
DiskPart successfully formatted the volume.
- Assign a drive letter to the new Partition
DISKPART> assign letter=v:
DiskPart successfully assigned the drive letter or mount point.
- Verify the Volume is there.
DISKPART> list vol
Volume ### Ltr Label Fs Type Size Status Info
———- — ———– —– ———- ——- ——— ——–
Volume 0 E DVD-ROM 0 B No Media
Volume 1 C System Rese NTFS Partition 100 MB Healthy
Volume 2 D NTFS Partition 297 GB Healthy
Volume 3 F FAT32 Removable 3863 MB Healthy
Volume 4 FAT Partition 172 MB Healthy Hidden
* Volume 5 V NTFS Partition 48 GB Healthy
- Exit DISKPART and DOS (type exit at both prompts) and continue the installation.
DISKPART>EXIT
X:\Sources>EXIT
3. Now you’ll run the installer making sure to select your 50GB drive you created earlier and install the OS there. On my Dell M4400 it said that booting from the VHD wasn’t supported on my bios. I ignored it and the boot works anyway. Your mileage may vary.
After it’s installed
Okay you should have run through the installer now and yes it’s really just that easy.
Now in Windows 7 and Windows Server 2008 The OS creates a special boot partition that’s 100MB in size. There’s a boot configuration file there that gets automatically updated by doing this install procedure for you so when you’re booting your OS you’ll see the options on the screen. I’m not going to include more information about that in this HOW-TO but will provide links to some of the great resources I referenced in my own learning process.
The Cool Stuff
My favorite part of my blog (and why I blog) is The Cool Stuff! Here’s the cool stuff:
- You’re able to automatically see your parent drive on the VHD machine. In my case it’s the D: drive.
- You’re able to mount a VHD within Windows 7 and see the content there as well.
- We used a Dynamic Disk which will expand automatically (it will not contract automatically) as needed up to the size of the disk we created it as. Right now my 50GB VHD only uses 7GB of actual diskspace.
- We’re able to use Hyper-V now and create our new machines be it for labs or demos and get to use all the cool features of Hyper-V like snapshoting.
- All of my laptop’s hardware features are all directly available to the OS since we’re booting from a virtual Hard Drive not a virtual machine.
The Gotchas
This is the stuff I ran into that could pose a problem and how I addressed it.
- The installer said my Laptop BIOS didn’t support booting from VHD but I tried it anyway and it’s working fine. YMMV (Your Mileage May Vary)
- We’ll lose Hibernate when booted from the VHD and we’re not able to run the System Index Tool to see what kind of scores our computer gets (you can use other tools for that like SiSandra).
- When I first installed Windows Server 2008 I couldn’t see my wireless NIC. Turns out this is a feature you need to turn on in Windows Server 2008 which makes sense as I don’t know of any servers with a Wireless NIC.
- Once you enable your Wireless NIC, Hyper-V won’t be able to use it to create a virtual switch. But don’t worry there’s a few clever blog posts out there on how to do this using Internet Connection Sharing ;).
- I saw a blog post about BitLocker and it not supporting the boot from VHD. I haven’t enabled bitlocker on the new laptop so I don’t know the impact that will have.