错误现象
运行PRIMAL2的代码时,出现错误提示pyglet.gl.ContextException: Could not create GL context
检查OpenGL版本
输入命令$ glxinfo | grep “OpenGL version”
提示为找不到命令
使用命令$ glxinfo | grep "OpenGL version"查看OPENGL版本
提示找不到命令 “glxinfo”
使用$ sudo apt install mesa-utils命令安装,安装成功。
再次输入命令$ glxinfo | grep “OpenGL version”
错误提示如下
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 152 (GLX)
Minor opcode of failed request: 24 (X_GLXCreateNewContext)
Value in failed request: 0x0
Serial number of failed request: 110
Current serial number in output stream: 111
怀疑是显卡驱动有问题
使用命令行$ nvidia-smi检查显卡驱动
报错如下
Failed to initialize NVML: Driver/library version mismatch
NVML library version: 535.161
确认显卡驱动有问题,重装驱动
卸载旧驱动$ sudo apt-get purge nvidia-*
运行命令$ sudo apt-get install nvidia-driver
错误提示
E: 无法定位软件包 nvidia-driver
添加Graphic Driver PPA
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
查看合适的驱动版本
$ ubuntu-drivers devices
显示如下
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00002684sv00007377sd00002000bc03sc00i00
vendor : NVIDIA Corporation
driver : nvidia-driver-525 - distro non-free
driver : nvidia-driver-535 - distro non-free recommended
driver : nvidia-driver-550 - third-party non-free
driver : nvidia-driver-525-server - distro non-free
driver : nvidia-driver-525-open - distro non-free
driver : nvidia-driver-545 - distro non-free
driver : nvidia-driver-545-open - distro non-free
driver : nvidia-driver-535-open - distro non-free
driver : nvidia-driver-550-open - third-party non-free
driver : nvidia-driver-535-server-open - distro non-free
driver : nvidia-driver-535-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
使用命令$ sudo apt install nvidia-driver-535安装,安装成功。
使用命令行$ nvidia-smi检查,仍然报错
报错如下
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
参考链接https://blog.csdn.net/xiaojinger_123/article/details/121161446
猜测是内核不匹配
使用命令$ dpkg --get-selections |grep linux-image,查看已经安装的内核如下
linux-image-5.19.0-32-generic deinstall
linux-image-5.19.0-35-generic deinstall
linux-image-5.19.0-43-generic deinstall
linux-image-5.19.0-45-generic deinstall
linux-image-5.19.0-46-generic deinstall
linux-image-6.2.0-32-generic deinstall
linux-image-6.2.0-33-generic deinstall
linux-image-6.2.0-34-generic deinstall
linux-image-6.2.0-37-generic deinstall
linux-image-6.2.0-39-generic deinstall
linux-image-6.5.0-14-generic install
linux-image-6.5.0-21-generic install
linux-image-generic-hwe-22.04 install
使用命令$ uname -a,查看正在使用的内核如下
Linux 13 6.5.0-21-generic #21~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Feb 9 13:32:52 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
可见正在使用的内核6.5.0-21-generic 没有被安装。
安装该版本$ bash
sudo apt install linux-image-6.5.0-21-generic
重启系统
使用命令行$ nvidia-smi检查,显卡驱动正常。
输入命令$ glxinfo | grep "OpenGL version"检查OpenGL版本,显示如下。
OpenGL version string: 4.6.0 NVIDIA 535.161.07