On Wed, Dec 21, 2016 at 8:36 AM, Corbin Bird <corbinb...@charter.net> wrote:
>
> The old manual method of configuration is extremely flexible, you can
> get the "who-knows-where-it-came-from-component" to work. The new
> "automagic" of udev / systemd .... forget it. At least with script based
> init systems I could change the run level to fix Xorg problems.

udev and systemd operate based on text configuration files that are
declarative in nature.

You can certainly change the "run level" in systemd (what you'd call a
runlevel in openrc would be a target in systemd).  You can even pass
the default target on the kernel command line, or change the default
target in /etc. As with openrc they aren't numbered and you aren't
limited to any particular number of them.  There are some standard
ones out of the box, like multi-user, emergency, getty, basic, etc.

>
> The systemd configuration files are designed for programmers, not
> technicians. And their is a HUGE difference between "programmers" and
> "technicians". Different aptitudes, different skills. The old .conf
> files, technicians can easily handle. Requiring everyone to be a
> programmer is a really bad idea.
>

The only "configuration" files openrc supports for services are shell
scripts, as opposed to declarative configuration files used by
systemd.  Now, openrc init.d shell scripts might source configuration
from some text file in /etc/conf.d, but there is nothing that prevents
systemd units from doing the same.  On Gentoo we stick the settings in
drop-in files instead, but these are no more complex.

Here is an example of a Gentoo systemd drop-in:
/etc/systemd/system/ntpdate.service.d/00gentoo.conf
[Service]
Environment="SERVER=0.gentoo.pool.ntp.org 1.gentoo.pool.ntp.org
2.gentoo.pool.ntp.org 3.gentoo.pool.ntp.org"


That hardly requires programming to understand.


And here is the entire ntpdate unit file:
/usr/lib/systemd/system/ntpdate.service
[Unit]
Description=Set time via NTP using ntpdate
After=network-online.target nss-lookup.target
Before=time-sync.target
Wants=time-sync.target
Conflicts=systemd-timesyncd.service

[Service]
Type=oneshot
ExecStart=/usr/sbin/ntpdate -b -u $SERVER
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target


No programming there either.

Most of the stuff that is hard to understand in the file are the
dependencies, and that is just because you need to learn the
terminology that systemd uses, though most of that is straightforward.
The After= line is roughly equivalent to "use net dns" in openrc,
though systemd has a lot more virtuals defined out of the box and
they're more granular.  For example, systemd distinguishes between an
interface existing, and an interface having an IP/etc, while on openrc
we have just one virtual that covers the latter.

I know, it almost sounds like the systemd design is intended to
support running a diverse service ecosystem.  Go figure...

-- 
Rich

Reply via email to