如何成功运行第二个 X 会话?

如何成功运行第二个 X 会话?

我正在尝试使用标准用户(名为 stduser)在 tty 上运行startx -- :1 vt1,该用户已经按照以下答案使用 XFCE 本机登录到 Debian 10:https://unix.stackexchange.com/a/85384

然后显示器似乎也会闪烁,但这最终失败了:

(==) Log file: "/var/log/Xorg.1.log"
(==) Using config directory: "/etc/X11/xorg.conf.d"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
xinit: connection to X server lost

根据/var/log/Xorg.1.log,一切看起来都很好,直到这些行:

[  3585.25] (++) using VT number 1
[  3585.25] (II) systemd-logind: logind integration requires -keeptty and -keeptty was not provided, disabling logind integration
[  3585.26] (II) xfree86: Adding drm device (/dev/dri/card0)
[  3585.26] (EE) /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied

这似乎适合并确认了软件问题,因为sudo startx -- :1 vt1它完美地工作了。但这不是我想要的,因为我无法在以 root 身份登录时运行某些软件。

这就是我陷入困境的地方,因为大多数线索都与具有 Optimus(Intel iGPU + Nvidia GPU)的 PC 有关。

一些细节:

  • 我只有大约十年前的英特尔高清显卡(没有像英特尔 Iris 及其 eDRAM/L4 缓存/HBM 那样奇特的东西,也没有任何 AMD、Nvidia 和糟糕的旧英特尔 GMA GPU)。
  • 桌面管理器是lightdm.
  • /home/stduser/.profile设置为导出DISPLAY=:0.0XAUTHORITY=/home/stduser/.Xauthority设置为环境变量。
  • 由于一些显示/会话问题得到了解决(但这仍然没有帮助),因此也应用了此修复:为什么我无法从“root”运行 GUI 应用程序:“未指定协议”?
  • startx -- :1 vt1完美适用于 AntiX(轻量级无 systemd Debian)。

所以问题是:如何使用相同的标准用户成功启动另一个 X 会话?


更新1:应用 xhienne 提示

  • X :1似乎工作“更好”,但只显示黑屏。
  • xinit -- :1工作得“更好”,在黑屏上显示了一个无窗口的 xterm,我现在可以移动鼠标光标。

但是,同样的错误仍然发生,(已更新,见上文)中有一些更有趣的行/var/log/Xorg.1.log,这似乎与systemd-logind.

更新2: 这确实主要是一个系统问题,照常

您需要执行以下操作:

  1. 启用早期 KMS通过将i915(例如您的 GPU 驱动程序,如果它支持早期 KMS)附加到文件/etc/initramfs-tools/modules和一个结束行字符(一个简单的空新行)。保存它,然后用于update-initramfs -u更新您的 initramfs。

  2. 创建一个/etc/modprobe.d/i915-kms.conf文件,然后添加options i915 modeset=1到其中和常用的结束行字符,保存更改。

  3. 重新启动您的电脑。

现在,运行以下命令会给出:(即将更新,立即测试)。

但是,根据经验:当 Debian 上出现故障时,请尝试 AntiX 并查看这是否是 systemd 问题。

更新 2.1:由于某种原因,i915 modeset=1即使在update-initramfs -u.所以我拔出了核武器:

  • update-initramfs -u -k all, 然后
  • 使用grub-customizer>General settings选项卡>kernal parameters框添加i915.modesetting=1并保存编辑,
  • 重启,
  • 选择要启动的内核,按下e可编辑内核参数,
  • 并再次放置i915.modeset=1(确保它在那里),然后
  • 按 F10 启动。
  • 检查了一下,cat /sys/module/i915/parameters/modeset返回了1,确实如此。

答案1

您可能发现了一个稍微不同的途径来解决这个已知的错误:https://gitlab.freedesktop.org/xorg/xserver/-/issues/1021

基本上,打开设备的第一个进程会自动获得自动赋予它的 DRM“主”功能,因此它可以执行诸如drmSetInterfaceVersion()和 之类的操作drmGetBusId()(后者以前者为先决条件),而无需 root。但任何其他尝试执行相同操作的进程需要已经具有 DRM 主功能或 CAP_SYS_ADMIN(通常 CAP_SYS_ADMIN 相当于root)。这是X服务器硬件探测例程的作者没有想到的。

该错误导致了两个修复:

但看起来这些修复还没有出现在 Debian 10 上(至少还没有)。对于您的情况,第一个修复将是重要的。

可以说,可能还有第三个修复的地方:如果不先做的话,实际的总线 ID 就不可用,drmSetInterfaceVersion()这一事实可能需要修复。

相关内容