Making Skype work in a Windows XP VirtualBox guest instance

Posted on Tue 06 January 2009 in misc

If you, like me, install Skype in a Windows XP VirtualBox guest instance running on an Ubuntu host on a ThinkPad T60 with an Intel 2300 dual-core 32-bit processor, it might throw Windows exceptions and generate error reports as reported in VirtualBox ticket #1710.

If you then go into your ThinkPad BIOS and enable the virtualization extensions (under the Config->CPU menu) and reboot your Ubuntu host, you might get the same problem again. I'll tell you right now that the problem is that you need to power off your system after changing the BIOS option, rather than deciding to just Save and Exit with an immediate reboot.

You might then try loading the KVM module with the Intel extensions to test whether your system actually does have the Intel virtualization extensions enabled - and you might get a FATAL: Error inserting kvm_intel (/lib/modules/2.6.27-9-generic/kernel/drivers/kvm/kvm-intel.ko): Operation not supported error message. Perhaps you'll end up consulting a page like the Ubuntu KVM wiki entry and think "Man, I'm doing everything right... what's going on?"; you then re-read the VirtualBox ticket #1710 and decide to try updating the BIOS on your laptop just in case it has some problem enabling the virtualization extensions.

Huzzah! After updating the BIOS, you can then load the kvm and kvm-intel modules. (Aside: this has nothing to do with the updated BIOS, and everything to do with the enforced power-off cycle that comes with the update process.) You triumphantly fire up your Windows XP VirtualBox guest instance, ready to get Skype going, and... the image won't even boot, dying with the horrible error: VirtualBox can't operate in VMX root mode. VBox status code: -4011 (VERR_VMX_IN_VMX_ROOT_MODE). What the...? You do a bit more searching of the forums, and all of the solutions (like Ubuntu bug 292588) tell you to disable KVM. By this time, you're thoroughly confused and have convinced yourself that KVM is necessary for the virtualization extension that will satisfy Skype.

Eventually, you rmmod kvm-intel and try VirtualBox again - and much to your surprise, the image loads and Skype is stable. Huzzah! (Aside: this is because VirtualBox uses its own kernel module, vboxdrv.ko, for virtualization support, and the kvm / kvm-intel kernel modules won't co-exist with that... so your little test to see if the virtualization extensions were working ended up preventing your virtualization application from working.)

I'm sure you're wondering why I was going to all of this effort to get Skype running on a virtual machine in the first place, when there's a native package for Ubuntu available that works. The punch line to all of this is that I convinced my mom to start using Skype as a backup for when her phone line goes dead (which it does, all too often), but for some really weird reason I haven't been able to find her as a contact in the Linux Skype client, even though I know her exact user ID. On a hunch, I wanted to try searching for her in a Windows Skype client. And you know what?

I was able to get exactly one hit, the right result, under the Windows Skype client. That is both baffling and frustrating. Skype is both a proprietary application and service and there's nothing I can do to fix the search problem. It seems that Skype's APIs are messed up enough that they can't even support a simple search reliably on a cross-platform basis. Hopefully that doesn't carry over to, say, being unable to maintain an accurate count of your credit balance.

Ah well. I don't think that the open source alternatives like Ekiga or QuteCom are solutions yet for my Mom's needs; we need the service to match the application. Maybe in a parallel universe Skype's services would support any SIP client, and their contact search API would be open. But in this universe, I have both learned how to properly enable virtualization extension support in VirtualBox on Ubuntu and I have finally added my Mom as a contact in a proprietary application / service. That's good enough for today.

Update a few minutes later: Hmm, looks like Tpad might be close to the service that I'm looking for... Perhaps I'll follow up later with a report.