]> git.proxmox.com Git - mirror_lxc.git/log
mirror_lxc.git
10 years agoshut up freezer_state
Serge Hallyn [Thu, 16 Jan 2014 14:41:44 +0000 (08:41 -0600)]
shut up freezer_state

Not being able to get freezer state is perfectly valid - if the
container does not exist.  The old version of freezer_state
only reported an error on actually reading the cgroup file,
but not on not finding a cgroup file.  Leave it to the caller
to report the error if it is important, since we don't actually
know any useful info here anyway.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agofix compilation error in cgmanager.c
S.Çağlar Onur [Thu, 16 Jan 2014 05:29:05 +0000 (00:29 -0500)]
fix compilation error in cgmanager.c

Currently it fails like following

gcc -DHAVE_CONFIG_H -I. -I../../src   -D_FORTIFY_SOURCE=2 -fPIC -DPIC -I../../src -DLXCROOTFSMOUNT=\"/usr/lib/x86_64-linux-gnu/lxc/rootfs\" -DLXCPATH=\"/var/lib/lxc\" -DLXC_GLOBAL_CONF=\"/etc/lxc/lxc.conf\" -DLXCINITDIR=\"/usr/libexec\" -DLXCTEMPLATEDIR=\"/usr/share/lxc/templates\" -DLOGPATH=\"/var/log/lxc\" -DLXC_DEFAULT_CONFIG=\"/etc/lxc/default.conf\" -DLXC_USERNIC_DB=\"/run/lxc/nics\" -DLXC_USERNIC_CONF=\"/etc/lxc/lxc-usernet\" -DDEFAULT_CGROUP_PATTERN=\"/lxc/%n\" -DHAVE_APPARMOR -DHAVE_CGMANAGER -DHAVE_SELINUX  -DHAVE_SECCOMP  -pthread  -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include     -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall -Werror -MT liblxc_so-cgmanager.o -MD -MP -MF .deps/liblxc_so-cgmanager.Tpo -c -o liblxc_so-cgmanager.o `test -f 'cgmanager.c' || echo './'`cgmanager.c
In file included from cgmanager.c:48:0:
cgmanager.c: In function ‘cgmanager_remove_cgroup’:
log.h:247:9: error: format ‘%s’ expects a matching ‘char *’ argument [-Werror=format=]
  struct lxc_log_locinfo locinfo = LXC_LOG_LOCINFO_INIT;  \
         ^
cgmanager.c:142:3: note: in expansion of macro ‘INFO’
   INFO("cgroup removal attempt: %s:%s did not exist");
   ^
log.h:247:9: error: format ‘%s’ expects a matching ‘char *’ argument [-Werror=format=]
  struct lxc_log_locinfo locinfo = LXC_LOG_LOCINFO_INIT;  \
         ^
cgmanager.c:142:3: note: in expansion of macro ‘INFO’
   INFO("cgroup removal attempt: %s:%s did not exist");
   ^
cc1: all warnings being treated as errors
make[3]: *** [liblxc_so-cgmanager.o] Error 1

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agostop cmd callback: unfreeze by path only
Serge Hallyn [Wed, 15 Jan 2014 19:40:53 +0000 (13:40 -0600)]
stop cmd callback: unfreeze by path only

in particular, regular unfreeze uses the cmd api to request the cgroup
of the container.  If we are already in the lxc-start monitor, we can't
use the cmd api.

(I knew when I started this would be a problem but then as it didn't
reliably crash, I forgot to handle it)

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoimplement cgmanager_remove_cgroup
Serge Hallyn [Wed, 15 Jan 2014 18:09:18 +0000 (12:09 -0600)]
implement cgmanager_remove_cgroup

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoInitial support for cgmanager
Serge Hallyn [Tue, 14 Jan 2014 22:41:36 +0000 (16:41 -0600)]
Initial support for cgmanager

This patch splits out most of the cgroupfs-specific code, so that
cgroup-manager versions can be plugged in.  The case I did
not handle is cgroup_enter at lxc_attach.  I'm hoping that case can
be greatly simplified, but will worry about it after fleshing out the
cgroup manager handlers.

This also simplify the freezer functions.

This seems to not regress my common tests when running without
cgmanager, but I'd like to do a bit more testing before pushing.
However I was hoping to get some more eyes on this so am sending it
out now.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-ubuntu-cloud: Fix cache and lock location
Stéphane Graber [Thu, 16 Jan 2014 04:06:45 +0000 (23:06 -0500)]
lxc-ubuntu-cloud: Fix cache and lock location

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoubuntu: Don't fail on invalid locale
Stéphane Graber [Thu, 16 Jan 2014 03:29:12 +0000 (22:29 -0500)]
ubuntu: Don't fail on invalid locale

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agolxc-create: Don't print the help message twice
Stéphane Graber [Thu, 16 Jan 2014 03:53:20 +0000 (22:53 -0500)]
lxc-create: Don't print the help message twice

