登录循环 - “BadValue(整数参数超出操作范围)” - 16.04

Jon*_*eld 7 nvidia xorg 16.04

我使用手动安装的 NVIDIA 361 驱动程序运行 Ubuntu 16.04 LTS。将驱动程序升级到 v367 后,我现在通过登录循环被 Unity 锁定,在.xsession-errors 中出现以下错误

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:  3 (X_GLXCreateContext)
  Value in failed request:  0x0
  Serial number of failed request:  32
  Current serial number in output stream:  33
openConnection: connect: No such file or directory
cannot connect to brltty at :0
Run Code Online (Sandbox Code Playgroud)

我还在Xorg日志中发现了这一点:

[ 2312.921302] NVRM: Your system is not currently configured to drive a VGA console
[ 2312.921304] NVRM: on the primary VGA device. The NVIDIA Linux graphics driver
[ 2312.921305] NVRM: requires the use of a text-mode VGA console. Use of other console
[ 2312.921305] NVRM: drivers including, but not limited to, vesafb, may result in
           NVRM: make sure that this kernel module and all NVIDIA driver
Run Code Online (Sandbox Code Playgroud)

然后进一步向下:

[  2850.609] (II) NOUVEAU driver Date:   Tue Dec 8 15:52:25 2015 +1000
[  2850.609] (II) NOUVEAU driver for NVIDIA chipset families :
[  2850.706] (EE) [drm] Failed to open DRM device for (null): -22
[  2850.706] (EE) [drm] Failed to open DRM device for (null): -22
[  2850.706] (EE) [drm] Failed to open DRM device for pci:0000:02:00.0: -22
[  2850.706] (EE) No devices detected.
[  2850.706] (II) Applying OutputClass "nvidia" to /dev/dri/card0
[  2850.706]    loading driver: nvidia
[  2850.706] (==) Matched nvidia as autoconfigured driver 0
[  2850.706] (==) Matched nvidia as autoconfigured driver 1
[  2850.706] (==) Matched nouveau as autoconfigured driver 2
[  2850.706] (==) Matched nvidia as autoconfigured driver 3
[  2850.706] (==) Matched nouveau as autoconfigured driver 4
[  2850.706] (==) Matched vesa as autoconfigured driver 7
[  2850.706] (II) LoadModule: "nvidia"
[  2850.706] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
[  2850.708] (II) Module nvidia: vendor="NVIDIA Corporation"
[  2850.708] (II) LoadModule: "nouveau"
[  2850.708] (II) Loading /usr/lib/xorg/modules/drivers/nouveau_drv.so
[  2850.708] (II) Module nouveau: vendor="X.Org Foundation"
[  2850.708] (II) UnloadModule: "nouveau"
[  2850.708] (II) Unloading nouveau
[  2850.708] (II) Failed to load module "nouveau" (already loaded, 21886)
[  2850.709] (II) LoadModule: "vesa"
[  2850.709] (II) Loading /usr/lib/xorg/modules/drivers/vesa_drv.so
[  2850.709] (II) Module vesa: vendor="X.Org Foundation"
[  2850.709] (II) NOUVEAU driver Date:   Tue Dec 8 15:52:25 2015 +1000
[  2850.709] (II) NOUVEAU driver for NVIDIA chipset families :
[  2850.709] (II) NVIDIA dlloader X Driver  364.19  Tue Apr 19 13:48:55 PDT 2016
[  2850.709] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
[  2850.709] (II) VESA: driver for VESA chipsets: vesa
[  2850.709] (WW) xf86OpenConsole: setpgid failed: Operation not permitted
[  2850.709] (WW) xf86OpenConsole: setsid failed: Operation not permitted
[  2850.709] (EE) [drm] Failed to open DRM device for (null): -22
[  2850.709] (EE) [drm] Failed to open DRM device for (null): -22
[  2850.709] (EE) [drm] Failed to open DRM device for (null): -22
[  2850.709] (EE) [drm] Failed to open DRM device for pci:0000:02:00.0: -22
[  2850.709] (EE) [drm] Failed to open DRM device for pci:0000:02:00.0: -22
Run Code Online (Sandbox Code Playgroud)

对此错误消息的网络搜索不会产生很多相关结果。

我试过降级到 v364,然后再回到 v361 无济于事 我试过清除 xserver-xorg、xserver-xorg-core、nvidia*、lightdm 无济于事

完全重新格式化和重新安装会产生巨大的破坏性,我想不惜一切代价避免这种情况。

.xsession-errors 中的错误消息始终保持不变。如何在不完全重新格式化和重新安装的情况下清除/恢复/重置我的设置和/或包和/或库到正常状态?

小智 8

添加+iglx/usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf.

[SeatDefaults] 
# Dump core 
xserver-command=X -core +iglx
Run Code Online (Sandbox Code Playgroud)

之后,您可以重新启动或 Ctrl-Alt-F1、登录和sudo service lightdm restart.

奇迹般有效


Jon*_*eld 5

我解决了这个问题。虽然我尝试手动卸载手动安装的 361 驱动程序,但它未能清除所有共享对象,因此我遇到的本质上是一个库问题。

使用清除所有 NVIDIA 软件包后apt,我解决了以下问题:

  1. 通过运行以下命令找到所有 361 驱动程序共享对象文件,不包括任何垃圾文件夹、主文件夹和 Steam 游戏文件夹:

    locate so.361.45 | egrep -vi "trash|steam|^/home"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 删除可疑的共享对象文件(有些包含单词,nvidia而有些只包含nv)。

  3. 运行ldconfig

  4. 运行ldd $( which glxinfo )

  5. 检查输出ldd并确保没有任何条目指向任何陈旧的 NVIDIA 361.45 共享对象。

  6. 重启。

  7. 通过 安装 NVIDIA 364 驱动程序apt

  8. 重启。