Thursday, December 08, 2005

Emulators

I've used VirtualPC, VMWare, and QEMU. QEMU (with KQEMU accelerator, which you don't want to do without). Here are some notes/issues/resolutions for each:

I use the VM's to connect to my corporate VPN via Nortel's Contivity client.

I also took a brief look at BOCHS, but didn't install it. It seemed that most www chater was all about QEMU.

VirtualPC 2005:
- Sometimes shared folders in the guest would "isolate" themselves and never update, even though the host had modified contents of the shared folders. This was a killer for me because I used the VM to do CVS version control within my VPN and my host as the development environment.
- Known issue was found for VirtualPC after applying service pack that stated VPC doesn't run well on laptops with my intel chipset (P4 Centrino w/ Mobile Technology. The "fix" from Microsoft just ran my PC at full blast to keep the chip from entering power saving modes.

VMWare:
- No complaints. Sometimes the mouse pointer gets hosed up and I have to switch from VM to HOST and back and it clears it up.
- Stable.
- Expensive ($180), which is the killer for me. No way will I remove that much out of my own pocket.
- Linux 2.6 time sync issue (documented below)
- Wireless networking can only use NAT. Appearantly an issue with the Linux drivers, not with VMWare.

QEMU:
- Just installed it on my Linux 2.6 Ubuntu.
- Compiled it from source along with the kqemu performance package.
- First issue -- mouse integration did not work. Solution: export SDL_VIDEO_X11_DGAMOUSE=0 before starting qemu.
- Networking ran out of the box.
- Linux 2.6 time sync issue (documented below)
- As with VMWare, you can only use NAT due to limitation in the Linux drivers.
- Once I get around to configuring my guest to connect to my corporate VPN, I will be very curious to know if/how folder sharing works.
- NAT networking is pretty slick -- it has its own firewall, dns, and dhcp.

Here's my startup script for QEMU:
$ cat runqemu.sh
#!/bin/bash
export SDL_VIDEO_X11_DGAMOUSE=0
qemu -localtime -user-net -m 384 -hda winxppro.img

Linux 2.6 Time/Clock Synchronization issue
I've installed the 2.6 (i686) kernel. Appearantly a setting in the Linux source changed from 2.4 to 2.6 which affects the way a virtual machine keeps up with the correct time. The effect was that the guest's clock ran up to 10x warp speed. You could see this by launching the XP Clock.

This issue mostly seems appearant in Mobile chipsets, not desktops, but I'm not 100% sure. The only way I could fix it was by passing "acpi=off" to my kernel during boot. My GRUB /boot/grub/menu.lst entry looks like this:
title Ubuntu, kernel 2.6.12-10-686 (VM TRIALS)
root (hd0,1)
kernel /vmlinuz-2.6.12-10-686 acpi=off root=/dev/mapper/ubuntuvg-root ro quiet splash
initrd /initrd.img-2.6.12-10-686
savedefault
boot

Now my guest clocks stay in perfect sync. However, power saving features are disabled, which is a bugger.

No comments: