Last night I was tinkering with `systemd-nspawn` -- namespace based
container for testing, I thought I'll post what I tried with libguestfs
here:
Prerequisite
------------
Because of an audit subsystem incompatibility bug - rhbz#966807[1], turn
off auditing by booting the host w/ 'audit=0' on Kernel command line.
(NOTE: There's work in progress[2] in upstream Kernel to fix this.)
Create container
----------------
On the host, specify an installroot (/srv) and install a minimal Fedora
20 distribution:
$ yum -y --releasever=20 --nogpg \
--installroot=/srv/testcontainer \
--disablerepo='*' --enablerepo=fedora \
install systemd passwd yum \
fedora-release vim-minimal
Boot into the container, set a password:
$ systemd-nspawn -D /srv/testcontainer
[. . .]
-bash-4.2# passwd
Start the container w/ systemd:
$ systemd-nspawn -bD /srv/testcontainer
[. . .]
-bash-4.2#
Building Libguestfs
-------------------
Inside the minimal Fedora 20 container, install libguestfs dependencies,
clone the libguestfs git repository:
-bash-4.2# yum-builddep libguestfs -y
-bash-4.2# git clone
git://github.com/libguestfs/libguestfs.git
Build and test libguestfs in the container:
-bash-4.2# cd libguestfs
-bash-4.2# ./autogen.sh && time make 2>&1 \
| tee /tmp/libguestfs-compile.log
-bash-4.2# time make -k check \
LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1 2>&1 \
| tee /tmp/libguestfs-test.log
Notes
-----
- If you need to build a container without networking (once all the
relevant dependencies are cloned/and network related operations
are done), the container can be invoked with no network
devices (except loopback):
$ systemd-nspawn -bD /srv/testcontainer --private-network
[. . .]
-bash-4.2#
- Single `make` job timing to compile everything:
real 31m9.792s
user 17m18.359s
sys 13m17.868s
- `make -k check` is still running as I write this, albeit
a bit slow.
[1]
https://bugzilla.redhat.com/show_bug.cgi?id=966807
[2]
https://www.redhat.com/archives/linux-audit/2013-May/msg00065.html
--
/kashyap