If you write your own scripts called by udevd, for example after plugin a specific USB stick, you maybe want to mount a partition, which could fail. I got often return code 32 from mount, which means “mount failure” but without any additional error message.
This happens, because systemd-udevd
is started in its own namespace for mounting. So the filesystem of udevd differs from the main system. You should be aware, that running udevd in an own namespace increases security. But if you want to disable this to run your scripts, do the following steps.
First verify the current MountFlags
settings of udevd service. It should be “slave”.
systemctl show systemd-udevd | grep -F MountFlags
Now edit the udevd service
systemctl edit systemd-udevd
and set MountFlags
to shared:
[Service] MountFlags=shared
At last you just have to reload systemd settings and restart the udevd daemon:
systemctl daemon-reload systemctl restart systemd-udevd
You then also can verify that udevd didn’t use the namespace anymore and list all current mount namespaces in use:
lsns -t mnt