Free Software

Software Engineering with FOSS and Linux

Migrating from VirtualBox to VMWare in Linux

Ok this is not really a post about free software, in fact it is quite the opposite, but after spending a long time trying to figure a way to convert a VirtualBox image to a VMWare one I figured someone may benefit from it. The reason I had to switch was that I couldn’t get DirectX and 3D Acceleration to work in VirtualBox, but it works fine in VMWare (if you have any suggestions to help me with DirectX and 3D Acceleration in VirtualBox please post here, since VirtualBox seems to be running smoother on my laptop). All the info is scattered around the web, but searching for it is tricky since many links refer to old VirtualBox versions and most of them refer to the opposite operation, i.e. migrating from VMWare to VirtualBox. So here we go:

– Locate your VirtualBox virtual drive, in my case this was /var/local/virtual/windows.vdi. For the rest of the post I assume we are in the virtual drive’s directory (i.e. /var/local/virtual)
– Convert it to raw format. In later versions of VirtualBox (I am using 3.1.2) this is done through the VBoxManage tool:

VBoxManage internalcommands converttoraw windows.dvi windows.raw

– Install qemu
– Convert the raw file to a VMWare compatible image format:

qemu-img convert -f raw -O vmdk windows.raw windows.vmdk

You can now delete the raw file to save some space.

– Launch vmware. I am using VMware Workstation 7.0.1.
– Create a new Virtual Machine. At the wizard, use the following steps (the important options are in blue):

Virtual Machine Configuration: Custom
Virtual Machine Hardware Compatibility: Workstation 6.5 – 7.0
Install operating system from: I will install the operating system later
Guest Operating System: Whatever you’re running (I’m using the vm for Windows XP Professional)
Virtual Machine Name: Whatever you want, or leave the defaults
Processors: Whatever you want, or leave the defaults. I’m using 1
Memory: As much as you like. I’m using 1GB
Network Connection: Use network address translation (NAT)
I/O Adapter Types: SCSI adapter: BusLogic.
Disk: Use an existing virtual disk. Then browse for the .vmdk file

When you start the VM, you will be asked to convert it to new format. Do so, since qemu-img may generate formats compatible with older VMWare versions. Also don’t forget to install VMWare Tools (from the VMWare menu select VM, then Install VMWare Tools…), 3D Acceleration didn’t work until I did.

February 21, 2010 Posted by | linux | , , , | 7 Comments

Fully disabling touchpad in Ubuntu 9.10 Karmic Koala

Ubuntu 9.04 used to allow you to fully disable the touchpad through the System -> Preferences -> Mouse -> Touchpad menu. In 9.10 this has been replaced with a ‘Disable touchpad while typing’ option, which I find inadequate in several cases. Here’s a way to fully disable your touchpad in 9.10:

  • First, find the HAL configuration file for your touchpad. Mine lies in /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi, but according to some posts it might be found in /usr/share/fdi/policy/10osvendor/11-x11-synaptics.fdi
  • Either delete the HAL configuration file, or rename it to something else (without the .fdi extension). This way hald (the HAL daemon) will not reset the touchpad driver when we will disable it.
  • In a console, run xinput list to find the name of your touchpad device under X. For example, I get:

$ xinput list |grep -i touchpad

“AlpsPS/2 ALPS DualPoint TouchPad”    id=8    [XExtensionPointer]

  • To disable the  touchpad, run:

xinput set-int-prop “AlpsPS/2 ALPS DualPoint TouchPad” “Device Enabled” 8 0

Of course you should replace “AlpsPS/2 ALPS DualPoint TouchPad” with your own device name, as shown by xinput list.

To automatically disable your touchpad each time you log into X, you should add a startup script. In Gnome, use System -> Preferences -> Startup Applications, click on ‘Add’,  use a name like ‘Disable Touchpad’ and type in the xinput set-int-prop line in the Command field.

To facilitate touchpad handling (i.e. to enable/disable it at will, for example when you plug in/out a mouse), you could create the following script:

#! /bin/sh
# Provides:          touchpad
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:
# Default-Stop:    2
# Short-Description: Disables the touchpad

TOUCHPAD=”AlpsPS/2 ALPS DualPoint TouchPad”

. /lib/init/
. /lib/lsb/init-functions

case “$1” in
xinput set-int-prop “$TOUCHPAD” “Device Enabled” 8 1
rmmod psmouse && modprobe psmouse
xinput set-int-prop “$TOUCHPAD” “Device Enabled” 8 0
echo “Usage: $0 start|stop” >&2
exit 3

Of course you should use your own device in the TOUCHPAD=… line. Save it in /etc/init.d/touchpad, and set it to off by default:

sudo update-rc.d touchpad stop 99 2 .

Note: The rmmode psmouse && modprobe psmouse commands in the restart option will reset your touchpad (and, incidentally, your mouse) if your driver fails due to a bug described here.

January 4, 2010 Posted by | linux | | 26 Comments

Fixing sound after upgrading to Ubuntu 9.10 Karmic Koala

I recently upgraded from Ubuntu Jaunty (9.04) to Karmic (9.10), and the sound stopped working. As a matter of fact, no sound card was detected. Searching around, it turned out that the problem lied with a wrong kernel version, which actually stems from an apparent bug in the new grub boot loader that ships with Karmic. Even though I’m using Ubuntu, this might affect other distributions that use the same boot loader. If you face a similar problem, try the following:

First, check your kernel version:

  • sudo uname -r

If you see a version below 2.6.31, do the following:

  • Delete your old /boot/grub/menu.lst file. Due to an apparent bug, grub will not overwrite it during distribution upgrade or subsequent upgrade-grub commands.
  • Run sudo update-grub. A new menu.lst will be generated, now pointing to the right kernel.
  • Install grub on your MBR. First make sure which device holds your MBR (most probably /dev/sda, but it might be /dev/hda if you have an old IDE disk), then run: sudo grub-install /dev/sda (replace with the proper device)
  • Reboot.

Hope this helps.

December 31, 2009 Posted by | linux | | 6 Comments

Dealing with mouse and touchpad freezes in Linux

Sometimes the desktop in several Linux distributions freezes for no apparent reason; active windows can still be used, and the mouse pointer can be moved around, but clicking is impossible. Furthermore, your touchpad can no longer be controlled; the ‘Touchpad’ tab disappears from the System / Preferences / Mouse menu. Even if mouse functionality eventually returns, the touchpad remains uncontrollable. This extremely annoying bug occurs randomly and may last for a couple of seconds, or until you restart your X server.

If you check your system’s log after such an event (/var/log/messages) you will notice a few entries similar to these:

Sep  9 09:38:15 umbra kernel: [ 4939.006198] psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 lost sync at byte 1
Sep  9 09:38:15 umbra kernel: [ 4939.012220] psmouse.c: DualPoint TouchPad at isa0060/serio1/input0 - driver resynched.

Basically this indicates an IRQ conflict between your mouse and your touchpad. This is a Linux kernel bug (I am currently using 2.6.28) and as such it affects most distributions. An easy way to recover both mouse and touchpad functionality without having to restart your X server is restarting the mouse driver. Run the following commands on a terminal window:

sudo rmmod psmouse
sudo modprobe psmouse

If there is no terminal window open, you can use one of the following:

  • In Gnome or KDE, press Alt + F2, type gnome-terminal and press Enter
  • Press Control + Alt + F1, login with your username and password, type the commands, then press Control + Alt + F7 to get back to X

Hopefully a future kernel release will fix this problem for good.

September 9, 2009 Posted by | linux | , , , , , , , | 35 Comments