我正在尝试从 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 机器可供测试。 :)