Thanks, Michael. I'll go ahead and apply the patch. -serge
Quoting Michael H. Warfield (m...@wittsend.com): > 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 (m...@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 | m...@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@lists.sourceforge.net > > > > https://lists.sourceforge.net/lists/listinfo/lxc-devel > > > > > > > > > > -- > Michael H. Warfield (AI4NB) | (770) 978-7061 | m...@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! > ------------------------------------------------------------------------------ Shape the Mobile Experience: Free Subscription Software experts and developers: Be at the forefront of tech innovation. Intel(R) Software Adrenaline delivers strategic insight and game-changing conversations that shape the rapidly evolving mobile landscape. Sign up now. http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel