Linux 6.14 的一大新功能是 NTSYNC 驱动程序的完成是为了更好地模拟 Microsoft Windows NT 同步原语,以便 Wine 和 Proton (Steam Play) 等软件在 Linux 上运行 Windows 游戏时可以提供更好的性能。但事实证明,到目前为止的疏忽意味着在实践中,它并不是开箱即用的。
权限问题导致 NTSYNC 驱动程序在默认情况下不向用户公开其 /dev/ntsync char 设备。反过来,开箱即用的 NTSYNC 不会立即可用,除非手动更改 NTSYNC 设备权限或使用 udev 脚本或类似脚本进行修改,以便非 root 用户可以读/写以与此软件设备交互。
发布了针对 udev 的 systemd 拉取请求,以添加 NTSYNC 设备组和权限。但这被看作对上游内核更好。有人对它是否具有世界可写性和可读性提出了质疑,这应该没问题,因为它不是真正的硬件设备,并且对于在设备上打开的每个文件描述符,只有该实例创建的对象才能与同一实例中的其他对象一起使用。
一个 NTSYNC 内核驱动程序补丁被发布到 Linux 内核邮件列表,默认将 /dev/ntsync 设备权限设置为 0666,因此它默认适用于非 root 进程。
对此,Greg Kroah-Hartman 立即评论道:
“你确定你需要/想要那个吗?如果是这样,为什么?现有的测试怎么从来没有发现过这个问题?
反过来,Elizabeth Figura 评论道:
“嗨,对不起,这当然是我的错。
我们确实需要 /dev/ntsync 可以从用户空间打开,这样它才有用。我不确定在这种情况下最“正确”的权限是什么(当我们不特别需要读取或写入时),但我认为我没有理由不直接设置为 666 或 444。
我最初认为正确的方法不是在内核文件上设置模式,而是通过 udev;我相信我使用的是 /dev/loop-control 或 /dev/fuse 的代码作为示例,它们都是这样做的。所以我(和其他测试过的人)只是为此手动设置了 udev 规则,最终目的是像其他人一样向 systemd 添加默认规则。我最近才意识到,做这样的事情是可能的,而且是先例。
我不知道解决这个问题的最佳方法是什么,但这肯定是最简单的。
反过来,Greg 现在可以接受已签署的补丁,对 NTSYNC 驱动程序进行此默认更改。因此,如果一切顺利,在未来几天内,我们将看到 NTSYNC 驱动程序在 Linux 6.14 Git 中进行了调整,默认情况下具有更开放的读/写权限,以便 Linux 游戏玩家可以开箱即用。立即使用 NTSYNC 驱动程序的另一个障碍是 Wine 合并请求仍在处理中,以使用这个新的内核驱动程序。
转自 NTSYNC Driver Fix Being Worked On For Proper User Permissions – Phoronix