The forking logic was wrong, causing both the child and the parent to
call the template with -h.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoAdd missing entry to dist target
Stéphane Graber [Thu, 16 Jan 2014 00:21:26 +0000 (19:21 -0500)]
Add missing entry to dist target

Apparently this file has gone over 5 years without getting into a dist
tarball!

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agochange version to 1.0.0.beta2 in configure.ac
Stéphane Graber [Thu, 16 Jan 2014 00:07:33 +0000 (19:07 -0500)]
change version to 1.0.0.beta2 in configure.ac

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoAdd local definition of sethostname to lxc_unshare
Stéphane Graber [Wed, 15 Jan 2014 23:29:57 +0000 (18:29 -0500)]
Add local definition of sethostname to lxc_unshare

sethostname doesn't exist on bionic, so copy/paste the definition of it
we have in conf.c

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-unshare: uid_t is unsigned.
Serge Hallyn [Wed, 15 Jan 2014 22:45:31 +0000 (16:45 -0600)]
lxc-unshare: uid_t is unsigned.

so we can't use uid==-1 as "don't do setuid"

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agoTeach lxc_unshare about interfaces, mounts, hostname, daemonize
Seth Robertson [Wed, 4 Dec 2013 05:28:56 +0000 (00:28 -0500)]
Teach lxc_unshare about interfaces, mounts, hostname, daemonize

lxc_unshare now takes one or more '-i interfacename' arguments which
will move the named interfaces into the created container.

lxc_unshare now takes -M argument which will cause the standard mounts
(/proc /dev/shm /dev/mqueue) to be auto-mounted inside container.

lxc_unshare now takes '-H hostname' argument to automatically set
the hostname in the container.

lxc_unshare now takes -D argument to automatically daemonize and detach
from the created container, instead of waiting for the container to exit

Signed-off-by: Seth Robertson <srobertson@appcomsci.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agolxc_unshare -u argument useful even with USER namespace shared
Seth Robertson [Wed, 4 Dec 2013 05:24:08 +0000 (00:24 -0500)]
lxc_unshare -u argument useful even with USER namespace shared

Signed-off-by: Seth Robertson <srobertson@appcomsci.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agodebian: Switch to config includes
Stéphane Graber [Wed, 15 Jan 2014 19:57:28 +0000 (14:57 -0500)]
debian: Switch to config includes

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoDisable logpath for unprivileged containers
Stéphane Graber [Wed, 15 Jan 2014 18:32:23 +0000 (13:32 -0500)]
Disable logpath for unprivileged containers

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agooracle: Fix running template unprivileged
Stéphane Graber [Wed, 15 Jan 2014 18:25:48 +0000 (13:25 -0500)]
oracle: Fix running template unprivileged

Without this /dev/console won't exist and upstart will fail to start any
job marking as "console output" including the rather important rcS.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agooracle template: default to 6.5 when no release given or detected
Dwight Engen [Wed, 15 Jan 2014 17:21:57 +0000 (12:21 -0500)]
oracle template: default to 6.5 when no release given or detected

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agooracle template: don't sed /etc/init/tty.conf on older releases
Dwight Engen [Wed, 15 Jan 2014 17:21:52 +0000 (12:21 -0500)]
oracle template: don't sed /etc/init/tty.conf on older releases

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agooracle template: convert to common.conf style
Dwight Engen [Wed, 15 Jan 2014 17:21:44 +0000 (12:21 -0500)]
oracle template: convert to common.conf style

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc.conf: note the 'lxc.network.type = none' option
Serge Hallyn [Wed, 15 Jan 2014 17:13:39 +0000 (11:13 -0600)]
lxc.conf: note the 'lxc.network.type = none' option

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoplamo: Update template to use wget when download packages
KATOH Yasufumi [Wed, 15 Jan 2014 16:55:52 +0000 (01:55 +0900)]
plamo: Update template to use wget when download packages

Signed-off-by: TAMUKI Shoichi <tamuki@linet.gr.jp>
Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoFix small mistake with squid-deb-proxy hook
Chris Glass [Wed, 15 Jan 2014 15:37:46 +0000 (16:37 +0100)]
Fix small mistake with squid-deb-proxy hook

I unfortunately realized that I did not push the latest version of the
file. This fixes an issue in the case where we want to create the proxy
file in the container (not nested).

