mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
f18b6c0ec6
* src/Makefile.am src/sexpr.c src/sexpr.h: starting to integrate Anthony Liquori libxend code * src/libvir.c: fix an uninitialized value Daniel
204 lines
8.7 KiB
HTML
204 lines
8.7 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="">
|
|
<title>Libvir the virtualization API</title>
|
|
</head>
|
|
|
|
<body bgcolor="#ffffff">
|
|
<h1 align="center">Libvir the virtualization API</h1>
|
|
|
|
<h1>Note: this is the flat content of the <a href="index.html">web
|
|
site</a></h1>
|
|
|
|
<h1 style="text-align: center">libvir</h1>
|
|
|
|
<p>Libvir is a C toolkit to interract with the virtualization capabilities of
|
|
recent versions of Linux (and other OSes). It is free software available
|
|
under the <a href="http://www.opensource.org/licenses/lgpl-license.html">GNU
|
|
Lesser General Public License</a>. Virtualization of the Linux Operating
|
|
System means the ability to run multiple instances of Operating Systems
|
|
concurently on a single hardware system where the basic resources are driven
|
|
by a Linux instance. The library aim at providing long term stable C API
|
|
primarily for the <a
|
|
href="http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html">Xen
|
|
paravirtualization</a> mechanism but should be able to integrate other
|
|
virtualization mechanisms if needed.</p>
|
|
|
|
<h2><a name="News">Releases</a></h2>
|
|
|
|
<p>There is no official release yet, just CVS state and snapshot, contact the
|
|
mailing list and check the <a href="ChangeLog.html">ChangeLog</a> to gauge
|
|
progresses.</p>
|
|
<ul>
|
|
<li>Extending the API</li>
|
|
</ul>
|
|
|
|
<h3>0.0.1: Dec 19 2005</h3>
|
|
<ul>
|
|
<li>First release</li>
|
|
<li>Basic management of existing Xen domains</li>
|
|
<li>Minimal autogenerated Python bindings</li>
|
|
</ul>
|
|
|
|
<h2><a name="Introducti">Introduction</a></h2>
|
|
|
|
<p></p>
|
|
|
|
<h2><a name="architecture">libvir architecture</a></h2>
|
|
|
|
<p>In a Xen environment, programs using libvir have to execute in "Domain 0",
|
|
which is the primary Linux OS loaded on the machine. That OS kernel provides
|
|
most if not all of the actual drivers used by the set of domains. It also
|
|
runs the Xen Store, a database of informations shared by the hypervisor, the
|
|
kernels, the drivers and the xen daemon. Xend, the xen daemon, also runs in
|
|
Domain0 and supervise the control and execution of the sets of domains. The
|
|
hypervisor, drivers, kernels and daemons communicate though a shared system
|
|
bus implemented in the hypervisor. The figure below tries to provide a view
|
|
of this environment: </p>
|
|
<img src="architecture.gif" alt="The Xen architecture">
|
|
|
|
<p>The library can be initialized in 2 ways depending on the level of
|
|
priviledge of the embedding program. If it runs with root access,
|
|
virConnectOpen() can be used, it will use a read/write connection to the Xen
|
|
Store and use Xen Hypervisor calls when possible. If it runs without root
|
|
access virConnectOpenReadOnly() should be used, it will try to open the
|
|
read-only socket <code>/var/run/xenstored/socket_ro</code> to connect to the
|
|
Xen Store. In this case use of hypervisor calls and write to the Xen Store
|
|
will not be possible, restraining the amount of APIs available and slowing
|
|
down information gathering about domains. We expect libvir will also conmnect
|
|
to the Xend daemon for some of the domain control operations, though this is
|
|
not the case in the 0.0.1 initial version.</p>
|
|
|
|
<h2><a name="Downloads">Downloads</a></h2>
|
|
|
|
<p>The latest versions of libvir can be found on the <a
|
|
href="ftp://libvir.org/libvir/">libvir.org</a> server ( <a
|
|
href="http://libvir.org/sources/">HTTP</a>, <a
|
|
href="ftp://libvir.org/libvir/">FTP</a>). You will find there the released
|
|
versions as well as <a
|
|
href="http://libvir.org/sources/libvir-cvs-snapshot.tar.gz">snapshot
|
|
tarballs</a> updated from CVS head every hour</p>
|
|
|
|
<p>Anonymous <a href="http://ximbiot.com/cvs/cvshome/docs/">CVS</a> is also
|
|
available, first register onto the server:</p>
|
|
|
|
<p><code>cvs -d :pserver:anoncvs@libvir.org:2401/data/cvs login</code></p>
|
|
|
|
<p>it will request a password, enter <strong>anoncvs</strong>. Then you can
|
|
checkout the development tree with:</p>
|
|
|
|
<p><code>cvs -d :pserver:anoncvs@libvir.org:2401/data/cvs co libvir</code></p>
|
|
|
|
<p>Use ./autogen.sh to configure the local checkout, then <code>make</code>
|
|
and <code>make install</code>, as usual. All normal cvs commands are now
|
|
available except commiting to the base.</p>
|
|
|
|
<h2><a name="FAQ">FAQ</a></h2>
|
|
|
|
<p>Table of Contents:</p>
|
|
<ul>
|
|
<li><a href="FAQ.html#License">License(s)</a></li>
|
|
<li><a href="FAQ.html#Installati">Installation</a></li>
|
|
<li><a href="FAQ.html#Compilatio">Compilation</a></li>
|
|
<li><a href="FAQ.html#Developer">Developer corner</a></li>
|
|
</ul>
|
|
|
|
<h3><a name="License">License</a>(s)</h3>
|
|
<ol>
|
|
<li><em>Licensing Terms for libvir</em>
|
|
<p>libvir is released under the <a
|
|
href="http://www.opensource.org/licenses/lgpl-license.html">GNU Lesser
|
|
General Public License</a>, see the file COPYING.LIB in the distribution
|
|
for the precise wording. The only library that libvir depends upon is the
|
|
Xen store access library which is also licenced under the LGPL.</p>
|
|
</li>
|
|
<li><em>Can I embed libvir in a proprietary application ?</em>
|
|
<p>Yes. The LGPL allows you to embed libvir into a proprietary
|
|
application. It would be graceful to send-back bug fixes and improvements
|
|
as patches for possible incorporation in the main development tree. It
|
|
will decrease your maintainance costs anyway if you do so.</p>
|
|
</li>
|
|
</ol>
|
|
|
|
<h3><a name="Installati">Installation</a></h3>
|
|
<ol>
|
|
<li><em>Where can I get libvir</em> ?
|
|
<p>The original distribution comes from <a
|
|
href="ftp://libvir.org/libvir/">ftp://libvir.org/libvir/</a>.</p>
|
|
</li>
|
|
<li><em>I can't install the libvir/libvir-devel RPM packages due to failed
|
|
dependencies</em>
|
|
<p>The most generic solution is to re-fetch the latest src.rpm , and
|
|
rebuild it locally with</p>
|
|
<p><code>rpm --rebuild libvir-xxx.src.rpm</code>.</p>
|
|
<p>If everything goes well it will generate two binary rpm packages (one
|
|
providing the shared libs and virsh, and the other one, the -devel
|
|
package, providing includes, static libraries and scripts needed to build
|
|
applications with libvir that you can install locally.</p>
|
|
<p>One can also rebuild the RPMs from a tarball:</p>
|
|
<p><code>rpmbuild -ta libdir-xxx.tar.gz</code></p>
|
|
<p>Or from a configured tree with:</p>
|
|
<p><code>make rpm</code></p>
|
|
</li>
|
|
<li><em>Failure to use the API for non-root users</em>
|
|
<p>Large parts of the API are only accessible as root, however the read
|
|
only access to the xenstore data doesnot have to be forbidden to user, at
|
|
least for monitoring purposes. If "virsh info" fails to run as an user,
|
|
change the mode of the xenstore read-only socket with:</p>
|
|
<p><code>chmod 666 /var/run/xenstored/socket_ro</code></p>
|
|
</li>
|
|
</ol>
|
|
|
|
<h3><a name="Compilatio">Compilation</a></h3>
|
|
<ol>
|
|
<li><em>What is the process to compile libvir ?</em>
|
|
<p>As most UNIX libraries libvir follows the "standard":</p>
|
|
<p><code>gunzip -c libvir-xxx.tar.gz | tar xvf -</code></p>
|
|
<p><code>cd libvir-xxxx</code></p>
|
|
<p><code>./configure --help</code></p>
|
|
<p>to see the options, then the compilation/installation proper</p>
|
|
<p><code>./configure [possible options]</code></p>
|
|
<p><code>make</code></p>
|
|
<p><code>make install</code></p>
|
|
<p>At that point you may have to rerun ldconfig or a similar utility to
|
|
update your list of installed shared libs.</p>
|
|
</li>
|
|
<li><em>What other libraries are needed to compile/install libvir ?</em>
|
|
<p>Libvir requires libxenstore, which is usually provided by the xen
|
|
packages as well as the public headers to compile against libxenstore.</p>
|
|
</li>
|
|
<li><em>I use the CVS version and there is no configure script</em>
|
|
<p>The configure script (and other Makefiles) are generated. Use the
|
|
autogen.sh script to regenerate the configure script and Makefiles,
|
|
like:</p>
|
|
<p><code>./autogen.sh --prefix=/usr --disable-shared</code></p>
|
|
</li>
|
|
</ol>
|
|
|
|
<h3><a name="Developer">Developer</a> corner</h3>
|
|
<ol>
|
|
<li><em>Troubles compiling or linking programs using libvir</em>
|
|
<p>To simplify the process of reusing the library, libvir comes with
|
|
pkgconfig support, which can be used directly from autoconf support or
|
|
via the pkg-config command line tool, like:</p>
|
|
<p><code>pkg-config libvir --libs</code></p>
|
|
</li>
|
|
</ol>
|
|
|
|
<h2><a name="Reporting">Reporting bugs and getting help</a></h2>
|
|
|
|
<p>There is a mailing-list <a
|
|
href="mailto:libvir-list@redhat.com">libvir-list@redhat.com</a> for libvir,
|
|
with an <a href="https://www.redhat.com/archives/libvir-list/">on-line
|
|
archive</a>. Please subscribe to this list before posting by visiting the <a
|
|
href="https://www.redhat.com/mailman/listinfo/libvir-list">associated Web</a>
|
|
page and follow the instructions. Patches with explanations and provided as
|
|
attachments are really appreciated and will be discussed on the mailing list.
|
|
If possible generate the patches by using cvs diff -u in a CVS checkout.</p>
|
|
|
|
<p>We expect to use <a href="https://bugzilla.redhat.com/">Red Hat
|
|
Bugzilla</a> to track bugs for libvir, though there isn't yet a libvir
|
|
software module.</p>
|
|
</body>
|
|
</html>
|