QEMU Upstream

From Xen
Revision as of 09:37, 13 March 2012 by Ijc (talk | contribs) (Import from old wiki)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

How to build QEMU (upstream version) with Xen

Get the source

Build it!

  • Build Xen
    • make xen tools, if it fail see bellow.
  • Build QEMU upstream with Xen
    • For xen-unstable.hg versions between 23412:996c7726a376 and 23632:33717472f37e you will need to copy path_to_xen/tools/libxc/xc_e820.h to $path_to_xen_source/dist/install/usr/include" for configuration script to work. After 23632:33717472f37e xc_e820.h was squashed into xenctrl.h
    • ./configure --enable-xen --target-list=i386-softmmu --extra-cflags="-I$path_to_xen_source/tools/include -I$path_to_xen_source/tools/libxc -I$path_to_xen_source/tools/xenstore" --extra-ldflags="-L$path_to_xen_source/tools/libxc -L$path_to_xen_source/tools/xenstore"
    • make

Troubleshooting compilation errors: If you get an error from configure like "ERROR: User requested feature xen ERROR: configure was not able to find it" then see this: http://xen.1045712.n5.nabble.com/Upstream-Qemu-With-Xen-configuration-problem-td4561779.html , ie. you need to point the paths for "configure" to xen source directory, not to xen dist directory.

Run it!

Either:

  • Add "device_model = path/to/new/qemu" in your VM configuration files.
    • This have been change in the latest xen-unstable tree: now use:
      • device_model_override = '/root/work/qemu/_build/i386-softmmu/qemu'
      • device_model_version = 'qemu-xen'
  • Replace /usr/lib/xen/bin/qemu-dm by the qemu present in i386-softmmu/qemu of the build of QEMU.
 with the last xen-unstable, device_model_version = 'qemu-xen' is needed in the guest configuration file.

Now xl will always try run qemu upstream with seabios, so build xen with seabios.

Use with SeaBIOS

  • Get SeaBIOS from git://git.seabios.org/seabios.git
    • As of commit ee2bc468cbc7 in that tree no patches to SeaBIOS are required.
    • You can take the .config file here to put in the root of your source tree
    • and build SeaBIOS (make).
  • In xen-unstable source tree, add the file .config with SEABIOS_DIR = /path/to/seabios. If this does not work a temporary hack is to modify the SEABIOS_ROM path in tools/firmware/hvmloader/Makefile to point to path_to_seabios/out/bios.bin
  • Build Xen, at least make tools to update the "xen-bios"
    • tips: make -C tools/firmware clean before make tools to take into account the new SEABIOS_DIR parameter.
  • Run it!