韦兰应用中的"Authentication failed"



首先,对于一个可能很愚蠢的问题,很抱歉,这是我第一次尝试使用Wayland。但我在谷歌上搜索过,找不到任何相关的东西。

我开发的系统在运行图形调用应用程序时非常耗时,所以我已经设法在systemd启动之前在initramfs步骤上运行了Weston和所需的应用程序。一切都很顺利,只是"正常"应用程序拒绝运行,返回">身份验证失败"错误#3

以下是详细信息。

Initramfs是手动编制的,基于busybox。Weston有一个应用程序和所需的库(包括PAM和其他它拒绝工作的东西(也被复制了/dev/em>是静态的,具有最小的节点集/init是一个小型sh脚本,它装载/proc、/run、/sys,运行Weston和应用程序,然后装载主rootfs并使用switch_root((传递控制。除此之外,我在/run_old下安装现有的/reun以保存Wayland的套接字。我不确定它是否正确,但systemd覆盖了主rootfs中的/run,并且应该有一种访问服务器的方法,所以这在某种程度上是有效的。

我还将">wayland-0"套接字和">wayland-0.lock"从/run_old链接到主文件系统中的/run

诊断软件(LayerManagerControlweston info(正在工作并显示有关服务器的信息,但尝试输出图片的所有操作(因此使用/dev/dri/card0时(都会失败,并出现上述错误。

下面是一个客户端应用程序strace:

https://pastebin.com/1K3EDUhB

很明显,它正确地连接了/run/user/0/wayland-0,然后将ioctlDRM_ioctl_GET_MAGIC发送到

/dev/dri/card0从服务器端看,它看起来像这样:

https://pastebin.com/jkmeMzH7

这句话很有趣:

[pid  1107] ioctl(14, DRM_IOCTL_AUTH_MAGIC, 0xfffff92b32d0) = -1 EACCES (Permission denied)

将14个点处理到(已删除(/dev/dri/card0。以下是所有打开的服务器句柄的列表:

https://pastebin.com/RTFNbEDW.

我唯一的线索是,在切换到主rootfs之前,switch_root((递归地删除initramfs中的所有文件,包括/dev/dri/card0(它在列表中显示为"已删除"标记(。事实上,新的应用程序已经与新的动态创建的devtmpfs进行了通信。但我仍然无法理解它是如何影响的,因为手柄还活着!如果主要/次要数字相同,那么谁在乎我们到底拥有哪个设备节点,以及它在哪个时刻被安装?所以,线索并不是最好的,我甚至不知道如何正确检查。

顺便说一句,这里还有一个服务器跟踪的grepped部分:

$ grep "AUTH_MAGIC" strace-wayland-log
[pid  1107] ioctl(14, DRM_IOCTL_AUTH_MAGIC, 0xfffff92b32d0) = 0
[pid  1107] ioctl(14, DRM_IOCTL_AUTH_MAGIC, 0xfffff92b32d0) = -1 EACCES (Permission denied)
[pid  1107] ioctl(14, DRM_IOCTL_AUTH_MAGIC, 0xfffff92b32d0) = -1 EACCES (Permission denied)
[pid  1107] ioctl(14, DRM_IOCTL_AUTH_MAGIC, 0xfffff92b32d0) = -1 EACCES (Permission denied)
[pid  1107] ioctl(14, DRM_IOCTL_AUTH_MAGIC, 0xfffff92b32d0) = -1 EACCES (Permission denied)
[pid  1107] ioctl(14, DRM_IOCTL_AUTH_MAGIC, 0xfffff92b32d0) = -1 EACCES (Permission denied)

很明显,第一个图形应用程序是正常授权的,但不是下面的。

有什么想法吗?

所以,原因是我的系统上的启动屏幕在/dev/dri/card0上调用DRM_IOCTL_DROP_MASTER(或DRM_IOCTL_SET_MASTER(,认为它是先运行的。

相关内容

  • 没有找到相关文章

最新更新