[systemd-devel] [Lxc-users] Unable to run systemd in an LXC / cgroup container.

Serge Hallyn serge.hallyn at canonical.com
Thu Oct 25 09:19:54 PDT 2012


Quoting Michael H. Warfield (mhw at WittsEnd.com):
> Sorry for taking a few days to get back on this.  I was delivering a
> guest lecture up at Fordham University last Tuesday so I was out of
> pocket a couple of days or I would have responded sooner...
> 
> On Mon, 2012-10-22 at 16:59 -0400, Michael H. Warfield wrote:
> > On Mon, 2012-10-22 at 22:50 +0200, Lennart Poettering wrote:
> > > On Mon, 22.10.12 11:48, Michael H. Warfield (mhw at WittsEnd.com) wrote:
> > > 
> > > > > > To summarize the problem...  The LXC startup binary sets up various
> > > > > > things for /dev and /dev/pts for the container to run properly and this
> > > > > > works perfectly fine for SystemV start-up scripts and/or Upstart.
> > > > > > Unfortunately, systemd has mounts of devtmpfs on /dev and devpts
> > > > > > on /dev/pts which then break things horribly.  This is because the
> > > > > > kernel currently lacks namespaces for devices and won't for some time to
> > > > > > come (in design).  When devtmpfs gets mounted over top of /dev in the
> > > > > > container, it then hijacks the hosts console tty and several other
> > > > > > devices which had been set up through bind mounts by LXC and should have
> > > > > > been LEFT ALONE.
> > > > 
> > > > > Please initialize a minimal tmpfs on /dev. systemd will then work fine.
> > > > 
> > > > My containers have a reasonable /dev that work with Upstart just fine
> > > > but they are not on tmpfs.  Is mounting tmpfs on /dev and recreating
> > > > that minimal /dev required?
> 
> > > Well, it can be any kind of mount really. Just needs to be a mount. And
> > > the idea is to use tmpfs for this.
> 
> > > What /dev are you currently using? It's probably not a good idea to
> > > reuse the hosts' /dev, since it contains so many device nodes that
> > > should not be accessible/visible to the container.
> 
> > Got it.  And that explains the problems we're seeing but also what I'm
> > seeing in some libvirt-lxc related pages, which is a separate and
> > distinct project in spite of the similarities in the name...
> 
> > http://wiki.1tux.org/wiki/Lxc/Installation#Additional_notes
> 
> > Unfortunately, in our case, merely getting a mount in there is a
> > complication in that it also has to be populated but, at least, we
> > understand the problem set now.
> 
> Ok...  Serge and I were corresponding on the lxc-users list and he had a
> suggestion that worked but I consider to be a bit of a sub-optimal
> workaround.  Ironically, it was to mount devtmpfs on /dev.  We don't

Oh, sorry - I take back that suggestion :)

Note that we have mount hooks, so templates could install a mount hook to
mount a tmpfs onto /dev and populate it.

Or, if everyone is going to need it, we could just add a 'lxc.populatedevs = 1'
option which does that without needing a hook.

devtmpfs should not be used in containers :)

-serge


More information about the systemd-devel mailing list