Signed-off-by: Chris Glass <tribaal@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agocgroup.c: add static keywords as they declared
Qiang Huang [Wed, 15 Jan 2014 15:32:29 +0000 (23:32 +0800)]
cgroup.c: add static keywords as they declared

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agocgroup.h: unify the nameing and comments
Qiang Huang [Wed, 15 Jan 2014 15:32:30 +0000 (23:32 +0800)]
cgroup.h: unify the nameing and comments

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agocgroup.c: redefine the valid cgroup name
Qiang Huang [Wed, 15 Jan 2014 04:09:26 +0000 (12:09 +0800)]
cgroup.c: redefine the valid cgroup name

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoTrailing whitespace
Stéphane Graber [Wed, 15 Jan 2014 15:33:04 +0000 (10:33 -0500)]
Trailing whitespace

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoinstall only lxc-user-nic setuid
Dwight Engen [Wed, 15 Jan 2014 13:36:28 +0000 (08:36 -0500)]
install only lxc-user-nic setuid

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agodoc: Update Japanese lxc.conf(5)
KATOH Yasufumi [Wed, 15 Jan 2014 09:50:43 +0000 (18:50 +0900)]
doc: Update Japanese lxc.conf(5)

Update for commit df2d4205073d3f57543951ca7ffabf891b230634

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoAdded a commented squid-deb-proxy hook to ubuntu
Chris Glass [Wed, 15 Jan 2014 08:31:53 +0000 (09:31 +0100)]
Added a commented squid-deb-proxy hook to ubuntu

Added a commented squid-deb-proxy hook to the common ubuntu config file
as suggested when merging the squid-deb-proxy-client hook.

Signed-off-by: Chris Glass <tribaal@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-download: Fix undefined DOWNLOAD_FORCE_CACHE
Stéphane Graber [Wed, 15 Jan 2014 02:59:33 +0000 (21:59 -0500)]
lxc-download: Fix undefined DOWNLOAD_FORCE_CACHE

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agolxc-download: Fix wrong option parsing
Stéphane Graber [Wed, 15 Jan 2014 02:49:26 +0000 (21:49 -0500)]
lxc-download: Fix wrong option parsing

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agolxc-download: POSIX doesn't specify -f for chown
Stéphane Graber [Wed, 15 Jan 2014 02:31:49 +0000 (21:31 -0500)]
lxc-download: POSIX doesn't specify -f for chown

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoubuntu: Fix path to openssh-server's postinst
Stéphane Graber [Tue, 14 Jan 2014 23:12:29 +0000 (18:12 -0500)]
ubuntu: Fix path to openssh-server's postinst

The path isn't relative to @LOCALSTATEDIR@

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agodebian: Support ssh host keys regeneration
Stéphane Graber [Tue, 14 Jan 2014 23:11:29 +0000 (18:11 -0500)]
debian: Support ssh host keys regeneration

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoAlways try to create lxcpath
Stéphane Graber [Tue, 14 Jan 2014 22:54:16 +0000 (17:54 -0500)]
Always try to create lxcpath

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agolxccontainer.c: check lxc_conf before referance haltsignal
Qiang Huang [Wed, 15 Jan 2014 02:45:18 +0000 (10:45 +0800)]
lxccontainer.c: check lxc_conf before referance haltsignal

If we start container with rcfile(see comments in lxc_start.c), it
is possible that we have no config file in /usr/local/var/lib/lxc.
So when we try lxc_stop, lxc_container_new will not load any config
so we'll get c->lxc_conf = NULL.

In that case, we'll get Segmentation fault in lxcapi_shutdown, a
simple check would fix this.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoFix return value of userns_exec_1
Stéphane Graber [Tue, 14 Jan 2014 23:25:44 +0000 (18:25 -0500)]
Fix return value of userns_exec_1

Instead of always returning -1 and call SYSERROR when the child returns
non-zero. Have userns_exec_1 always return the return value from the
function it's calling and let the caller do the error handling (as is
already done by its only caller).

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agotests: Fix startone's call to want_daemonize
Stéphane Graber [Tue, 14 Jan 2014 22:35:14 +0000 (17:35 -0500)]
tests: Fix startone's call to want_daemonize

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-archlinux: Cleanup fstab
Stéphane Graber [Tue, 14 Jan 2014 22:24:14 +0000 (17:24 -0500)]
lxc-archlinux: Cleanup fstab

It's been brought to my attention that the read-only mount of /proc/sys
is causing problems to archlinux users, so instead just have LXC mount
proc and sysfs normally (read-write).

Reported-by: John Lane <john@lane.uk.net>
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-archlinux: optional --root_passwd argument
John Lane [Thu, 12 Dec 2013 12:17:39 +0000 (12:17 +0000)]
lxc-archlinux: optional --root_passwd argument

