0

我在远程无头 ubuntu 服务器中有一个显卡。我已将 nvidia-xconfig 设置为进行虚拟显示。我需要虚拟 x 服务器,而不是 xvfb,以无头运行统一游戏,但录制游戏渲染视频。xvfb 确实可以正常工作,但它不使用显卡,这使得渲染非常慢。

如果我运行单个游戏,这适用于 xinit。

xinit ./game.x86_64 开始游戏并毫无问题地渲染游戏。

但是,当我尝试使用不同的 x 服务器同时启动多个游戏时:

xinit ./game1.x86_64 -- :0

xinit ./game2.x86_64 -- :1

这不能正确渲染。其中一个游戏(最先开始的那个)没有渲染。(查看录制的视频)据我所知,这是因为单个显卡只能运行单个x-server。

然后,我通过调整 xorg.conf 设置多个屏幕并尝试

xinit ./game1.x86_64 -- :0.0

xinit ./game2.x86_64 -- :0.1

然而,由于 xinit 试图启动一个新服务器,后者不起作用,告诉已经有一个 x-server 在 X:0 运行

如果我搜索多显示器 x-server 设置,我只能找到真实的显示器设置,但我需要的是虚拟显示器设置。

有没有办法在无头服务器中启动多个需要屏幕的应用程序?

我想我需要知道的是

  1. 一种启动具有多个屏幕的 x-server 并告诉应用程序使用哪个屏幕或

  2. 一种在控制台上远程使用 Windows 管理器的方法

如果有更好的解决方案,或者我错过了一些东西,那也会很有帮助。

4

1 回答 1

0

我误解了 xinit 的工作原理。我通过在后台没有任何客户端(如 tmux)运行 xinit 来解决这个问题

xinit或者xinit -- :0

然后,指定要使用的显示器。当然,在 xorg.conf 中设置了多个监视器。为了统一,仅导出显示环境变量就足够了。

export DISPLAY=:0.0游戏1

export DISPLAY=:0.1游戏2

日志说统一识别两个显示器,但game1说

:0.0 display is 'display 0 (Primary display)'

而game2说

:0.1 display is 'display 0 (Primary display)'

我的误解是我认为 xinit 只与客户端应用程序一起使用,尽管 xinit 可以在没有任何客户端应用程序的情况下运行并且只是在后台运行。

于 2021-01-24T14:26:54.753 回答