[lxc-devel] [PATCH 2/2] Support files for systemd on Fedora.

Michael H. Warfield mhw at WittsEnd.com
Thu Nov 21 16:23:10 UTC 2013


On Wed, 2013-11-20 at 23:12 -0500, Michael H. Warfield wrote: 
> On Wed, 2013-11-20 at 21:39 -0600, Serge Hallyn wrote: 
> > Quoting Michael H. Warfield (mhw at WittsEnd.com):
> > > Added a file "lxc.service" for a systemd service file.
> > > 
> > > Added a file "lxc-devsetup" to setup /dev/ on startup to support autodev
> > > in containers.
> > > 
> > > Service file references lxc-devsetup as an ExecStartPre command.  The
> > > lxc-devsetup script is not dependent on systemd or Fedora and can
> > > be used at bootup on any system.
> > > 
> > > Modified lxc.spec.in to install the two new files on Fedora.  The systemd
> > > specific code in the lxc.spec file may need some review and conditionalize
> > > for systemd on non-systemd rpm-based systems.
> 
> > Will systemd care that the lxc-startup specified in ExecStart and
> > ExecStop doesn't exist?

> Not that I know of.  And if it does, it's easy enough to stub off.  But
> that would be good to test.

Let me qualify that a little bit.  I realized my first answer was a bit
short.

If the ExecStart command does not exist, systemd will complain that the
service failed if you try and start the service.  But, the service is
not "enabled" but default and, even if it was, has no fatal impact on
the over all systemd operation.  The logs will inform the user the
startup command doesn't exist.  No harm no foul and no negative impact.

So, if this is installed, as is, on a target system, it has no impact at
ll on anything until one of the two commands are run...

systemctl start lxc.service

and/or

systemctl enable lxc.service

In the case of the former, it will say the service failed and that the
ExecStart command does not exist.  No harm done and it informs the admin
where he need to plug in his startup script.

In the case of the later, rebooting the system will attempt to start
lxc.service at boot time and fail but the failure will be informative
and will not disrupt the boot process.  Recurse back to case 1.

Both of these cases are where I want to be right now.  Once Stéphane has
his pieces ready, we can glue them together with that ExecStart shim.
ITMT, it gives us the framework on Fedora for setting up systemd and lxc
to cooperate and others (such as myself) can use their own ExecStart
scripts until these other pieces are ready.

Regards,
Mike

