首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ubuntu20.04 libGL错误:加载驱动程序失败

Ubuntu20.04 libGL错误:加载驱动程序失败
EN

Ask Ubuntu用户
提问于 2022-06-07 07:35:31
回答 2查看 20.1K关注 0票数 2

我知道类似的问题被问了无数次,但到目前为止,没有一个解决方案对我有效。让我们从头开始。

我有一个工作站,带有一个运行Ubuntu20.04的NVidia RTX A5000。在今天的事件之前,我能够使用SSH连接到我的工作站,并在Mac上使用OpenGL窗口呈现XQuartz。

今天,我在工作站试图运行一个窗口程序,并得到一个“未能建立dbus连接”错误。在谷歌搜索之后,这似乎是因为我的驱动程序中有一个bug (495.44,提到了这里)。我决定向司机汇报情况。“附加驱动程序”选项卡中的所有选项都是灰色的,最后它说我正在使用手动安装的驱动程序。我偶然遇到这个问题跑了

代码语言:javascript
运行
复制
sudo ubuntu-drivers autoinstall

没有打嗝就跑了。然后我重新启动机器,没有获得登录屏幕,而是用黑色屏幕和顶部闪烁的白色光标来迎接我。幸运的是,我还能把它塞进去。过了一会儿,我发现ubuntu-drivers已经安装了nvidia-driver-470。我按照关于这个答案的指示删除了它

代码语言:javascript
运行
复制
dpkg -P $(dpkg -l | grep nvidia-driver | awk '{print $2}')
apt autoremove

我没有安装noveau ( Nvidia驱动程序自述称这是个坏主意)。这次我重新启动了机器并获得了登录屏幕。打开“附加驱动程序”显示,我回到了手动安装的(和by )驱动程序(我也通过运行nvidia-smi确认了这一点)。

这一次我决定手动安装驱动程序,然后运行

代码语言:javascript
运行
复制
sudo apt install nvidia-driver-510

我重启了电脑,这次一切都正常了。我到了登录屏幕,bug消失了,我成功地运行了我想要的应用程序(我还发现我用不正确的参数调用它,这让我怀疑这一切是否都是徒劳的……)。当我使用附加在工作站上的显示器时,一切都很好。

我现在遇到的问题是如何在SSH上进行渲染。作为参考,xclock工作,所以我没有完全失去远程X渲染。对于其他应用程序(我认为常见的线程是它们使用GL,但我不确定),我得到以下错误

代码语言:javascript
运行
复制
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

我看到一些回答说要运行apt-get intall -y mesa-utils libgl1-mesa-glx。我错过了libgl1-mesa-glx,但这并没有解决问题。使用调试信息运行GL应用程序(如glxgearsglxinfo ),我得到以下信息

代码语言:javascript
运行
复制
$ LIBGL_DEBUG=verbose glxinfo
name of display: localhost:10.0
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  149 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  16
  Current serial number in output stream:  17

$ LIBGL_DEBUG=verbose glxgears
libGL: MESA-LOADER: dlopen(/usr/lib/x86_64-linux-gnu/dri/swrast_dri.so)
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/[my username]/.drirc: No such file or directory.
libGL: Can't open configuration file /etc/drirc: No such file or directory.
libGL: Can't open configuration file /home/[my username]/.drirc: No such file or directory.
libGL: Disabling server's aux buffer support
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Error: glXCreateContext failed

我尝试了几种方法,其中包括从“附加驱动程序”选项卡中选择新驱动程序(在安装Nvidia驱动程序后不再变灰)。什么都没用。我在某个地方读到这可能是由于Nvidia驱动程序造成的,所以我决定卸载nvidia-driver-510并返回手动安装的驱动程序。然而,在重新启动后,我的屏幕分辨率降低到640x480,所有东西都超出了比例,并且选择了新的驱动程序。我卸载了xserver-xorg-video-nouveau并重新启动,希望得到手动安装的驱动程序,但是一旦我登录,我又有了新的(尽管没有安装xserver-xorg-video-nouveau,我检查了)。我再次安装了nvidia-driver-510以使我的屏幕恢复正常。

我看到其他有相同问题的用户能够通过安装特定于发行版的软件包(mesa-libGLw-devel.x86_64在CentOS7中,mesa-dri-drivers在Redhat中)来解决这个问题,但是我不知道如何为我的发行版找到相应的包。其他答案建议卸载Nvidia驱动程序,但仅凭这一点还不足以恢复到手动安装的驱动程序( but,但正在工作)。除了noveau驱动程序之外,还有其他我可能错过的包吗?如果是的话,我怎样才能找到那是甚麽包裹呢?

如果这可能会有帮助的话,下面是我在其他问题中看到的人们要求的更多信息。

代码语言:javascript
运行
复制
$ sudo ldconfig -p | grep -i gl.so
libwayland-egl.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libwayland-egl.so.1
libcogl.so.20 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcogl.so.20
libOpenGL.so.0 (libc6,x86-64) => /lib/x86_64-linux-gnu/libOpenGL.so.0
libOpenGL.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libOpenGL.so
libGL.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6) => /lib/i386-linux-gnu/libGL.so.1
libGL.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libGL.so
libEGL.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libEGL.so.1
libEGL.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libEGL.so

