XP and QEMU

Last week I decided to try building a virtual machine to run Windows XP. I figured I’d install XP, install all the recent patches, then make a snapshot of the virtual disk. Then I’d have a clean XP install that I could use to run various apps as needed. Several years back I purchased a copy of VMWare for this purpose, and it worked great. This time around I figured I’d try QEMU, an alternative emulator that’s free. Now, I’ll prefix this by saying that my host machine (a Debian Linux box) is somewhat underpowered to run an XP guest OS. It’s a 700mhz PIII with 512 megs of RAM. It works, and it’s usable, but it’s quite comically slow. In particular, I’d estimate that the installation process took about 12 hours (this was spread out over several days of occasional attention, so I don’t have an exact figure). The basic XP install goes something like:

  1. Install XP from CD.
  2. Install Service Pack 2.
  3. Download and install recent updates from Microsoft to bring the installation completely up to date.

And that’s essentially what I did. The process was marked by long periods of waiting and wondering if it was hung, followed by entering some info in a dialog box, follow by more long periods of waiting and wondering if it was hung, etc. etc. etc. I ran into a couple of known QEMU/XP issues:

  • After the initial install, the reboot hangs on the “Windows XP” splash screen with the message “Please Wait”. Resetting the machine at this point seems to get it moving along again.
  • After initially logging in as “Administrator”, I got a dialog box that said “A problem is preventing windows from accurately checking the license for this computer. Error Code: 0x800703e6.”. Following some advice on the qemu-devel mailing list, I booted into safe mode and installed Service Pack 2, and that fixed this problem.

After that, there was lots more waiting while it downloaded updates, installed IE7, etc. etc. etc., but it eventually finished and left me with a working system. How much use I get out of it remains to be seen, but at least all the effort wasn’t for naught. Recommendation: if you’re going to do this, use a beefier machine than I did 🙂 Also, I highly recommend building and using the kqemu kernel accelerator module. For me, this sped things up from “super mind-numbingly comically slow” to just “comically slow.” And the final tip: If you think it’s hung, go to the host OS and check for activity on the virtual disk image. I lived by this during the install.

And in other news… it’s tax time again! And, this year I’ve decided that I’m tired of getting refunds. Even a “nominal” refund (say $100-$200) is still an interest-free loan to Uncle Sam. So it occurred to me, why don’t I just estimate our 2007 taxes and adjust my withholding appropriately so that I end up owing a nominal amount, instead of getting a nominal refund. Then, with each paycheck, I’ll set the extra amount aside in an interest-bearing account. When next year’s tax season rolls around, I’ll pay the amount owed, and the remainder becomes my “refund”. Seems like a no-brainer, and I wonder why I didn’t come up with this sooner. The complicated part, of course, is estimating our 2007 taxes and avoiding the whole underpayment/penalty/interest thing. But I’m going to give it a go.