Signed-off-by: John Lane <john@lane.uk.net>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-archlinux: support enabling systemd units
John Lane [Thu, 12 Dec 2013 12:00:38 +0000 (12:00 +0000)]
lxc-archlinux: support enabling systemd units

Signed-off-by: John Lane <john@lane.uk.net>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-archlinux: support different architectures
John Lane [Thu, 12 Dec 2013 11:26:19 +0000 (11:26 +0000)]
lxc-archlinux: support different architectures

Signed-off-by: John Lane <john@lane.uk.net>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-archlinux: don't drop mknod capability
John Lane [Thu, 12 Dec 2013 10:35:55 +0000 (10:35 +0000)]
lxc-archlinux: don't drop mknod capability

Signed-off-by: John Lane <john@lane.uk.net>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoModify lxc-fedora and lxc-centos for multiple issues...
Michael H. Warfield [Mon, 13 Jan 2014 01:53:49 +0000 (20:53 -0500)]
Modify lxc-fedora and lxc-centos for multiple issues...

This is a reissue of two previous patches along with some additional
changes for hardening the root password process based on discussions
on-list.

--
This patch modifies the lxc-fedora and lxc-centos templates for 3 things.

1) Extensively modifies root password generation, storage, and management
    based on discussions on the devel list.

  Root passwords are hardened and have advanced configurability.
    A static password may be provided.
    A password based on a template may be generated, including ${RANDOM}.
    A password may be generated through mktmp using a template with X's.
    Root passwords default to expired, initially.
    Passwords may optionally be echoed to stdout at container creation. (no)
    Passwords may optionally be stored in ${rootfs_path}/tmp_root_pass. (yes)
    Users may be optionally forced to change the password at creation time. (no)
    Default is to generate a pattern based password and store, no force change.
    All of this may be overridden by environment variables through
      conditional assignment.

2) Random static hardware addresses are generated for all configured
    interfaces.

3) Add code to create sysv init style scripts to intercept shutdown and
    reboot to prevent init restart and hang for CentOS and legacy Fedora
    systems on shutdown, reboot, init 0, and init 6.  This solves a variety
    of hang conditions but only affects newly created containers.  Does
    not have any impact on systemd based containers.

Signed-off-by: Michael H. Warfield <mhw@WittsEnd.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoubuntu: Set default hwaddr to match template
Stéphane Graber [Tue, 14 Jan 2014 21:54:07 +0000 (16:54 -0500)]
ubuntu: Set default hwaddr to match template

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agogentoo: Initial template
lxc@zitta.fr [Mon, 13 Jan 2014 23:06:26 +0000 (00:06 +0100)]
gentoo: Initial template

Signed-off-by: gza <lxc@zitta.fr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoapi change: default container->daemonize to true
Serge Hallyn [Mon, 13 Jan 2014 17:08:48 +0000 (11:08 -0600)]
api change: default container->daemonize to true

Pretty much the only case where we do NOT want to daemonize
a container start is lxc-start.  So make c->daemonize true
by default, and have lxc-start set it to false.

If there are existing API users who rely on daemonize by
default, then they will be broken by this.  It seems we should
do this before beta1 if we're going to do it.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoMake ubuntu templates squid-deb-proxy-client aware
Chris Glass [Thu, 9 Jan 2014 16:40:12 +0000 (16:40 +0000)]
Make ubuntu templates squid-deb-proxy-client aware

This makes the ubuntu and ubuntu-cloud templates automatically aware of apt
proxy settings when the LXC host has "squid-deb-proxy-client" installed. This
makes installations *much* faster when a suitable squid-deb-proxy is
found on the network (or installed on the host).

Signed-off-by: Chris Glass <tribaal@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agohandle simple bashisms:
Elan Ruusamäe [Mon, 13 Jan 2014 08:26:09 +0000 (10:26 +0200)]
handle simple bashisms:

- [[ ]] -> [ ]
- == -> =
- source -> .
- redirect of fd 200 is error in mksh, use fd 9
- &> /dev/null -> > /dev/null 2>&1
- useless function keyword
- echo -e -> printf

still left bash shebang which did not validate with checkbashism, mostly
due 'type' being reported as bashism

Signed-Off-By: Elan Ruusamäe <glen@delfi.ee>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-start-ephemeral: Fix syntax error in aufs
Åsmund Grammeltvedt [Mon, 13 Jan 2014 22:34:57 +0000 (23:34 +0100)]
lxc-start-ephemeral: Fix syntax error in aufs

