带有 Nouveau 驱动程序的 Nvidia Optimus

带有 Nouveau 驱动程序的 Nvidia Optimus

我正在尝试让optirun命令与我的计算机上的 FOSS Nouveau 驱动程序一起使用,该计算机具有嵌入式图形单元和离散图形处理单元。这是命令提供的我的设置lspci | egrep -i 'vga|3d'

00:02.0 VGA compatible controller: Intel Corporation Skylake GT2 [HD Graphics 520] (rev 07)
01:00.0 3D controller: NVIDIA Corporation GK208BM [GeForce 920M] (rev a1)

根据Nouveau CodeNames 网站页面,我的 GPU 由 NV108 (GK208) Nouveau 驱动程序支持。所以我没有理由不能让它与命令一起工作optirun,对吗?但是,在遵循经典安装过程之后

  1. 卸载专有驱动程序
  2. 安装bumblebeemesa-utils打包
  3. 安装虚拟GL

我无法让optirun命令工作。作为例子,optirun glxgears 给出错误

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) 
[ERROR]Aborting because fallback start is disabled

问题似乎出在内核中的 Nouveau 模块上:

$ optirun -vv glxgears
----------------------
[DEBUG]Reading file: /etc/bumblebee/bumblebee.conf
[DEBUG]optirun version 3.2.1 starting...
[DEBUG]Active configuration:
[DEBUG] bumblebeed config file: /etc/bumblebee/bumblebee.conf
[DEBUG] X display: :8
[DEBUG] LD_LIBRARY_PATH: 
[DEBUG] Socket path: /var/run/bumblebee.socket
[DEBUG] Accel/display bridge: auto
[DEBUG] VGL Compression: proxy
[DEBUG] VGLrun extra options: 
[DEBUG] Primus LD Path: /usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus:/usr/lib/primus:/usr/lib32/primus
[DEBUG]Using auto-detected bridge virtualgl
[INFO]Response: No - error: [XORG] (EE) 
[ERROR]Cannot access secondary GPU - error: [XORG] (EE) 
[DEBUG]Socket closed.
[ERROR]Aborting because fallback start is disabled.
[DEBUG]Killing all remaining processes.

我尝试过的

/etc/bumblebee/bumblebee.conf我试图强制 Optimus 在by 设置中使用 Nouveau 驱动程序Driver=nouveau。没什么区别。


我修复了什么

最初我在执行命令时遇到了另一个错误:

[ERROR]Cannot access secondary GPU - error: [XORG] (EE) 
[ERROR]Failed to load module "mouse" (module does not exist, 0)

我通过安装丢失的软件包修复了它xserver-xorg-input-mouse

答案1

通过继续研究,我终于找到了解决问题的方法。

解决方案:不要使用Optimus在GPU之间切换

Primus 和 Optimus 程序旨在与 Nvidia 专有驱动程序一起使用。因此,不建议将它们与 Nouveau 驱动程序一起使用。 Linux 内核具有允许您切换 GPU 的工具,而无需安装其他程序。有问题的工具是VGA切换器。请注意,此工具仅适用于开源驱动程序。

默认情况下,该工具在您的系统上可能未激活,因此需要进行一些操作。要检查该工具是否已启用,请查找开关文件

# cat /sys/kernel/debug/vgaswitcheroo/switch

就我而言,该工具未激活,我只需卸载 Bumblebee 即可解决问题。如果卸载 Bumblebee 后问题仍然存在,请按照此中的说明进行操作文章

现在vga_switcheroo已启用,您可以使用以下命令关闭活动 GPU

# echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

并激活专用卡

# echo DIS > /sys/kernel/debug/vgaswitcheroo/switch

或激活集成卡

# echo IGD > /sys/kernel/debug/vgaswitcheroo/switch

参考

相关内容