Bug#1056066: systemd: rsyslog fails to start if /dev/xconsole exists
Michael Biebl
biebl at debian.org
Thu Nov 16 17:12:31 GMT 2023
Am 16.11.23 um 17:17 schrieb Sven Joachim:
> Package: systemd
> Version: 255~rc2-1
> Severity: important
>
> After upgrading systemd from 254.5-1 and rebooting, rsyslog failed to
> start on my system. These messages appear in the journal:
>
> ,----
> | Nov 16 16:58:10 localhost systemd[1]: Starting rsyslog.service - System Logging Service...
> | Nov 16 16:58:10 localhost (rsyslogd)[674]: Failed to create destination mount point node '/run/systemd/mount-rootfs/dev/xconsole', ignoring: Read-only file system
> | Nov 16 16:58:10 localhost (rsyslogd)[674]: Failed to mount /dev/xconsole to /run/systemd/mount-rootfs/dev/xconsole: No such file or directory
> | Nov 16 16:58:10 localhost (rsyslogd)[674]: rsyslog.service: Failed to set up mount namespacing: /dev/xconsole: No such file or directory
> | Nov 16 16:58:10 localhost systemd[1]: rsyslog.service: Main process exited, code=exited, status=226/NAMESPACE
> | Nov 16 16:58:10 localhost systemd[1]: rsyslog.service: Failed with result 'exit-code'.
> | Nov 16 16:58:10 localhost systemd[1]: Failed to start rsyslog.service - System Logging Service.
> | Nov 16 16:58:10 localhost systemd[1]: rsyslog.service: Scheduled restart job, restart counter is at 1.
> `----
>
> This gets repeated a few times, and after five restart attempts systemd
> gives up.
>
> It should be noted that I have enabled forwarding messages to xconsole
> according to the the "Logging to xconsole" section in
> /usr/share/doc/rsyslog/README.Debian, and the problem is obviously in
> the bind mount for /dev/xconsole. Removing /dev/xconsole so that the
> "BindPaths=-/dev/xconsole" statement in rsyslog.service has no effect
> lets rsyslog start, but recreates the problem of #1053913.
It appears, that PrivateTmp=yes was locked down further and is now
remounted read-only (thanks bluca for the reference):
https://github.com/systemd/systemd/commit/4a9e03aa6bb2cbd23dac00f2b2a7642cc79eaade
We basically have two options as I see it:
a/ Drop PrivateDevices=yes from rsyslog.service
b/ Move /dev/xconsole to run and turn /dev/xconsole into a symlink
The latter b/ will require updates to the local copies in
/etc/tmpfiles.d/ and /etc/rsyslog.d/
They would look like this now:
$ cat /etc/rsyslog.d/xconsole.conf
daemon.*;mail.*;\
news.err;\
*.=debug;*.=info;\
*.=notice;*.=warn |/run/xconsole
$ cat /etc/tmpfiles.d/xconsole.conf
# Type Path Mode UID GID Age Argument
p /run/xconsole 0640 root adm
L /dev/xconsole - - - - /run/xconsole
Conceptually, moving the named pipe out of /dev and into /run is the
cleaner solution I think. The /dev/xconsole symlink should make it
reasonably backwards compatible.
Thoughts?
Michael
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20231116/c0c43e14/attachment.sig>
More information about the Pkg-systemd-maintainers
mailing list