Difference between revisions of "QEMU Upstream"

From Xen
(Update SeaBIOS information)
(How to build QEMU (upstream version) with Xen)
Line 1: Line 1:
 
= How to build QEMU (upstream version) with Xen =
 
= How to build QEMU (upstream version) with Xen =
  +
  +
Nowadays, xen-unstable will clone and build a qemu git tree from xenbits. (It is qemu-stable-1.0 today). But you can follow this guide to build the upstream unstable qemu git tree.
  +
  +
You can add this to your "xen-unstable.git/.config" file, so xen-unstable will clone and build the upstream tree.
  +
<pre>
  +
QEMU_UPSTREAM_URL = git://git.qemu.org/qemu.git
  +
QEMU_UPSTREAM_REVISION = master
  +
</pre>
  +
  +
Then, add "device_model_version = 'qemu-xen'" in your vm config file to use this new qemu.
  +
  +
Or build qemu out of the xen-unstable dir:
   
 
== Get the source ==
 
== Get the source ==
 
* Get Xen source (version 4.2 aka xen-unstable development version)
 
* Get Xen source (version 4.2 aka xen-unstable development version)
 
* Get QEMU upstream source from:
 
* Get QEMU upstream source from:
  +
** git://git.qemu.org/qemu.git
** Recommended: xen-stable-0.15 qemu branch
 
  +
*** git://xenbits.xen.org/people/sstabellini/qemu-dm.git xen-stable-0.15
 
*** Announcement of the "xen-stable-0.15" qemu branch and more info here: http://lists.xensource.com/archives/html/xen-devel/2011-07/msg01359.html
 
* Other option: Anthony's git tree used for development
 
** git://xenbits.xen.org/people/aperard/qemu-dm.git
 
* Example for "xen-stable-0.15" branch
 
** git clone git://xenbits.xen.org/people/sstabellini/qemu-dm.git qemu-dm.git
 
** cd qemu-dm.git
 
** git checkout -b xen-stable-0.15 origin/xen-stable-0.15
 
   
 
== Build it! ==
 
== Build it! ==
Line 25: Line 30:
 
== Run it! ==
 
== Run it! ==
 
Either:
 
Either:
  +
* With the latest xen-unstable tree, use:
* Add "device_model = path/to/new/qemu" in your VM configuration files.
 
  +
** device_model_version = 'qemu-xen'
** This have been change in the latest xen-unstable tree: now use:
 
*** device_model_override = '/root/work/qemu/_build/i386-softmmu/qemu'
+
** device_model_override = '/root/work/qemu/_build/i386-softmmu/qemu-system-i386'
*** 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.'''
 
'''Now xl will always try run qemu upstream with seabios, so build xen with seabios.'''
* For troubleshooting device_model related errors (Xen specific options -domain-name, -vcpus, etc) see: http://xen.1045712.n5.nabble.com/Upstream-QEMU-not-working-with-Xen-unstable-lacks-option-definitions-td4372252.html
+
* For troubleshooting device_model on older Xen related errors (Xen specific options -domain-name, -vcpus, etc) see: http://xen.1045712.n5.nabble.com/Upstream-QEMU-not-working-with-Xen-unstable-lacks-option-definitions-td4372252.html
   
 
== Use with SeaBIOS ==
 
== Use with SeaBIOS ==

Revision as of 17:05, 15 March 2012

How to build QEMU (upstream version) with Xen

Nowadays, xen-unstable will clone and build a qemu git tree from xenbits. (It is qemu-stable-1.0 today). But you can follow this guide to build the upstream unstable qemu git tree.

You can add this to your "xen-unstable.git/.config" file, so xen-unstable will clone and build the upstream tree.

QEMU_UPSTREAM_URL = git://git.qemu.org/qemu.git
QEMU_UPSTREAM_REVISION = master

Then, add "device_model_version = 'qemu-xen'" in your vm config file to use this new qemu.

Or build qemu out of the xen-unstable dir:

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:

  • With the latest xen-unstable tree, use:
    • device_model_version = 'qemu-xen'
    • device_model_override = '/root/work/qemu/_build/i386-softmmu/qemu-system-i386'

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

Use with SeaBIOS

SeaBIOS support is now fully integrated into the Xen build system (in xen-unstable and xen-4.2 onwards) and is always used when using device_model_version = "qemu-xen".

If you want to build a version of SeaBIOS other than the default then you can override SEABIOS_UPSTREAM_URL and/or SEABIOS_UPSTREAM_TAG via .config. For reference the upstream SeaBIOS repository is [[1]].