libGL.solibGL.so.1都指向/lib/x86_64-linux-gnu/libGL.so.1.7.0

代码语言:javascript
运行
复制
$ lspci -k | grep -EA3 'VGA|3D|Display'
08:00.0 VGA compatible controller: NVIDIA Corporation Device 2231 (rev a1)
    Subsystem: NVIDIA Corporation Device 147e
    Kernel driver in use: nvidia
    Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia

这是个很长的问题。谢谢你一路读到这里。

EN

回答 2

Ask Ubuntu用户

发布于 2022-07-24 14:37:19

你想做什么?

“我现在的问题是在SSH上进行渲染”是一个非常宽泛的短语。它可能意味着:

  1. 在服务器中呈现,不显示任何内容(即屏幕外呈现)
  2. 在服务器中呈现,在服务器显示中显示命令
  3. 在服务器中呈现,将结果转发给计算机。
  4. 将X11命令从服务器转发到客户端计算机,在客户端计算机中呈现

通常,如果您将SSH放入服务器并运行一个使用GPU的命令,则只有屏幕外呈现才能工作(选项1),但大多数程序都没有编码以处理此问题;因此,它们将无法处理您所拥有的神秘错误消息(因为它们必须使用EGL接口与GPU对话,而大多数OpenGL程序将尝试使用GLX X11或EGL X11)。

这可以通过设置显示环境变量(即DISPLAY=:0.0 glxinfo )来解决,它将变成选项2(在服务器中呈现,在服务器的显示中显示命令)。

如果您想要选项3,这是很难做到的;所以我建议您使用一个可以很好地处理此任务的替代软件,如Nomachine、TeamViewer或Anydesk (警告:它们都不是FOSS)。您可以尝试其他工具,如X2Go或VNC,但不幸的是,在我的经验中,它们没有我提到的其他工具的延迟或质量。

您没有粘贴用于在SSH上打开xclockglxinfo的命令,这会产生深远的影响。

另外,比较SSH中的env输出与主机上的终端(从GNOME/Xfce/etc开始)可以帮助您识别任何错误或缺失。

swrast

swrast由libgl1-mesa-dri提供。

尝试:

  1. sudo apt install --reinstall libgl1-mesa-dri
  2. 卸载由Ubuntu提供的NVIDIA驱动程序
  3. 其网站安装NVIDIA驱动程序(警告:在很少情况下,安装程序会使系统处于无法引导到GUI的状态,请确保您有SSH访问权限,以便可以将其恢复到工作状态,例如运行./installer --uninstall )。

默认情况下,Ubuntu的软件包支持NVIDIA驱动程序,并禁用或破坏Mesa驱动程序;而官方安装程序使Mesa与NVIDIA驱动程序一起工作。在像您这样的用例中,这可能导致非常不同的结果。

票数 1
EN

Ask Ubuntu用户

发布于 2023-02-03 22:34:56

我遇到了类似的问题。

这个问题帮助我理解了发生了什么:NVIDIA 440.64 32位库包破坏64位驱动程序包

步骤:

  1. 删除所有与NVIDIA驱动程序和数据自动化系统相关的内容:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#removing-cuda-toolkit-and-driver

sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \ "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"

sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"

sudo apt-get autoremove

  1. 支持32位库
代码语言:javascript
运行
复制
sudo dpkg --add-architecture i386
sudo apt update
  1. 通过包管理器安装驱动程序,以及32位OpenGL

sudo apt-get install nvidia-driver-515

这还将安装libnvidia-gl-515libnvidia-gl-515:i386

您可能需要在安装前检查ppa源代码:apt-cache policy nvidia-driver-515

NVIDIA在2022年4月进行了GPG更新:https://developer.nvidia.com/blog/updating-the-cuda-linux-gpg-repository-key/

  1. sudo reboot

最后,我和Nvidia 515的司机一起工作。

请注意,我不必在我的机器上安装CUDA。如果您需要CUDA,根本的问题是您必须做一些解决办法,因为没有包括32位库:

https://forums.developer.nvidia.com/t/latest-cuda-driver-from-deb-repository-breaks-steam/70950

我想在NVIDIA方面讨论这个问题。问题是最新的CUDA驱动程序不再捆绑任何32位兼容性库。这破坏了需要32位兼容性的软件,如蒸汽。如果下一个CUDA驱动程序能够重新包含这些内容,那么我就可以拥有一台运行CUDA和蒸汽的Ubuntu机器,这将是非常棒的。这并不是真正的问题,你只需要用正确的方式安装驱动程序和cuda:

  • 添加ubuntu图形ppa:https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa
  • 安装驱动程序(sudo apt安装nvidia- driver -430)
  • 下载cuda .deb将回购添加到您的系统(前三个步骤)
  • 从下载页面上的安装说明)不要安装cuda
  • 相反,运行sudo apt安装库达-工具箱-10-1。
票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1412683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档