XenServer 5.6 FP1 and Windows 7 x64 Dualboot
I've been wanting a home lab for XenServer for quite some time. My major dilemma has been cheapness. I didn't want to spend $400 to build a cheap white box server. Also, I didn't need the lab on at all times. So this past Saturday afternoon, I decided to use a spare 500GB hard drive and set up dual booting on my existing Windows 7 x64 machine. Hardware: ASUS M4A785TD-M EVO AMD Phenom II Black Edition 6GB RAM Primary hard drive for Windows 7 x64 Secondary hard drive for XenServer 5.6 FP1 Software: XenServer 5.6 FP1 Windows was already installed and happily loading just fine. So, I took the second hard drive and installed it in my machine. I then modified the hard drive order in BIOS to bring the new hard drive to the number 1 position. I went through a typical XenServer install and chose the new hard drive to store my VM's. XenServer booted just fine. Well, almost just fine. The onboard Realtek NIC was found by XenServer but for some reason, the XenServer install kills the NIC. I had to unplug the power to the machine before my NIC would come back to life (I went through this scenario several times to verify these results and I'm still not sure why this is happening). The next hiccup was that even though XenServer now can see the NIC and see that it is connected, there was no network traffic. I searched for a Linux driver for this NIC to no avail. I ended up ordering a DLINK NIC that is on the XenServer HCL from newegg.com for around $18. I should get the NIC sometime this week. Now on to the fun stuff. I tried searching for someone who is dual-booting between Windows 7 and XenServer and did not find much. I did some digging and found XenServer 5.6 FP1 uses extlinux as its bootloader. After doing some more research on chainloading (to pass control of the boot manager to a boot sector) I found the configuration that is able to boot Windows 7 from the XenServer extlinux bootloader. The configuration file is /boot/extlinux.conf, and you can see my modifications below: default menu.c32 prompt 0 ontimeout windows timeout 100 label windows # Windows 7 kernel chain.c32 append hd1 The default menu.c32 loads a boot menu, so you can choose what OS to run. I set the timeout to 100 (10 seconds) and when that expires it uses the ontimeout section which then goes to the windows label. The label windows is what you will see in the boot menu. The kernel chain.c32 tells the boot loader that chainloading is going to be used. The line append h1 is where you specify the hard drive of where the Windows bootloader is. It took some time to get it working. But, this is just one way to accomplish this fun weekend project. Others have used EasyBCD, which is a boot loader configuration tool for Windows instead of modifying extlinux, but where is the fun in that. Please leave your questions or comments below. **Update** Remember to backup your settings in extlinux.conf. When you upgrade XenServer, those settings will be overwritten.