Hello, I plan to give a 2-hour student-to-students lecture about
s6/s6-rc in my school's LUG.  Attached are related files for anyone
interested (any suggestion is more than welcome):

* Init-RC-with-s6.txt: the outline I prepared for the lecture.
  (The outline is base on a my personal view of s6/s6-rc, and of course
  does not necessarily represent the opinion of anyone else.)
* s6-conf.tgz: simplified example of s6 / s6-rc deployment, as discussed
  in the attached outline.

The example was designed with Void Linux in mind, but should be
reasonably adaptable to other Linux distros.  I tested the setup in a
virtual machine, and recommend you to also use a VM, or at least a
non-critical machine.  The scripts need bash and a few other GNU tools
(sorry but I did not quite invest time on POSIXity).

To use the tarball, login or su to root, extract the tarball keeping all
permissions (with the `-p' option of tar(1)), make the `s6/distfiles'
directory and download all needed (see `s6/scripts/pkg-inst.sh') release
tarballs from skarnet.org into that directory, then follow HOWTO.txt and
see the outcome.

-- 
My current OpenPGP key:
RSA4096/0x227E8CAAB7AA186C (expires: 2020.10.19)
7077 7781 B859 5166 AE07 0286 227E 8CAA B7AA 186C

1  Useful concepts

        1.1  System initialisation
                1.1.1  Chainloading
                1.1.2  Properties of PID 1
                        1.1.2.1  Signal handling
                        1.1.2.2  exit() and exec()
                1.1.3  Aside: history of init [init-hist]

        1.2  Process supervision
                1.2.1  Requirements [s6-ov]
                        1.2.1.1  Auto restart
                        1.2.1.2  Be itself supervised
                                # The need to be rooted in PID 1
                1.2.2  Main choices
                        1.2.2.1  No supervision, or with PID files, or with
                                 /etc/inittab and /etc/ttys
                        1.2.2.2  monit and supervisord; upstart and systemd
                        1.2.2.3  daemontools(-encore), runit, perp, s6 and nosh
                1.2.3  Aside: the supervision mail list [sv-ml]

        1.3  Notification without running a service [ftrig]

2  Anatomy of s6 / s6-rc

        2.1  Supervision: s6-supervise and s6-svscan
                2.1.1  Configuration and runtime control [s6-ov]
                2.1.2  Readiness notification

        2.2  RC: s6-rc
                2.2.1  Chainloading and execline
                2.2.2  Service directory deployment
                2.2.3  Why no OR dependencies for now [or-dep]

        2.3  Service logging
                2.3.1  s6-svscan as init: the fd-holding black magic
                2.3.2  s6-fdholder
                        # Restart of s6-fdholder [fh-restart]
                2.3.3  s6-log and ucspilogd
                        # /dev/log: SOCK_STREAM and SOCK_DGRAM [log-dgram]
                2.3.4  The good parts of "socket activation" [s6-sa]

        2.4  The DJB legacy and the Plan 9 spirit
                2.4.1  File system as the channel
                2.4.2  library organisation, eg. buffer.h <-> bio.h
                2.4.3  A glance at the source code

3  A simplified example of s6 / s6-rc deployment

        3.1  "Refined" phases of init; "runlevel" emulation with s6-rc
        3.2  emptyenv -p with setproctitle; dcron with nosetsid
        3.4  Shuffling of fd in ucspilogd's ./run
        3.3  Instanced supervision
                # A hybrid of execline and shell? [el-hybrid]
        3.5  Aside: comparison of init scripts [run-comp]

--

[el-hybrid] <http://skarnet.org/cgi-bin/archive.cgi?
                    2:msp:1131:jgoekjpfpjmfnefbkcob>
[ftrig] <http://skarnet.org/software/s6/ftrig.html>
[fh-restart] <http://skarnet.org/cgi-bin/archive.cgi?
                     2:mss:1107:klkgaflanpnghddcjfej>
[init-hist] <http://blog.darknedgy.net/technology/2015/09/05/0/>
            <http://arxiv.org/pdf/0706.2748v2.pdf>
[log-dgram] <http://www.openwall.com/lists/musl/2015/08/10/1>
[run-comp] <http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/
                   run-scripts-and-service-units-side-by-side.html>
[or-dep] <http://skarnet.org/cgi-bin/archive.cgi?
                 2:msp:1063:blhpkmcfbdgbjkmbbckm>
[s6-sa] <http://skarnet.org/software/s6/socket-activation.html>
[s6-ov] <http://skarnet.org/software/s6/overview.html>
[sv-ml] <http://skarnet.org/lists.html>

Attachment: s6-conf.tgz
Description: GNU Unix tar archive

Reply via email to