> > > ---
> > >  lxc.spec.in          |  8 ++++++++
> > >  src/lxc/lxc-devsetup | 26 ++++++++++++++++++++++++++
> > >  src/lxc/lxc.service  | 18 ++++++++++++++++++
> > >  3 files changed, 52 insertions(+)
> > >  create mode 100755 src/lxc/lxc-devsetup
> > >  create mode 100644 src/lxc/lxc.service
> > > 
> > > diff --git a/lxc.spec.in b/lxc.spec.in
> > > index a6c96a2..3ef5881 100644
> > > --- a/lxc.spec.in
> > > +++ b/lxc.spec.in
> > > @@ -102,6 +102,11 @@ rm -rf %{buildroot}
> > >  make install DESTDIR=%{buildroot}
> > >  find %{buildroot} -type f -name '*.la' -exec rm -f {} ';'
> > >  
> > > +# Install some of our systemd stuff...
> > > +install -d -m 755 %{buildroot}/lib/systemd/system
> > > +install -c -m 644 src/lxc/lxc.service %{buildroot}/lib/systemd/system
> > > +install -c -m 755 src/lxc/lxc-devsetup %{buildroot}/%{_libexecdir}/%{name}
> > > +
> > >  %clean
> > >  rm -rf %{buildroot}
> > >  
> > > @@ -131,6 +136,8 @@ rm -rf %{buildroot}
> > >  %{_datadir}/lxc/*
> > >  %config(noreplace) %{_sysconfdir}/lxc/*
> > >  
> > > +/lib/systemd/system/*
> > > +
> > >  %files libs
> > >  %defattr(-,root,root)
> > >  %{_libdir}/*.so.*
> > > @@ -140,6 +147,7 @@ rm -rf %{buildroot}
> > >  %endif
> > >  %{_localstatedir}/*
> > >  %attr(4555,root,root) %{_libexecdir}/%{name}/lxc-init
> > > +%attr(555,root,root) %{_libexecdir}/%{name}/lxc-devsetup
> > >  
> > >  %if %{with_lua}
> > >  %files lua
> > > diff --git a/src/lxc/lxc-devsetup b/src/lxc/lxc-devsetup
> > > new file mode 100755
> > > index 0000000..583a001
> > > --- /dev/null
> > > +++ b/src/lxc/lxc-devsetup
> > > @@ -0,0 +1,26 @@
> > > +#!/bin/sh -
> > > +
> > > +# lxc.devsetup - Setup host /dev for container /dev subdirectories.
> > > +
> > > +if [[ ! -d /dev/.lxc ]]
> > > +then
> > > +    echo "Creating /dev/.lxc"
> > > +    mkdir /dev/.lxc
> > > +    chmod 755 /dev/.lxc
> > > +fi
> > > +
> > > +if grep -q "/dev devtmpfs " /proc/self/mounts
> > > +then
> > > +    echo "/dev is devtmpfs"
> > > +else
> > > +    echo "/dev is not devtmpfs - mounting tmpfs on .lxc"
> > > +    mount -t tmpfs tmpfs /dev/.lxc
> > > +fi
> > > +
> > > +if [[ ! -d /dev/.lxc/user ]]
> > > +then
> > > +    echo "Creating /dev/.lxc/user"
> > > +    mkdir /dev/.lxc/user
> > > +    chmod 1777 /dev/.lxc/user
> > > +fi
> > > +
> > > diff --git a/src/lxc/lxc.service b/src/lxc/lxc.service
> > > new file mode 100644
> > > index 0000000..d3d3238
> > > --- /dev/null
> > > +++ b/src/lxc/lxc.service
> > > @@ -0,0 +1,18 @@
> > > +[Unit]
> > > +Description=LXC Container Initialization and Autoboot Code
> > > +After=syslog.target
> > > +
> > > +[Service]
> > > +Type=oneshot
> > > +RemainAfterExit=yes
> > > +ExecStartPre=/usr/libexec/lxc/lxc-devsetup
> > > +ExecStart=/usr/libexec/lxc/lxc-startup start
> > > +ExecStop=/usr/libexec/lxc/lxc-startup stop
> > > +# Environment=BOOTUP=serial
> > > +# Environment=CONSOLETYPE=serial
> > > +StandardOutput=syslog
> > > +StandardError=syslog
> > > +
> > > +[Install]
> > > +WantedBy=multi-user.target
> > > +
> > > -- 
> > > 1.8.3.1
> > > 
> > > 
> > > -- 
> > > Michael H. Warfield (AI4NB) | (770) 978-7061 |  mhw at WittsEnd.com
> > >    /\/\|=mhw=|\/\/          | (678) 463-0932 |  http://www.wittsend.com/mhw/
> > >    NIC whois: MHW9          | An optimist believes we live in the best of all
> > >  PGP Key: 0x674627FF        | possible worlds.  A pessimist is sure of it!
> > > 
> > 
> > 
> > 
> > > ------------------------------------------------------------------------------
> > > November Webinars for C, C++, Fortran Developers
> > > Accelerate application performance with scalable programming models. Explore
> > > techniques for threading, error checking, porting, and tuning. Get the most 
> > > from the latest Intel processors and coprocessors. See abstracts and register
> > > http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
> > 
> > > _______________________________________________
> > > Lxc-devel mailing list
> > > Lxc-devel at lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/lxc-devel
> > 
> > 
> 

-- 
Michael H. Warfield (AI4NB) | (770) 978-7061 |  mhw at WittsEnd.com
   /\/\|=mhw=|\/\/          | (678) 463-0932 |  http://www.wittsend.com/mhw/
   NIC whois: MHW9          | An optimist believes we live in the best of all
 PGP Key: 0x674627FF        | possible worlds.  A pessimist is sure of it!

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 482 bytes
Desc: This is a digitally signed message part
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20131121/66272610/attachment.pgp>


More information about the lxc-devel mailing list