diff options
author | Tom Gundersen <teg@jklm.no> | 2013-04-11 21:14:40 +0200 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2013-04-12 02:43:01 +0200 |
commit | 8c11aac1d739f5e60822f65f5179d8c4cc212732 (patch) | |
tree | caf14eedbd25e7060bdd9fcde57fda6796189a0a | |
parent | 4e3431bc39cbd45661f7887229afa50e5aec60dc (diff) |
tmpfiles: create static device nodes before udev is started
Since v183, the contents of /usr/lib/udev/devices is no longer copied to /dev
on boot, rather systemd-tmpfiles should be used instead. However, as
systemd-tmpfiles --create is only ran long after udevd has been started, it is
no longer possible to use udev rules to assign permissions to the static nodes.
This calls systemd-tmpfiles --create early, before udev is started, and
restricts the call to /dev, which is known to be mounted already.
In the future, this could also take over the creation of static device nodes
from systemd-udevd.
-rw-r--r-- | Makefile.am | 5 | ||||
-rw-r--r-- | units/systemd-static-nodes.service.in | 16 |
2 files changed, 21 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am index 117bbf3676..eee73e5950 100644 --- a/Makefile.am +++ b/Makefile.am @@ -427,6 +427,7 @@ nodist_systemunit_DATA = \ units/systemd-kexec.service \ units/systemd-fsck@.service \ units/systemd-fsck-root.service \ + units/systemd-static-nodes.service \ units/systemd-udevd.service \ units/systemd-udev-trigger.service \ units/systemd-udev-settle.service \ @@ -468,6 +469,7 @@ EXTRA_DIST += \ units/systemd-fsck@.service.in \ units/systemd-fsck-root.service.in \ units/user@.service.in \ + units/systemd-static-nodes.service \ units/systemd-udevd.service \ units/systemd-udev-trigger.service \ units/systemd-udev-settle.service \ @@ -1939,11 +1941,13 @@ CLEANFILES += \ src/udev/udev.pc EXTRA_DIST += \ + units/systemd-static-nodes.service.in \ units/systemd-udevd.service.in \ units/systemd-udev-trigger.service.in \ units/systemd-udev-settle.service.in CLEANFILES += \ + units/systemd-static-nodes.service \ units/systemd-udevd.service \ units/systemd-udev-trigger.service \ units/systemd-udev-settle.service @@ -1952,6 +1956,7 @@ SOCKETS_TARGET_WANTS += \ systemd-udevd-control.socket \ systemd-udevd-kernel.socket SYSINIT_TARGET_WANTS += \ + systemd-static-nodes.service \ systemd-udevd.service \ systemd-udev-trigger.service diff --git a/units/systemd-static-nodes.service.in b/units/systemd-static-nodes.service.in new file mode 100644 index 0000000000..3553226c67 --- /dev/null +++ b/units/systemd-static-nodes.service.in @@ -0,0 +1,16 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Create static device nodes in /dev +DefaultDependencies=no +Before=sysinit.target systemd-udevd.service +ConditionCapability=CAP_MKNOD + +[Service] +Type=oneshot +ExecStart=@rootbindir@/systemd-tmpfiles --prefix=/dev --create |