<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <body>
    <h1 >Windows support</h1>

    <ul id="toc"></ul>

    <p>
      Libvirt is known to work as a client (not server) on Windows XP
      (32-bit), and Windows 7 (64-bit).  Other Windows variants likely work
      as well but we either haven't tested or received reports for them.
    </p>

    <h2><a name="installer">Installation packages</a></h2>

    <p>
      Users who need pre-built Windows DLLs of libvirt are advised
      to use the <a href="http://virt-manager.org">Virt Viewer</a>
      pre-compiled <a href="http://virt-manager.org/download/">Windows MSI packages</a>
    </p>

    <p>
      These installers include the libvirt, gtk-vnc and spice-gtk DLLs
      along with any of their pre-requisite supporting DLLs, the virsh
      command line tool and the virt-viewer &amp; remote-viewer graphical
      tools. The development headers are not currently provided in this
      installer, so this cannot be used for compiling new applications
      against libvirt.
    </p>

    <h2><a name="conntypes">Connection types</a></h2>

    <p>
      These connection types are known to work:
    </p>

    <ul>
      <li>QEMU with TLS (qemu+tls://)</li>
      <li>QEMU with direct TCP (qemu+tcp://)</li>
      <li>VMware ESX (esx://)</li>
      <li>VMware VPX (vpx://)</li>
    </ul>

    <p>
      These connection types are known not to work:
    </p>

    <ul>
      <li>QEMU with SSH (qemu+ssh://)</li>
    </ul>

    <p>
      All other connection types may or may not work, and haven't been
      tested.
    </p>

    <p>
      Please let us know either the results (either way) if you do.
    </p>

    <p>
      <b>Special note</b> - Support for VirtualBox *on windows* was added in
      libvirt 0.8.7, so reports on success and failure if you're using that
      would be really helpful and appreciated.
    </p>

    <p>
      <b>WARNING - The qemu+tcp:// connection type passes all traffic
      without encryption.  This is a security hazard, and should <i>not</i>
      be used in security sensitive environments.</b>
    </p>

    <h2><a name="esx">Connecting to VMware ESX/vSphere</a></h2>

    <p>
      Details on the capabilities, certificates, and connection string
      syntax used for connecting to VMware ESX and vSphere can be found
      online here:<br />
    </p>

    <a href="http://libvirt.org/drvesx.html">http://libvirt.org/drvesx.html</a>

    <h2><a name="tlscerts">TLS Certificates</a></h2>

    <p>
      TLS certificates need to have been created and placed in the correct
      locations, before you will be able to connect to QEMU servers over
      TLS.
    </p>

    <p>
      Information on generating TLS certificates can be found here:
    </p>

    <a href="http://wiki.libvirt.org/page/TLSSetup">http://wiki.libvirt.org/page/TLSSetup</a>

    <p>
      These instructions are for *nix, and have not yet been adapted for
      Windows.  You'll need to figure out the Windows equivalents until
      that's done (sorry).  If you can help us out with this, that would be
      really welcome.
    </p>

    <p>
      The locations of the TLS certificates and key file on Windows are hard
      coded, rather than being configurable.
    </p>

    <p>
      The Certificate Authority (CA) certificate file must be placed in:
    </p>

    <ul>
      <li>%APPDATA%\libvirt\pki\CA\cacert.pem</li>
    </ul>

    <p>
      The Client certificate file must be placed in:
    </p>

    <ul>
      <li>%APPDATA%\libvirt\pki\libvirt\clientcert.pem</li>
    </ul>

    <p>
      The Client key file must be placed in:
    </p>

    <ul>
      <li>%APPDATA%\libvirt\pki\libvirt\private\clientkey.pem</li>
    </ul>

    <p>
      On an example Windows 7 x64 system here, this resolves to these paths:
    </p>

    <ul>
      <li>C:\Users\someuser\AppData\Roaming\libvirt\pki\CA\cacert.pem</li>
      <li>C:\Users\someuser\AppData\Roaming\libvirt\pki\libvirt\clientcert.pem</li>
      <li>C:\Users\someuser\AppData\Roaming\libvirt\pki\libvirt\private\clientkey.pem</li>
    </ul>

    <h2><a name="feedback">Feedback</a></h2>

    <p>
      Feedback and suggestions on changes to make and what else to include
      <a href="contact.html">are desired</a>.
    </p>

    <h2><a name="compiling">Compiling yourself</a></h2>

    <p>
      Libvirt can be compiled on Windows using the free
      <a href="http://www.mingw.org/">MinGW compiler</a>.
    </p>

    <h3><a name="msys_setup">MSYS Build script</a></h3>

    <p>
      The easiest way is to use the <b>msys_setup</b> script, developed by
      Matthias Bolte.  This is actively developed and kept current with
      libvirt releases:
    </p>

    <a href="https://github.com/photron/msys_setup">https://github.com/photron/msys_setup</a>

    <h3><a name="cross-compile">Cross compiling</a></h3>

    <p>
      You can also cross-compile to a Windows target from a Fedora machine
      using the packages available
      <a href="http://hg.et.redhat.com/misc/fedora-mingw--devel/">from the Fedora MinGW project</a>
      (which includes a working libvirt specfile).
    </p>

    <h3><a name="configure">By hand</a></h3>

    <p>
      Use these options when following the instructions on the
      <a href="compiling.html">Compiling</a> page.
    </p>

<pre>
./configure \
  --without-sasl \
  --without-avahi \
  --without-polkit \
  --without-python \
  --without-xen \
  --without-qemu \
  --without-lxc \
  --without-openvz \
  --without-libvirtd
</pre>

  </body>
</html>