Signed-off-by: Åsmund Grammeltvedt <asmundg@snap.tv>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agodownload: Improve cache handling
Stéphane Graber [Tue, 14 Jan 2014 20:02:42 +0000 (15:02 -0500)]
download: Improve cache handling

This adds a new --force-cache parameter which will force use of the
cache even for expired images.

An expired image is now only flushed from the cache once a new one is
successfuly downloaded (to avoid destroying the local cache when the
host doesn't have internet connectivity).

The ID of the build in cache is also tracked so that we don't
re-download something we already have (should only happen if we don't
have a new build published by the time the previous one expires).

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agodownload: Support listing available images
Stéphane Graber [Tue, 14 Jan 2014 19:48:24 +0000 (14:48 -0500)]
download: Support listing available images

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agodownload: Don't use an hardcoded exclude list
Stéphane Graber [Tue, 14 Jan 2014 19:12:33 +0000 (14:12 -0500)]
download: Don't use an hardcoded exclude list

Instead of hardcoding --exclude=./dev/*, use a new metadata file
"excludes" which lists all the paths or patterns to exclude during
extraction (one per line).

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agodownload: Fix download_sig logic
Stéphane Graber [Tue, 14 Jan 2014 18:56:04 +0000 (13:56 -0500)]
download: Fix download_sig logic

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agodoc: Update lxc.conf(5)
KATOH Yasufumi [Tue, 14 Jan 2014 06:51:47 +0000 (15:51 +0900)]
doc: Update lxc.conf(5)

* Update Japanese lxc.conf(5) for commit 508c263ee6ed2fac73f6979af287caba38963b4b
* Remove duplicate line in English lxc.conf(5)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agodownload: don't download signatures when --no-validate given
Dwight Engen [Tue, 14 Jan 2014 01:04:56 +0000 (20:04 -0500)]
download: don't download signatures when --no-validate given

- show full path to failed download location

- change test to -f in case meta.tar.xz:templates has a blank line it
  won't attempt to sed a directory

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoAdd minimal userns config for plamo
Stéphane Graber [Mon, 13 Jan 2014 22:06:01 +0000 (17:06 -0500)]
Add minimal userns config for plamo

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agocgroup: move all some functions into cgroup.h
Serge Hallyn [Mon, 13 Jan 2014 21:26:49 +0000 (15:26 -0600)]
cgroup: move all some functions into cgroup.h

Some functions which wanted to know about cgroup paths were located
in other files.  Move them into cgroup.c, so that all knowledge of
the cgroup backend can be colocated.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoinclude: remove duplicates
Luka Perkov [Mon, 13 Jan 2014 17:46:55 +0000 (17:46 +0000)]
include: remove duplicates

Signed-off-by: Luka Perkov <luka.perkov@sartura.hr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoinclude: cleanup unnecessary getline defines
Luka Perkov [Mon, 13 Jan 2014 17:46:50 +0000 (17:46 +0000)]
include: cleanup unnecessary getline defines

The removed chunk is already defined in utils.h which
is included in modified files.

Signed-off-by: Luka Perkov <luka.perkov@sartura.hr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agofix bug setting autodef in config
Dwight Engen [Mon, 13 Jan 2014 17:46:55 +0000 (12:46 -0500)]
fix bug setting autodef in config

Introduced in commit df2d4205.

Reported-by: S.Çağlar Onur <caglar@10ur.org>
Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agointroduce a simple test for testing add_device_node and remove_device_node
S.Çağlar Onur [Mon, 13 Jan 2014 05:34:13 +0000 (00:34 -0500)]
introduce a simple test for testing add_device_node and remove_device_node

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agoThis change introduce mac address templating.
Serge Hallyn [Mon, 13 Jan 2014 16:02:29 +0000 (10:02 -0600)]
This change introduce mac address templating.

By setting lxc.network.hwaddr to something like fe:xx:xx:xx:xx:xx each
"x" will be replaced by a random value.  If less significant bit of
first byte is "templated", it will be set to 0.

This change introduce also a common randinit() function that could be
used to initialize random generator.

Signed-off-by: gza <lxc@zitta.fr>
Acked-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agoplamo: Update template to use lxc.include and add plamo.common.conf
KATOH Yasufumi [Mon, 13 Jan 2014 11:57:53 +0000 (20:57 +0900)]
plamo: Update template to use lxc.include and add plamo.common.conf

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agointroduce lxc-unpriv test
Serge Hallyn [Mon, 13 Jan 2014 02:45:00 +0000 (20:45 -0600)]
introduce lxc-unpriv test

It simply creates a test user and tries to create and start
a container as that user.  Tries to lxc-attach to that
container to test network connectivity.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agousernsexec: don't fail if we can't open pty
Serge Hallyn [Mon, 13 Jan 2014 02:44:32 +0000 (20:44 -0600)]
usernsexec: don't fail if we can't open pty

It's nice if we can do it, but not required.  Exiting on this
failure causes lxc-create started by root as a less-privileged
userid to fail.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoensure all config items are duplicated on clone/write_config
Dwight Engen [Thu, 9 Jan 2014 20:36:13 +0000 (15:36 -0500)]
ensure all config items are duplicated on clone/write_config

Since previously I had found a config item that wasn't being propagated
by lxc-clone, I went through all the config items and made sure that:
 a) Each item is documented in lxc.conf
 b) Each item is written out by write_config

The only one that isn't is lxc.include, which by its nature only pulls
in other config item types.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agocgroup: recursively delete cgroups when asked
Serge Hallyn [Sat, 11 Jan 2014 06:14:26 +0000 (00:14 -0600)]
cgroup: recursively delete cgroups when asked

Currently when a container is shut down, lxc walks the set of all
cgroup paths it created, in reverse order, and tries to remove them.
This doesn't suffice if the container has also created new cgroups.

It'd be impolite to recursively remove all the cgroup paths we created,
since this can include '/lxc' and thereunder all other containers
started since.

This patch changes container shutdown to only delete the container's own
path, but do so recursively.  Note that if we fail during startup,
the container won't have created any cgroup paths so it the old
way works fine.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agodownload: Initial template
Stéphane Graber [Fri, 10 Jan 2014 22:28:07 +0000 (17:28 -0500)]
download: Initial template

This adds a new template called "download". It's a fairly simple
template with a minimal set of dependency which will grab any pre-built
image available on https://images.linuxcontainers.org
Note that the serverside is still work in progress (missing SSL support).

Access is done over https by default with a warning being emitted if
fallback to http was required (may be needed for testing, when behind
proxy and with private servers). All index files and tarballs are
gpg-signed with the default pubkeyid contained in the template itself.

The main benefit of this template is to be entirely
distribution-agnostic, any template that can be integrated with the
server build infrastructure will then work on any LXC machine when using
the download template. This template is also compatible with user
namespaces and will hopefully help widden the number of distros that may
work in unprivileged LXC.

This commit also bundles a small change to the template configs to have
the ubuntu template (used by the download template) to work with
unprivileged LXC.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoFix some typos
Stéphane Graber [Sun, 12 Jan 2014 20:48:48 +0000 (15:48 -0500)]
Fix some typos

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoOne more rename of the system options
Stéphane Graber [Fri, 10 Jan 2014 20:33:33 +0000 (15:33 -0500)]
One more rename of the system options

This should be the last change of name for those options. This change
basically move them all to lxc.bdev.<backend>.<option>.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agoFix bug in preserve_ns
Serge Hallyn [Sat, 11 Jan 2014 03:48:30 +0000 (21:48 -0600)]
Fix bug in preserve_ns

If /proc/self/ns does not exist, then preserve_ns was failing to
initialize the saved_ns[i] to -1.  This caused attach_ns() to try
and attach, and of course fail.

Initialize the saved ns values before returning an error.

The return values of preserve_ns and attach_ns were also being
ignored.  Honor them.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoDrop usage of LXC_DEFAULT_CONFIG in our code
Stéphane Graber [Thu, 9 Jan 2014 23:05:22 +0000 (18:05 -0500)]
Drop usage of LXC_DEFAULT_CONFIG in our code

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoRe-organize API for global lxc.conf config
Stéphane Graber [Thu, 9 Jan 2014 22:31:52 +0000 (17:31 -0500)]
Re-organize API for global lxc.conf config

Instead of having one function for each possible key in lxc.conf which
doesn't really scale and requires an API update for every new key,
switch to a generic lxc_get_global_config_item() function which takes a
key name as argument.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoAdd lxc.default_config to LXC's own config
Stéphane Graber [Thu, 9 Jan 2014 22:05:25 +0000 (17:05 -0500)]
Add lxc.default_config to LXC's own config

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoRename all lxc.conf options to lxc.<key>
Stéphane Graber [Thu, 9 Jan 2014 21:54:37 +0000 (16:54 -0500)]
Rename all lxc.conf options to lxc.<key>

This is a first step in bringing the lxc.conf configfile in line with
the container's format.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agodoc: Remove unneeded "SEE ALSO" part in lxc-ls(1)
KATOH Yasufumi [Thu, 9 Jan 2014 06:53:40 +0000 (15:53 +0900)]
doc: Remove unneeded "SEE ALSO" part in lxc-ls(1)

The old version of lxc-ls is the wrapper of ls(1). But now it is
python script, so "see also ls(1)" is not needed.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoSupport large bdevs on 32-bit; MB units by default.
Stephen Ayotte [Thu, 2 Jan 2014 19:30:26 +0000 (14:30 -0500)]
Support large bdevs on 32-bit; MB units by default.

Change all instances of "unsigned long" where referring to a bdev size
to uint64_t; this fixes some overflows on 32-bit machines, where
"unsigned long" is uint32_t. Support all unit-sizes supported by LVM
except 's' and 'e' [bkmgt]. Print a warning and use default bdev-size if
invalid unit-size specified.

Signed-off-by: Stephen Ayotte <stephen.ayotte@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-ls.sgml.in: fix the format issue
Qiang Huang [Wed, 8 Jan 2014 09:11:20 +0000 (17:11 +0800)]
lxc-ls.sgml.in: fix the format issue

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agotravis: Use NOTICE instead of PRIVMSG on IRC
Stéphane Graber [Tue, 7 Jan 2014 17:14:15 +0000 (12:14 -0500)]
travis: Use NOTICE instead of PRIVMSG on IRC

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoMove pkg-config init to way earlier
Stéphane Graber [Tue, 7 Jan 2014 16:24:36 +0000 (11:24 -0500)]
Move pkg-config init to way earlier

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-opensuse: add perl-base to prerequisities
Jiri Slaby [Fri, 20 Sep 2013 14:39:50 +0000 (16:39 +0200)]
lxc-opensuse: add perl-base to prerequisities

It is needed by insserv-compat.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoconfigure: find seccomp using pkg-config
Jiri Slaby [Wed, 24 Apr 2013 08:46:21 +0000 (10:46 +0200)]
configure: find seccomp using pkg-config

On suse we have the header in a subdir inside /usr/include, so
pkgconfig has to be used to find out proper CFLAGS.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoman: Fix comment syntax
Stéphane Graber [Tue, 7 Jan 2014 15:26:16 +0000 (10:26 -0500)]
man: Fix comment syntax

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxclock: fix stupid scope error
Serge Hallyn [Tue, 7 Jan 2014 15:20:25 +0000 (09:20 -0600)]
lxclock: fix stupid scope error

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agolxclock: fall back to /tmp if xdg_rundir is not writeable
Serge Hallyn [Tue, 7 Jan 2014 05:39:02 +0000 (23:39 -0600)]
lxclock: fall back to /tmp if xdg_rundir is not writeable

This happens for instance if you run a test under sudo which
then runs lxc commands under 'su - <someuser>'

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agodoc: Update Japanese lxc-stop(1), lxc.conf(5), lxc-start-ephemeral(1)
KATOH Yasufumi [Tue, 7 Jan 2014 12:54:15 +0000 (21:54 +0900)]
doc: Update Japanese lxc-stop(1), lxc.conf(5), lxc-start-ephemeral(1)

* nokill option of lxc-stop (commit 84fbfcb434f5a59680b7f017bbc1d0db0b81a39d)
* lxc.haltsignal in lxc.conf (commit f0f1d8c076ae93d8ecf735c2eeae471e27ca6abd)
* fix sgml (commit d438f5a0ef0f304917e227405d26aef6e7b30303)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoSetting lxc.console = none causes startup failures for the containers that runs in...
S.Çağlar Onur [Mon, 6 Jan 2014 21:01:10 +0000 (16:01 -0500)]
Setting lxc.console = none causes startup failures for the containers that runs in user namespace

Setting "lxc.console = none" causes following failure during startup

      lxc-start 1389039861.061 INFO     lxc_start_ui - using rcfile lxcpath/original/config
      lxc-start 1389039861.062 INFO     lxc_confile - read uid map: type u nsid 0 hostid 260000 range 10000
      lxc-start 1389039861.062 INFO     lxc_confile - read uid map: type g nsid 0 hostid 260000 range 10000
      lxc-start 1389039861.062 WARN     lxc_log - lxc_log_init called with log already initialized
      lxc-start 1389039861.065 INFO     lxc_lsm - LSM security driver AppArmor
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/0' (5/6)
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/7' (7/8)
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/8' (9/10)
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/9' (11/12)
      lxc-start 1389039861.066 INFO     lxc_conf - tty's configured
      lxc-start 1389039861.066 DEBUG    lxc_start - sigchild handler set
      lxc-start 1389039861.066 ERROR    lxc_conf - Error chowning
      lxc-start 1389039861.066 ERROR    lxc_conf - Failed to chown
      lxc-start 1389039861.066 ERROR    lxc_start - Failed to shift tty into container
      lxc-start 1389039861.066 ERROR    lxc_start - failed to initialize the container
      lxc-start 1389039861.067 INFO     lxc_monitor - using monitor sock name lxc/0863ffed81827105/lxcpath

fix it by checking the console.name before using it.

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agodisable generating documentation for travis
S.Çağlar Onur [Mon, 6 Jan 2014 20:05:24 +0000 (15:05 -0500)]
disable generating documentation for travis

doxygen and graphviz causes travis vm to download ~400 MB from internet
and causes travis builds to timeouts occasionally.

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoallow multiple types of init scripts to be configured
Dwight Engen [Mon, 6 Jan 2014 19:05:12 +0000 (14:05 -0500)]
allow multiple types of init scripts to be configured

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoconfigure.ac: add docbook-to-man to dbparsers
Qiang Huang [Mon, 6 Jan 2014 02:53:15 +0000 (10:53 +0800)]
configure.ac: add docbook-to-man to dbparsers

Debian and Ubuntu uses docbook2x-man, but some other distr like suse
uses docbook-to-man. I think all of them should work on LXC.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agoadd lxc.haltsignal for soft shutdown
Dwight Engen [Mon, 6 Jan 2014 17:30:02 +0000 (12:30 -0500)]
add lxc.haltsignal for soft shutdown

- use this in the busybox template since busybox's init expects
  to receive SIGUSR1 to halt

- fix lxc.stopsignal to be output by write_config so lxcapi_clone()
  and lxcapi_save_config() will output it

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoUse the cgroup name for cpuset for lxc-ps
Nick Huber [Tue, 31 Dec 2013 20:05:50 +0000 (12:05 -0800)]
Use the cgroup name for cpuset for lxc-ps

On my Ubuntu 13.10 system, lxc-ps was always giving empty output. The
output of /proc/$initpid/cgroup was

11:name=systemd:/user/1000.user/c3.session
10:hugetlb:/container
9:perf_event:/container
8:blkio:/container
7:freezer:/container
6:devices:/container
5:memory:/container
4:cpuacct:/container
3:cpu:/container
2:cpuset:/container

Using the cpuset line should be a safer option.

Signed-off-by: Nick Huber <nicholashuber@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agolxc-start-ephemeral: fix the man page
Qiang Huang [Mon, 6 Jan 2014 03:33:38 +0000 (11:33 +0800)]
lxc-start-ephemeral: fix the man page

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agorename lxc-stop shutdown argument to nokill
Dwight Engen [Fri, 3 Jan 2014 19:36:43 +0000 (14:36 -0500)]
rename lxc-stop shutdown argument to nokill

This makes the arguments between lxc-stop and lxc-autostart more
consistent, so that --shutdown doesn't have two different meanings.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agodoc: Update man pages to the latest information
KATOH Yasufumi [Mon, 6 Jan 2014 09:05:39 +0000 (18:05 +0900)]
doc: Update man pages to the latest information

* lxc-attach(1): Update to the status of kernel 3.8 or higher
* lxc-create(1), lxc-destroy(1): Now lxc-ls don't have "-l" option, so remove
* lxc(7): update description of lxc-ls and lxc-info to current version
* see-also: fix lxc(1) to lxc(7)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agodoc: Update Japanese lxc-autostart(1)
KATOH Yasufumi [Mon, 6 Jan 2014 05:45:55 +0000 (14:45 +0900)]
doc: Update Japanese lxc-autostart(1)

Update for commit a771fe18d28890cfc545995fb818aa7472744fde

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agocheck pthread_atfork and thread-local storage
S.Çağlar Onur [Sat, 4 Jan 2014 05:00:04 +0000 (00:00 -0500)]
check pthread_atfork and thread-local storage

Add pthread_atfork check to configure.ac and uses it when necessary,
Introduces tls.m4 macro for checking thread-local storage support, Puts
values array into thread-local storage
(lxc_global_config_value@src/lxc/utils.c), Removes
static_lock/static_unlock from LXC code.

Lastly, it introduces a warning for bionic users about multithreaded
usage of LXC.

(requires 64b1be2903078ef9e9ba3ffcbc30a4dc9bc5cc6c to be reverted first)

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoRevert "Revert "Use pthread_atfork() to unlock mutexes after fork()""
Stéphane Graber [Mon, 6 Jan 2014 14:45:18 +0000 (09:45 -0500)]
Revert "Revert "Use pthread_atfork() to unlock mutexes after fork()""

This reverts commit 64b1be2903078ef9e9ba3ffcbc30a4dc9bc5cc6c.

Reverting in preparation for another implementation which is
bionic-compatible.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>