NBD server toolkit with stable ABI and permissive license. PLEASE DO NOT USE GITHUB FOR ISSUES OR PULL REQUESTS. See the website for how to file a bug or contact us. http://libguestfs.org
C Makefile Shell M4 OCaml Perl Other
Failed to load latest commit information.
docs Update copyright date on a few files. Jul 9, 2016
include Update copyright date on a few files. Jul 9, 2016
m4 ocaml: New plugin lets you write plugins as natively compiled OCaml p… Dec 6, 2014
plugins ruby: New plugin that lets you write plugins as Ruby scripts. Jun 7, 2016
src Implement --dump-plugin option. Jul 9, 2016
tests tests: Fix memory leak in OCaml test harness (found by valgrind). Jul 10, 2016
.gitignore ruby: New plugin that lets you write plugins as Ruby scripts. Jun 7, 2016
LICENSE Update copyright date on a few files. Jul 9, 2016
Makefile.am
README Add support for testing under valgrind. Jul 10, 2016
TODO tests: Multiple small additions and cleanups to the test scripts. Jul 9, 2016
configure.ac Add support for testing under valgrind. Jul 10, 2016
valgrind-suppressions Add support for testing under valgrind. Jul 10, 2016

README

NBD is a protocol for accessing Block Devices (hard disks and
disk-like things) over a Network.

'nbdkit' is a toolkit for creating NBD servers.

The key features are:

* Multithreaded NBD server written in C with good performance.

* Liberal license (BSD) allows nbdkit to be linked to proprietary
  libraries or included in proprietary code.

* Well-documented, simple plugin API with a stable ABI guarantee.
  Let's you export "unconventional" block devices easily.

* You can write plugins in C, Perl, Python, OCaml or Ruby.

For documentation, see the docs/ directory.

For plugins and examples, see the plugins/ directory.

License
-------

This software is copyright (C) Red Hat Inc. and licensed under a BSD
license.  See LICENSE for details.

Building from source
--------------------

By default nbdkit needs nothing except Linux and reasonably recent gcc.

To build the man pages, you will need to install:

 - pod2man (included with perl)

There are some *optional* libraries you may want to install for the
plugins.

For the gzip plugin:

 - zlib

For the xz plugin:

 - liblzma

For the curl (HTTP/FTP) plugin:

 - libcurl

For the libvirt plugin:

 - libvirt

For the libguestfs plugin, and to run the test suite:

 - libguestfs

 - guestfish (from libguestfs)

For the VDDK plugin:

 - VDDK (see plugins/vddk/README.VDDK)

For the Perl plugin:

 - perl development libraries

 - perl module ExtUtils::Embed

For the Python plugin:

 - python development libraries

For the OCaml plugin:

 - OCaml >= 4.02.2 which has support for shared libraries, see:
   http://caml.inria.fr/mantis/view.php?id=6693

To test for memory leaks ('make check-valgrind'):

 - valgrind

For non-essential enhancements to the test suite:

 - socat

 - ss (from iproute package)

After installing any dependencies:

  To build from tarball:         To build from git:
  ----------------------         ------------------
                                 autoreconf -i
  ./configure                    ./configure
  make                           make
  make check                     make check
  make check-valgrind            make check-valgrind

Optionally run this as root to install everything:

  make install

Tests
-----

You will need to install libguestfs to run the test suite.

The test suite ('make check') is fairly comprehensive.  It runs the
newly built nbdkit + plugin as a captive process, and tests it using
libguestfs.

If there is a failure, look at the corresponding tests/*.log file for
debug information.

Packager information
--------------------

Tarballs are available from:
http://libguestfs.org/download/nbdkit

Developer information
---------------------

For development ideas, see the TODO file.

The upstream git repository is:
https://github.com/libguestfs/nbdkit

Please send patches to the libguestfs mailing list:
https://www.redhat.com/mailman/listinfo/libguestfs

For further information, see:
http://libguestfs.org/