I like Kqemu + Qemu.
This is what you do to install it if your running Debian:
(as root)
apt-get update
apt-get upgrade
(reboot if you have a kernel upgrade)
apt-get install module-assistant qemu qemu-launcher kqemu-common
m-a update
m-a prepare
m-a a-i kqemu
Then after that is all done you can stick 'kqemu' in /etc/modules to make sure that it's loaded next time you reboot.
Baring that you can go:
modprobe kqemu
Then give permissions to your user.
Most documentation tells you to go:
chmod 666 /dev/kqemu
Which is ok for single user systems (it will allow anybody to write to it), but for security on multiuser systems it would be better to setup a group called 'kqemu' then add users to it. So after making kqemu group and then adding your user to it and logging out and logging back in you'd go:
chown root:kqemu /dev/kqemu
Older versions of the package didn't setup /dev/kqemu correctly, so if your using Debian Etch you'll probably have to go:
/sbin/modprobe kqemu major=250
mknod /dev/kqemu c 250 0
chmod 666 /dev/kqemu
(or)
chown root:kqemu /dev/kqemu
Stick that into /etc/rc.local so it gets ran at boot up time. (rc.local is a handy place debian makes for running simple scripts during bootup time.)
Then you can launch qemu-launcher. When you first install Windows you'd have probably would have to disable acpi and not use kqemu since it's not 100%, but after installing Windows it will work fine.
A faster version of Qemu is called KVM. Kvm is a hacked version of Qemu setup to use the new Linux kernel built-in virtualization called 'kvm' for kernel virtual machine.
KVM should be a bit faster then Kqemu, but you require to have hardware that supports it.
Newer Intel proccessors should support it. Stuff like Pentium-D 9xx series and Core Duo systems should support it, but not all do. There are a few proccessors that don't so you have to check /proc/cpuinfo to see if you have it enabled.
If you have a Intel CPU that should support it (check Intel's online documentation to be sure), but it's not enabled you may have to enable the virtualization features in your BIOS. Some motherboards require a bios upgrade.
For AMD proccessors it's easier. If you have a AM2 socket then you should have support.
To use Kvm you install all your normal Qemu stuff, but you leave out kqemu and install the kvm (the hacked version of qemu).
apt-get install qemu qemu-launcher kvm
Then you add yourself to the kvm group (permissions are setup correctly out the box) and log out and log back in.
Then you modprobe the module:
modprobe kvm-intel
or
modprobe kvm-amd
Depending on what type of proccessor your using. Add the module to /etc/modules if you want it to be automaticly enabled next time you reboot.
If your using a older kernel that does not support KVM out of the box. (Virtualization support was added in 2.6.20) then you compile the kvm module.
m-a a-i kvm
Or you can go to KVM's website and download the source from there. KVM should be pretty fast.
To use kvm with qemu-launcher you run qemu-launcher and in the 'launcher settings' tab change /usr/bin/qemu to /usr/bin/kvm and it should work out fine.
Kqemu and KVM can be installed side-by-side if you'd like. Completely compatable.
When using Qemu-launcher don't forget to allocate more ram to your VM. When making/choosing the disk image, go ahead and make it big. The Qcow format that it uses only uses as much disk space as minimally needed to house the files.. So if you make a disk that is 40gig, but the VM only uses 5gigs worth of disk space then your disk image file will only be 5 gigs. Also it's fast, supports encryption and compression.
Also save your profiles so you don't have to re-setup the VM each time you want to run one of your system images.
Also the 'cdrom' can either be a ISO image or a real cdrom (/dev/cdrom usually).
For advanced stuff, like having it being used a server on your network you'll have to setup your network interface as a ethernet bridge (or router if you want to be more advanced). Normally Qemu uses a 'usermode' tcp/ip stack that allows you to access the network, but you won't be able to run services on that network. This will make it safer for running insecure OSes.. Like say you have some obscure application you have to run on Windows 2000, but the SP3 breaks it. That would be a very smart thing to run in Qemu because then it'll be safe from network attacks, but you can still occasionally access the network.
A virtual ethernet bridge will enable you to connect the real network to the virtual one being used by qemu. That gets a bit more confusing however.
If you'd like to allocate lots of RAM to your VM for Kqemu and friends you can run this command:
(as root)
mount -o remount,size=90% /dev/shm
That will enable you to allocate up to 90% of aviable RAM to your VM images. This will also probably give a nice performance boost for Vmware (and probably other VMs) also.
One of the major bottlenecks for VM performance is going to be disk I/O. Using file images for disks are going to be very slow compared to real disks.
You can get good performance boost if your using a Linux system with LVM (logical volume management). This way you can assign a logical volume to be a disk image for a VM. Since your using a raw block device instead of a loopback file the performance will be much better. Of course the best thing would be to have the VM have their own disks, but LVM is free and disks cost money.
To access files stored in virtual disk, like Qcow, raw loopback file, or lvm you can use the mount -o offset=xxxx to access the partitions in those files.
For Qcow you will have to convert the qcow image to a raw image using the qemu-img command. Also you can convert most Vmware disk formats to raw loopback formats using qemu-img.
http://darkdust.net/marc/diskimagehowto.php