For a while I was dual-booting my desktop PC between Windows and Linux. I even figured out how to get Thunderbird and Firefox to share profiles between the two OSes. But I’m not using that setup any more.
If you want to run Linux and Windows on the same machine, you have three choices. You can dual-boot, you can run Windows (or a Windows emulator) under Linux, or you can run Linux under Windows.
Dual booting, I eventually concluded, is just too inconvenient — when I want to do something quick with my PC and it happens to be in the wrong OS, I have to sit around twiddling my thumbs while it shuts down and boots up again.
Running Windows under QEMU is another option, and in fact it’s what I do on the desktop PC at one of my customer’s sites. But even with KQEMU, it’s still pretty sluggish, and pretty limited in functionality. One of the benefits of dual-booting is that you can boot into Windows to use peripherals that have no driver support under Linux, and that’s impossible if you’re using QEMU. (Maybe other virtualization technologies like VMWare are better in that regard, but read on.)
There’s also WINE, of course. That doesn’t have the performance penalty of QEMU — in fact, in some cases it’s noticeably faster than Windows on the same machine — but it does nothing for the peripherals, and though it’s a marvelous, impressive piece of programming, it’s still not all that Windows-compatible. (Maybe one Windows app out of three works flawlessly under WINE for me, to be generous.)
So the other choice is to run Linux under Windows, and that’s exactly what I’m doing. The key is CoLinux, which uses a modified version of the Linux kernel that knows it’s running as a process on a host OS. That means no equivalent of QEMU is needed, though you do need to be running an X server under Windows if you want to use GUI apps (I use the Cygwin one.) Performance is great; apps running under CoLinux are slightly slower than under Linux proper, but only barely. My CoLinux installation mounts the raw disk partition I set up for my dual-boot configuration, so the Windows filesystem doesn’t impose any performance overhead. The CoLinux Wiki describes how to convert a dual-boot system to CoLinux.
This is truly the best of both worlds for me: I can use all my Windows-only peripherals, run whatever games I like, and still have Linux at my beck and call. I no longer have to do the Firefox/Thunderbird dual-boot dance, because I can just run them under Windows right next to the Linux shell window I’m running on the same host.