다음 패키지가 설치된 Ubuntu 14.04 시스템이 있습니다.
libegl1-mesa:amd64
libegl1-mesa-drivers:amd64
libgl1-mesa-dri:amd64
libgl1-mesa-dri:i386
libgl1-mesa-glx:amd64
libgl1-mesa-glx:i386
libglapi-mesa:amd64
libglapi-mesa:i386
libgles2-mesa:amd64
libglu1-mesa:amd64
libopenvg1-mesa:amd64
libwayland-egl1-mesa:amd64
mesa-utils
xvfb
xvfb에서 애플리케이션을 시작하고 싶습니다. 먼저 xvfb를 시작합니다.
$ Xvfb :1 -screen 0 1024x768x24 +extension GLX +render -noreset >> xsession.log 2>&1 &
그런 다음 xvfb 로그 파일을 확인하십시오.
Initializing built-in extension Generic Event Extension
Initializing built-in extension SHAPE
Initializing built-in extension MIT-SHM
Initializing built-in extension XInputExtension
Initializing built-in extension XTEST
Initializing built-in extension BIG-REQUESTS
Initializing built-in extension SYNC
Initializing built-in extension XKEYBOARD
Initializing built-in extension XC-MISC
Initializing built-in extension SECURITY
Initializing built-in extension XINERAMA
Initializing built-in extension XFIXES
Initializing built-in extension RENDER
Initializing built-in extension RANDR
Initializing built-in extension COMPOSITE
Initializing built-in extension DAMAGE
Initializing built-in extension MIT-SCREEN-SAVER
Initializing built-in extension DOUBLE-BUFFER
Initializing built-in extension RECORD
Initializing built-in extension DPMS
Initializing built-in extension Present
Initializing built-in extension DRI3
Initializing built-in extension X-Resource
Initializing built-in extension XVideo
Initializing built-in extension XVideo-MotionCompensation
Initializing built-in extension SELinux
Initializing built-in extension GLX
이는 오류가 없음을 나타냅니다. 또한 GLX가 올바르게 로드되는 것 같습니다. 이제 서버를 확인해 보면
$ glxinfo -display :1
알겠어요
name of display: :1
Xlib: extension "GLX" missing on display ":1".
...
Error: couldn't find RGB GLX visual or fbconfig
Xlib: extension "GLX" missing on display ":1".
...
Error: couldn't find RGB GLX visual or fbconfig
Xlib: extension "GLX" missing on display ":1".
...
실제로 GLX가 필요한 이 서버에서 실행하고 싶었던 애플리케이션이 실행되지 않았습니다.
여러 문서 페이지와 포럼을 확인한 후에도 여기서 무엇이 잘못되었는지 전혀 알 수 없습니다. GLX 확장이 올바르게 로드되지 않은 경우 X 서버 로그 파일에 오류가 표시되지 않는 이유는 무엇입니까? 확인해야 할 사항이 있나요?
답변1
Xvfb(X 가상 프레임 버퍼)는 Xsever 가상이며 실제 하드웨어 가속을 지원하지 않습니다.
OpenGL 호출을 생성해야 하는 경우 가상 GL, 실제 3D Xserver 및 2D 렌더링을 통해 Xvfb 또는 다른 2D Xserver에 대한 실제 호출을 분기합니다.
$ Xvfb :1 -screen 0 1024x768x24 +extension GLX +render -noreset >> xsession.log 2>&1 &
$ env DISPLAY=:1 vglrun glxinfo
답변2
내 로그 파일에는 내장 확장 GLX를 초기화하기 전에는 모든 것이 괜찮았지만 나중에는 괜찮았습니다.
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Internal error: Could not resolve keysym XF86AudioMicMute
Errors from xkbcomp are not fatal to the X server
아마도 핵심 문제는 xkbcomp일까요?
답변3
위키피디아에서페이지Xvfb는 다음과 같이 썼습니다. "진정한 디스플레이 서버와 달리 Xvfb는 구성, Randr 또는 GLX와 같은 최신 X11 확장을 지원하지 않습니다. Xdummy는 이러한 확장을 지원하고 Xvfb와 동일한 기능을 제공하는 새로운 대안입니다."