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