using qemu (on an Eee PC 900)



Yes, an Eee PC can run 10 operating systems in parallel!

I installed qemu 0.11.1 with kqemu 1.4.0 on my Eee PC 900 (1Ghz/1GB running Linux), using an external hard-disk for storage.  I was able to get the following operating systems running with very little difficulty:

  OpenBSD  NetBSD  FreeBSD  DragonFlyBSD  Debian GNU/Linux  Windows XP  Mac OS X  Haiku

tn/qemu

I hope to get PureDarwin and Solaris running in qemu soon.  I use 9vx to run Plan 9.

I was able to install four of these operating systems at the same time without swapping or majorly slowing down the Eee PC.  An Eee PC is not such a very powerful computer; I was impressed with qemu's efficiency.

I cannot use kvm, as the Eee PC's Celeron M CPU does not have the necessary VT extensions, but kqemu works well.  On a PC with VT extensions, qemu will run faster with -enable-kvm.  You can check for VT extensions using:

  egrep -w '^flags.*(vmx|svm)' /proc/cpuinfo

If you cannot use kvm, you will want to use kqemu if possible.  In this case, do not use qemu 0.12; the developers have removed kqemu support.  I have asked them to restore kqemu support.  For now, kqemu can be used with qemu 0.11.1.

Here are some of the commands I used to install and run the different operating systems.

General setup:

  sudo modprobe kqemu
  sudo addgroup kqemu
  sudo adduser sam kqemu
  sudo chgrp kqemu /dev/kqemu
  sudo mount -o remount,size=1280m /dev/shm

qcow2 is the best disk image format.  It features copy-on-write shared blocks (saves space), snapshots, compression and encryption.  For the sake of the underlying filesystems, you do need to specify a size when creating an image.  To create a new qcow2 image that can grow to hold 4 gigabytes:

  qemu-img create -f qcow2 openbsd.img 4G

To install OpenBSD, for example:

  qemu -hda openbsd.img -boot d -m 128 -cdrom openbsd-install46.iso -enable-kqemu

Here are the commands I use to start each operating system:

  qemu -hda openbsd.img -vga std -m 128 -enable-kqemu -name openbsd
  qemu -hda netbsd.img -m 128 -name netbsd
  qemu -hda freebsd.img -m 128 -enable-kqemu -name freebsd
  qemu -hda dflybsd.img -m 128 -enable-kqemu -name dflybsd
  qemu -hda lenny.img -m 128 -enable-kqemu -name lenny
  qemu -hda windows-xp.img -m 128 -enable-kqemu -name "windows xp"
  qemu -hda tiger-x86-qcow2-c.img -net nic,model=rtl8139 -net user -m 128 \
    -enable-kqemu -name "os X"
  qemu -hda haiku-r1alpha1.image -m 128 -enable-kqemu -name haiku

You can use qcow2 snapshots to save the initial clean state of your system.  To take a snapshot, and list snapshots:

  qemu-img snapshot -c initial windows-xp.img
  qemu-img snapshot -l windows-xp.img

You may have a jumbo-sized raw image.  To convert it to the qcow2 format and compress blocks (-c):

  qemu-img convert -c -O qcow2 tiger-x86-flat.img tiger-x86-qcow2-c.img

To convert a VirtualBox image to a (large) raw image (after which you can convert it to qcow2):

  VBoxManage clonehd --format raw solaris.vdi solaris.raw

Notes for each operating system:

FreeBSD, DragonFlyBSD, Debian GNU/Linux and Windows XP worked for me with no troubles at all (so far).

NetBSD does not seem to like kqemu, it works ok with plain qemu.  I don't know if it works with kvm.

OpenBSD and NetBSD networking was broken, but I found how to fix it.

For NetBSD, choose option "4. Disable ACPI and SMP" at the boot prompt.  This can be set permanently by editing boot.cfg:

  default=4

For OpenBSD, we need to disable mpbios (for full details, see http://scie.nti.st/2009/10/4/running openbsd 4 5 in kvm on ubuntu linux 9 04).  In brief, login to OpenBSD as root and type the following, then reboot:

  config -ef /bsd
  disable mpbios
  quit

Solaris is not working for me in qemu yet, I tried to convert a VirtualBox image but it does not work properly in qemu.

Mac OS X boots, but it is not very stable.

With Haiku the mouse pointer is difficult to control.  I think this has been fixed in a recent nightly-build of Haiku (see http://haiku files.org/raw).

I hope this has been useful or interesting, please contact me if you have any questions about it or if you need some help with qemu.

Sam Watkins
2009-12-14

sam.nipl.net

sam@nipl.net