
꽤 많은 연구 끝에 동료에게 이 질문을 게시합니다. 그는 ssh -X
(또는 ) 을 통해 기존 Centos 4 서버에 연결하고 -Y
그곳에서 일부 X 애플리케이션을 실행하려고 합니다. 수년 동안 잘 작동했지만 클라이언트 PC에 대한 최근 업데이트(Centos 7 및 Ubuntu 모두)로 인해 이제는 이것이 불가능해졌습니다. 그의 앱이 멈추고 단순히 실행하려고 하면 glxgears
충돌이 발생합니다.
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 150 (GLX)
Minor opcode of failed request: 3 (X_GLXCreateContext)
Value in failed request: 0x0
Serial number of failed request: 19
Current serial number in output stream: 21
정말 클라이언트 버전 문제네요. 클라이언트 측에서 이전 Centos 6으로 되돌리면 다시 작동합니다. 서버 측 X11 로그에는 아무것도 없습니다. 나는 strace glxgears
특별한 것을 눈치채지 못한 채 달렸다 . 이것을 더 자세히 진단하려면 어떻게 해야 합니까?
편집: 최신 Linux에서 간접 렌더링 컨텍스트를 강제 적용하려는 다음 시도는 실패합니다.
glxinfo -i
name of display: :0
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 24 (X_GLXCreateNewContext)
Value in failed request: 0x0
Serial number of failed request: 39
Current serial number in output stream: 40
간접 렌더링을 다시 활성화하기 위해 다음을 시도했습니다. 내가 착각하지 않는 한, 모든 작업은 클라이언트 컴퓨터에서 수행되어야 합니다.
/etc/X11/xorg.conf의 화면 또는 장치 섹션에 다음을 추가합니다.
옵션 "AllowIndirectGLXProtocol" "참"
/usr/bin/startx(또는 startx가 있는 곳)에서:
defaultserverargs="+iglx"
/usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf에서 다음 줄을 변경합니다.
xserver-명령=X -core +iglx
KDE를 시작하기 전(예: .kde/env/igl.sh)
LIBGL_ALWAYS_INDIRECT=1 내보내기
그 중 아무것도 작동하지 않습니다.
답변1
리눅스 워크스테이션
반대로, 많은 버전의GDM은 제공하지 않습니다+iglx
와 같은 인수를 전달하는 방법입니다 Xorg
. 이에 대응하여 새로운 X.org 버전에는IndirectGLX
옵션(또한보십시오예시 xorg.conf
텍스트).
해당 옵션이 없으면 해결 방법이 있습니다.Xorg
쉘 스크립트로 자신을 래핑:
mv /usr/bin/Xorg /usr/bin/Xorg.original
echo -e '#!/usr/bin/env bash\nexec /usr/bin/Xorg.original "$@" +iglx' > /usr/bin/Xorg
chmod +x /usr/bin/Xorg
chcon --type=bin_t /usr/bin/Xorg
macOS 워크스테이션(XQuartz)
그냥 실행
defaults write org.macosforge.xquartz.X11 enable_iglx -bool true
XQuartz가 실행 중이면 다시 시작하세요. (오타 주의: 도메인 및 변수 이름에 대한 오류 검사는 없습니다.) 최신 버전에서는 더 간단한 org.xquartz.X11
.