On Mon, 31.10.16 13:19, Steve Dickson ([email protected]) wrote: > [Unit] > Description=RPCbind Server Activation Socket > DefaultDependencies=no > RequiresMountsFor=/var/run /run > Wants=rpcbind.target > Before=rpcbind.target > > [Socket] > ListenStream=/var/run/rpcbind.sock
So you turned off the default dependencies, which means your socket unit will be started during earliest boot, at a time where /var is usually not writable yet. (You then try to fix this up via the RequiresMountsFor= thing, but that will only ensure that /var is mounted, it does not require it to actually be writable, or that the /var/run → /run symlink was created) So, most importantly: please drop all references to /var/run here. That's just a legacy alias to /run, implemented via a symlink. All distributions, regardless if they adopted systemd or not, have switched to making /run a tmpfs and /var/run a symlink to it. There's really no point at all in ever referring to /var/run again. By dropping any reference to /var/run and replacing it by a reference directly to /run you make the entire problem set go away: /run is guaranteed to always exist on systemd systems, it's always writable, and always a tmpfs. PID 1 mounts in in its earliest initialization phase, right at the same time it mounts /proc and /sys too. Summary: a) drop the entire RequiresMountsFor= line, it's useless. /run is mounted anyway, and depending on /var/run doesn't do what people might think, and you don't need it anway. b) Change the ListenStream directive to reference /run/rpcbind.sock directly, avoid the indirection via /var/run/rpcbind.sock Lennart -- Lennart Poettering, Red Hat _______________________________________________ systemd-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/systemd-devel
