pio*_*rek 5 xorg opengl sudo graphics nvidia
今天我做了更新并glx停止为非 root 用户工作:
$ glxinfo
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: 81
Current serial number in output stream: 82
Run Code Online (Sandbox Code Playgroud)
但是当我以 root 身份运行它时,一切都很好:
$ sudo glxinfo
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
server glx extensions:
GLX_ARB_create_context, GLX_ARB_create_context_profile,
...
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 430/PCIe/SSE2
OpenGL core profile version string: 4.2.0 NVIDIA 304.132
OpenGL core profile shading language version string: 4.20 NVIDIA via Cg compiler
...
Run Code Online (Sandbox Code Playgroud)
Ubuntu 14.04。但是这里的opensuse报告了同样的问题
$ uname -a
Linux xxx 4.4.0-45-generic #66~14.04.1-Ubuntu SMP Wed Oct 19 15:05:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
唯一未注释的行/etc/X11/Xwrapper.config是
allowed_users=console
Run Code Online (Sandbox Code Playgroud)
并且没有具有该名称的组或用户。
英伟达设备权限:
$ ls -l /dev/nvid*
crw-rw-rw- 1 root root 195, 0 lis 5 00:24 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 lis 5 00:24 /dev/nvidiactl
Run Code Online (Sandbox Code Playgroud)
这个解决了我的问题:
显然,目前唯一的解决方案是降级到以前的驱动程序版本(304.131)。
您可以通过以下方式找到 Ubuntu 的 304.131 驱动程序:
- 转到https://launchpad.net/ubuntu/+source/nvidia-graphics-drivers-304/+publishinghistory
- 找到您需要的版本,然后点击版本号
- 在下一页上,在“Builds”下查找您的 Ubuntu 版本,然后单击版本名称后面的
amd64或链接i386- 在下一页上,在“构建文件”下查找以“nvidia-304_304.131”开头的 .deb 文件。下载该文件。
- 打开终端并运行
sudo dpkg -i *path-to-downloaded-.deb-file*以安装下载的版本
稍后只需锁定软件包版本:sudo apt-mark hold nvidia-304。当 nvidia 修复其驱动程序时,不要忘记解锁软件包:sudo apt-mark unhold nvidia-304