Hi, I pushed the sysvinit rc.local facility to systemd.
# cat /etc/systemd/system/multi-user.target.wants/rc-local.service [Unit] Description=/etc/rc.local Compatibility ConditionFileIsExecutable=/etc/rc.local [Service] Type=oneshot ExecStart=/usr/bin/bash /etc/rc.local TimeoutSec=0 StandardInput=tty RemainAfterExit=yes
The rc.local script displays (important) informations on the console and expects a validation with the return key.
# cat /etc/rc.local #!/bin/bash echo IMPORTANT INFORMATIONS read -s key
The informations are well displayed on console but the graphic manager starts before the keyboard confirmation...
Note that tty1 is disabled.
# ll /etc/systemd/system/getty.target.wants/ total 0 -rw-r--r-- 1 root root 0 17 mars 12:52 email@example.com lrwxrwxrwx 1 root root 38 2 sept. 2012 firstname.lastname@example.org -> /usr/lib/systemd/system/getty@.service -rw-r--r-- 1 root root 0 17 mars 12:17 email@example.com -rw-r--r-- 1 root root 0 17 mars 12:17 firstname.lastname@example.org -rw-r--r-- 1 root root 0 17 mars 12:17 email@example.com
How can I start the graphic manager after the keyboard confirmation?
-- Lacsap, 18 March 2013
Should the section "writing a custom .service" be expanded?
I think so.. as long as I got, this is necessary to run self-made scripts during the boot process, but this is not clear and the structure of the files is not well presented.
Moreover, when explain how to transit from the initscript, some referrals on how to move the old custom hooks in
/etc/rc.d/functions.d to be executed by systemd, should be made.
-- DarioP (talk) 12:42, 18 November 2012 (UTC)
- I think it needs to be expanded indeed. As a newbie, it is easy to grasp the concept of "put your code in rc.local", and it's not clear how to transition. Specific questions, as also mentioned by DarioP: In what directory should I place my service definition? On the examples page, there are some files named with an at-sign (
@), what difference does that make? It would be very helpful to have a complete example for running a single command at boot (my example:
echo noop > /sys/block/sdb/queue/scheduler).
- -- Fa2k (talk) 3 February 2013
Still reading up on this, so I'm not 100% solid but I discovered during the systemd transition that it defaults the / mount to rshared (see Shared subtree for definitions). Excerpted from core/mount-setup.c in systemd github:
/* Mark the root directory as shared in regards to mount * propagation. The kernel defaults to "private", but we think * it makes more sense to have a default of "shared" so that * nspawn and the container tools work out of the box. If * specific setups need other settings they can reset the * propagation mode to private if needed. */ if (detect_container(NULL) <= 0) if (mount(NULL, "/", NULL, MS_REC|MS_SHARED, NULL) < 0) log_warning("Failed to set up the root directory for shared mount propagation: %m");
This means that all bind mounts made through fstab will default to shared behavior, not private. For those users who depend on non-recursive bind mounts, this can be a very big gotcha (as the mount propagation effectively nullifies the non-recursion). I think it should be at least noted under Filesystem Mounts, since fstab bind entries definitely may not preserve behavior across the systemd transition and there are definitely some systems that would fail to start up/operate properly due to this, perhaps even silently.
As a side note, for nested bind mounts this also results in multiplicative bloat of the mount table, depending on what kind of nesting structure is used (it's actually relatively easy to construct a nesting sequence that makes 2^n mounts out of n mount calls).
Still looking into good (and easy) configuration solutions.
description of services with multiple instances (@ sign)
As a new archlinux user I found this answer on stack exchange useful for understanding what the @ sign was doing in the names of some service files.
I thought it might be a useful thing to include in the article - maybe by someone a bit more experienced than me =].
Adding section on systemd-networkd
I haven't honestly worked with networkd, it's very new and the only machine I use is a laptop (not the target machine to use networkd with), but I do think it would be a good idea to have either a section or a separate page dealing with networkd. Maybe someone can make this section? Or convince Tom to do it, hopefully? - Genghizkhan91 (talk) 13:52, 23 February 2014 (UTC)