如何在 systemd 中禁用 udevd?

如何在 systemd 中禁用 udevd?

我正在尝试从 Fedora 16 主机启动 Fedora Rawhide LXC 容器,但它不起作用 -systemd只是不断进入紧急模式。因为udevd在 LXC 容器中不起作用,所以我想尝试udevd在来宾内部禁用,但我无法做到这一点。

你会认为

systemctl disable udev.service

可以解决问题,但事实并非如此。我可以看到它仍然是通过在主机中udevd运行而产生的。pstree

答案1

该命令是systemctl控制下的服务systemd

禁用该服务下次运行:systemctl disable udevd.service

停止当前正在运行的服务:systemctl stop udevd.service

浏览作者提供的这些文档链接systemd

http://0pointer.de/blog/projects/systemd.html

http://0pointer.de/blog/projects/on-etc-sysinit.html

它们很长,但值得休闲阅读,而且很重要,因为主要的 Linux 发行版正在这个关键时刻跳入下一阶段的改进/增强systemd,留下一些(旧派思想)SysV 风格的操作。

答案2

systemd 术语在这方面有点令人困惑。systemctl disable标记服务不在启动时启动,但该服务仍然可以通过其他方式启动启动。 (例如,dbus 激活。)要完全删除某个服务,使其不再被激活,请使用systemctl mask- 那么它将被“屏蔽”并且永远不会启动。

由于这个问题是 Fedora 16 和五年前的问题,我不确定这是具体问题,无法真正测试,但我从其他答案和评论中怀疑这就是问题所在。

答案3

FWIW 在运行 Debian Bookworm 的旧 LXC 容器中,在 Trixie 上再次运行,我必须使用“sudo systemctl mask systemd-udevd.service”来阻止 apt dist-upgrade 失败...

答案4

Ubuntu 上的服务称为“systemd-udevd”,因此您将运行sudo systemctl stop systemd-udevd.您可能还需要停止一些套接字服务,这些服务可能会在您停止 systemd-udevd 后显示在输出中。我假设 Fedora 是类似的,但我附近没有 Fedora 机器可供测试。 :)

相关内容