我想从与 X11 服务器通信的应用程序进行 OpenGL 渲染。应用程序读取变量的值DISPLAY
。
我可以使用 CentOS 7 机器,它有一个很好的显卡,能够进行 3D 渲染,但我没有插入显示器。
当我运行xstart
, 启动 X11 服务器时,出现以下错误:
Fatal server error:
(EE) no screens found(EE)
如何在没有物理显示器的情况下启动 X11 服务器以在显卡上进行渲染?
这个盒子位于服务器机房中,因此我无法将物理显示器插入其中。
此外,xvfb
软件渲染器可能对此任务没有用处,因为它不处理渲染所需的指令。我需要使用图形适配器。
以下是我可以使用的图形适配器:
# lspci | egrep 'VGA|3D'
04:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1080] (rev a1)
0a:00.0 VGA compatible controller: Matrox Electronics Systems Ltd. G200eR2 (rev 01)
这是我的xorg.conf
文件:
# more /etc/X11/xorg.conf
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 375.20 (buildmeister@swio-display-x86-rhel47-06) Tue Nov 15 17:49:44 PST 2016
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
FontPath "/usr/share/fonts/default/Type1"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 28.0 - 33.0
VertRefresh 43.0 - 72.0
Option "DPMS"
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
我可以发布任何其他有用日志的记录。感谢您的任何建议!
答案1
我以前遇到过这个问题。 不幸的是,我能想到的最佳答案是硬件解决方案:通过将 VGA 终结器插入 VGA 输出来欺骗显卡,使其认为已安装显示器。您可以在家制作一个或购买一个;谷歌搜索“VGA终结者”会返回大量两者的结果。
另一种选择可能是在无头系统上运行 VNC 服务器,但我不确定显卡是否可以渲染到 VNC 输出。