Xen can run unmodified DomUs (guest OSs), including Windows or potentially any x86 or x86_64 OS, if your CPU supports Intel VT (aka Vanderpool) or AMD-V (aka Pacifica and SVM). I’ve always known that in theory, but I guess I haven’t been keeping up with the news. It turns out all Athlon64 CPUs for the new Socket AM2 (and apparently some or all Pentium D Preslers) support SVM, and the latest Xen 3.0.2 can use that.
I’ve had a Socket AM2-based system around for a couple of months now. Actually, it’s the new family/kid computer, bought a couple of months ago. It never seemed very interesting… until a few days ago I stumbled on a reference saying all socket AM2 CPUs support Pacifica, AMD’s first set of CPU features adding support for virtualization. Both Intel and AMD are expected to issue future expansions to Vanderpool and Pacifica that will improve performance and/or capabilities. Right now, AMD’s Pacifica is better on features than Intel’s Vanderpool, but that could change in the long run.
I hurriedly shrunk the Windows partition on the socket AM2 computer, spent a night installing Gentoo and Xen, and created a domU (an unprivileged domain – think of it as a client VM) for Windows XP according to these instructions and the sample config file that came with Xen. And I have nothing more to tell you about setting up Windows under Xen, because it worked. Out of the box, network bridging and all.
It’s very fast, too. You can see it’s a bit slower than a native Windows install on the same machine, but not by much. And this is 32-bit Windows; if I had a 64-bit install it may have been even faster. Even so, in very little time we pass the first reboot of Windows Setup, which works just as smoothly and automatically as everything else:
The auto-switch to a higher resolution also worked. BTW, the sample config file enables VNC access to the domU. Try configuring it to use SDL instead – the mouse handling is better. (Although that may be due to me using a lousy vnc client.)
Now I just need to find a Windows 98 installation, and I’ll be able to play some good old games again… I hope. Windows 98 probably wouldn’t work on a real Athlon64, but maybe in a DomU it can be persuaded to run.
And I’m going to have to buy myself a new, Socket AM2-based computer to run xen on.
Just to be clear, I don’t and won’t run Windows; it was just an uncooperative domU to try out. And I certainly wouldn’t buy a new computer just to run Windows under xen :-)
What I do need is to run many different distributions and (free) OSs to test my code on, and the previous virtualization methods I used (qemu, uml, xen without HVM) weren’t quite good enough.