![为什么 systemd *不*打开`/dev/dri/...`?](https://linux22.com/image/133187/%E4%B8%BA%E4%BB%80%E4%B9%88%20systemd%20*%E4%B8%8D*%E6%89%93%E5%BC%80%60%2Fdev%2Fdri%2F...%60%EF%BC%9F.png)
现在,当我从 tty6 上的文本控制台切换到 tty3 上的 GNOME 时,我的系统正在执行磁盘 IO。 1.4GB 交换空间正在使用中。
在 tty6 上,我运行了sudo lsof -p 1 | grep dev
,以检查是否存在与“类似的问题”我的 6GB 交换空间可以用来做什么?“。根据那里的背景信息,我希望 PID 1 具有 的打开文件描述符/dev/dri/...
。但它没有任何!
当我从 tty3 运行命令时也是如此。但输出有所不同,因为它现在包含/dev/input/...
.
如果我切换回 tty3 并重试等,这些结果是可重复的。
注意:这是我在上游 systemd 中接触过的代码,所以很可能是我的错 :-)。 查看 systemd git commit 消息src/login
,我找不到此行为的明显故意更改。
我有一个适用于 Fedora 27 和 Fedora 28 的虚拟机。他们当我启动 Fedora 27 并lsof
在串行控制台上运行时,Fedora 27 看起来不错。但是,在 Fedora 28 VM 上,如果我运行chvt 6
,则会出现同样的问题。
编辑:如果我将 SELinux 设置为“宽容”(记录了策略违规,但允许),这种明显的回归就会消失。我已将其作为 Fedora 中的问题提交。 SELinux 干扰 systemd-logind 重启代码
- systemd-238-7.fc28.1.x86_64 (
应包括修复“我的 6GB 交换空间可以用来做什么?”) - gnome-shell-3.28.1-3.fc28.x86_64
在 Fedora 27 VM 上不会发生这种情况
- systemd-234-10.git5f8984e.fc27.x86_64
- gnome-shell-3.26.2-5.fc27.x86_64
答案1
我认为 VT 开关导致 gnome-shell 释放输入设备(logind dbus API 中的 ReleaseDevice 方法)。这会导致登录删除设备的 FD。
所以这很可能受到该问题的影响第8344章“session_device_free(sd) 也会删除所有其他该会话的设备 fds”。针对 systemd v239 合并了修复。
我通过测试 systemd 的预发行版本(其中包含修复程序)证实了这一点。
...检查是否与“什么可以使用我的 6GB 交换区?”类似的问题。
很有可能。 v239 也合并了该问题的修复,因此不存在于systemd-238-7.fc28.1.x86_64
.