<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Before I get into the directed inline
      reply below, here's my overall position. I don't have as much time
      as I like to go into it in depth, but I might be able to be
      convinced to resurrect my blog or put together a talk on it...<br>
      <br>
      OH! And PulseAudio was mentioned.&nbsp; PulseAudio SUCKED MAJORLY in
      the beginning. But today it is superior to anything else I've
      used.&nbsp; I still can't figure out how to get Microsoft Windows to
      drive my speakers correctly.&nbsp; Modern PulseAudio (as found in
      Fedora 20, for example) gets the configuration correct out of the
      box, every time.&nbsp; It was not always like that, and anyone can
      easily find many of my rants about PulseAudio problems in the ALE
      archives and elsewhere on the 'net.&nbsp; But today, I appreciate the
      fact that I can actually enjoy my music with it, without modifying
      10 different config files to get the channels and upscaling
      correctly mapped persistently across reboots.<br>
      <ol>
        <li>systemd is specific to the Linux kernel.&nbsp; It will not run on
          Hurd, FreeBSD, NetBSD, or any other system. It therefore takes
          full advantage of everything that Linux has to offer. That is
          to say that Linux is one of systemd's four core dependencies.</li>
        <ol>
          <li>It uses cgroups, which allow it to ensure that processes
            never escape their assigned trees.</li>
          <li>It works to standardize certain aspects of the environment
            which previously did not need standardization. With the
            coming obsolescence of X11 (on Linux systems), being
            replaced by the far more efficient and versatile Wayland,
            having things like "seat" and "session" management provided
            by the system is better.</li>
          <li>It works to standardize individual user sessions, too.&nbsp; No
            longer do you need things like a profile or xinit script.&nbsp;
            You can have systemd --user start when you login, and
            maintain things for you while you're logged in (and it can
            be configured to do certain things only once, globally, such
            as start a local daemon, terminating it upon the termination
            of your last login session if you've multiple).<br>
          </li>
        </ol>
        <li>systemd is as lightweight as desired.&nbsp; It depends on Linux,
          glibc, libcap, and util-linux (satisfiable with busybox).&nbsp;
          That's it.&nbsp; Pair a current systemd with Linux 3.17 or later
          and the (optional) D-Bus requirement disappears entirely.</li>
        <li>systemd makes rapid experimentation easy. 4 dependencies.&nbsp;
          Use isolinux to boot from a CD, or use User-Mode Linux to
          perform rapid experimentation in your own userspace.<br>
        </li>
        <li>systemd formalizes a lot of configuration that previously
          was done any one of a million ways by different distributions
          and subdistributions. And now that (nearly all) distributions
          use systemd as the system manager, that knowledge is <i>truly</i>
          portable.&nbsp; No longer are there (mandatory) huge low-level
          differences between e.g., Debian and RHEL!</li>
        <li>systemd makes administration very easy.</li>
        <li>systemd is the first stepping stone to having a, IMHO, truly
          secure environment to work in.&nbsp; It is aware of capabilities,
          and integrates with PolicyKit.&nbsp; Add glue to allow SSH to be
          used as a transport for inter-system management (actually, if
          I'm not mistaken, systemd already provides that) and you can
          now do a great deal either quickly or programmatically,
          without having to move terribly much in the way of resources.</li>
        <li>It's great for the so-called "DevOps" thing.&nbsp; Since service
          configuration in /etc is now admin-controlled and not
          partially controlled by the distribution, rsync deployment
          becomes possible for far more classes of software than
          previously possible. The distribution places unit files in
          /usr/lib/systemd, and the host administrator (or host
          administration agent software) can override everything, using
          a similarly built tree in /etc/systemd.<br>
        </li>
      </ol>
      <p>There's more to it, and it's versatile as well.&nbsp; The journal
        mechanism provides functionality that is EXTREMELY useful for
        both development and production troubleshooting, and is far
        easier to work with than syslog, whether on just one system or
        on multiple.<br>
      </p>
      <p>Below, my reply wherein I highlight just how lightweight a
        systemd system can be&#8212;like the Linux kernel, which may be very
        bloated (when you use a distro kernel, it usually is) or lean
        (as you please), the systemd software can be configured to be
        very slim indeed.<br>
      </p>
      On 09/05/2014 10:46 AM, Michael H. Warfield wrote:<br>
    </div>
    <blockquote
      cite="mid:1409928393.5611.247.camel@canyon.ip6.wittsend.com"
      type="cite">
      <pre wrap="">Really.  Look at the dependencies in systemd.  Especially this one:</pre>
    </blockquote>
    Systemd itself (from upstream) has the following dependencies:<br>
    <br>
    (This is from the systemd README for systemd-216, the very latest
    release):<br>
    <pre>        glibc &gt;= 2.14
        libcap
        libseccomp &gt;= 1.0.0 (optional)
        libblkid &gt;= 2.20 (from util-linux) (optional)
        libkmod &gt;= 15 (optional)
        PAM &gt;= 1.1.2 (optional)
        libcryptsetup (optional)
        libaudit (optional)
        libacl (optional)
        libselinux (optional)
        liblzma (optional)
        liblz4 &gt;= 119 (optional)
        libgcrypt (optional)
        libqrencode (optional)
        libmicrohttpd (optional)
        libpython (optional)
        libidn (optional)
        gobject-introspection &gt; 1.40.0 (optional)
        elfutils &gt;= 158 (optional)
        make, gcc, and similar tools

        During runtime, you need the following additional
        dependencies:

        util-linux &gt;= v2.19 (requires fsck -l, agetty -s),
                      v2.21 required for tests in test/
        dbus &gt;= 1.4.0 (strictly speaking optional, but recommended)
        sulogin (from util-linux &gt;= 2.22 or sysvinit-tools, optional but recommended,
                 required for tests in test/)
        dracut (optional)
        PolicyKit (optional)
</pre>
    Notice how most of those requirements are <i>optional</i>.&nbsp; This
    includes libqrencode.<br>
    <br>
    A little while back, when the first major "fuck systemd, it's
    bloated" holy war happened, the Debian project performed a <a
href="https://people.debian.org/%7Estapelberg/docs/systemd-dependencies.html">quite
      complete analysis of systemd</a> showing that it's quite
    worthwhile, comparing it with sysvinit and upstart.<br>
    <br>
    <blockquote type="cite">
      <pre wrap="">Explain to me why in all of hades an init system needs QR codes?</pre>
    </blockquote>
    Let's find out, shall we?<br>
    <br>
    If you run the command <tt>for elf in $(rpm -qlR systemd|egrep
      '^/usr/(s?)bin'); do ldd $elf | grep qrenco; done</tt>, you'll
    find that exactly one instance exists; so let's see what that is:<br>
    <pre>mbt@aloe ~$ for elf in $(rpm -qlR systemd|egrep '^/usr/(s?)bin'); do echo $elf; ldd $elf 2&gt; /dev/null; printf '\n\n' ; done | grep -C7 qrenc

/usr/bin/journalctl
        linux-vdso.so.1 =&gt;  (0x00007fff8296d000)
        librt.so.1 =&gt; /lib64/librt.so.1 (0x00007fe5bc2b1000)
        liblzma.so.5 =&gt; /lib64/liblzma.so.5 (0x00007fe5bc08c000)
        libgcrypt.so.11 =&gt; /lib64/libgcrypt.so.11 (0x00007fe5bbe0c000)
        libacl.so.1 =&gt; /lib64/libacl.so.1 (0x00007fe5bbc03000)
        libqrencode.so.3 =&gt; /lib64/libqrencode.so.3 (0x00007fe5bb9f6000)
        libgcc_s.so.1 =&gt; /lib64/libgcc_s.so.1 (0x00007fe5bb7df000)
        libc.so.6 =&gt; /lib64/libc.so.6 (0x00007fe5bb421000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003752c00000)
        libpthread.so.0 =&gt; /lib64/libpthread.so.0 (0x00007fe5bb204000)
        libgpg-error.so.0 =&gt; /lib64/libgpg-error.so.0 (0x00007fe5baffe000)
        libdl.so.2 =&gt; /lib64/libdl.so.2 (0x00007fe5badfa000)
        libattr.so.1 =&gt; /lib64/libattr.so.1 (0x00007fe5babf5000)
</pre>
    It appears that the Journal has the <b>(<u>optional</u>)</b>
    linkage against the QRencoder library.&nbsp; Why? Because this is a
    feature that goes to support <b>Forward Secure Sealing journal
      logging</b>. (I realize that this has already been pointed out.)<br>
    <br>
    As can be seen in the systemd README, this is an <u>optional</u>
    dependency which allows systemd to display the QR code of the
    verification key when the user runs "journalctl --setup-keys".&nbsp; It
    displays the QR code <a
href="https://plus.google.com/photos/+LennartPoetteringTheOneAndOnly/albums/5778855891080167857/5778855890152395650?pid=5778855890152395650&amp;oid=%2BLennartPoetteringTheOneAndOnly">right
      on the terminal</a>.<br>
    <br>
    And this works on anything systemd works on&#8212;including your little
    Raspberry Pi units&#8212;and comes nearly for free.&nbsp; And did I mention
    that it is <b><i>optional</i></b>? Talk to Fedora or Red Hat if you
    don't like the way they package it, or build systemd from source
    yourself and create an RPM that you use.&nbsp; Put the blame where it's
    due, and not where the very first thing points to.<br>
    <br>
    If you want to confirm this, you can build yourself a GCC with
    --sysroot support and create, from source, a root filesystem that
    comprises of linux, glibc, libcap, busybox, and systemd.&nbsp; Oh, shit.&nbsp;
    I was wrong; you can't build a complete systemd system with 4
    packages, it's 5 packages.&nbsp; Oops.<br>
    <br>
    Systemd is pretty damned nice, if you take the time to get to know
    it.&nbsp; It <i>greatly</i> simplifies the stack, and has actually
    improved the robustness of the systems that use it.&nbsp; <b>Creating a
      test distribution that is bootable requires the five packages I
      listed above, plus a boot loader.</b>&nbsp; It doesn't get easier or
    simpler than that.<br>
    <br>
    Well, yes, it does. Don't use a boot loader and try everything under
    an "ARCH=um" kernel.<br>
    <br>
    &nbsp;&nbsp;&nbsp; &#8212; Mike<br>
  </body>
</html>