Debian大黄蜂问题

时间:2018-11-21 22:30:18

标签: nvidia debian-stretch optimus

我正在进行干净的最小Debian Stretch安装,仅安装了两个图形软件包。我告诉了这些:

sudo apt install xserver-xorg-core xinit bumblebee-nvidia primus primus-libs:i386 libgl1-nvidia-glx:i386

但是我可以将专有权bumblebee-nvidia与开源bumblebee交换。

我也将用户加入了大黄蜂组:

sudo adduser $USER bumblebee

重启后,我的Intel卡工作正常:

ziga@ziga-laptop:~$ glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Mobile 
OpenGL core profile version string: 3.3 (Core Profile) Mesa 13.0.6
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 13.0.6
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 13.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:

但是我的Nvidia卡是 Geforce 610M ,当用optirun调用时不起作用:

ziga@ziga-laptop:~$ optirun glxinfo | grep OpenGL
primus: fatal: failed to load any of the libraries: /usr/lib/x86_64-linux-gnu/nvidia/libGL.so.1:/usr/lib/i386-linux-gnu/nvidia/libGL.so.1:/usr/lib/nvidia/libGL.so.1
/usr/lib/x86_64-linux-gnu/nvidia/libGL.so.1: cannot open shared object file: No such file or directory
/usr/lib/i386-linux-gnu/nvidia/libGL.so.1: wrong ELF class: ELFCLASS32
/usr/lib/nvidia/libGL.so.1: cannot open shared object file: No such file or directory

如果我使用apt搜索自己的卡,则会收到以下提示:

ziga@ziga-laptop:~$ sudo apt search 610M
Sorting... Done
Full Text Search... Done
nvidia-legacy-304xx-driver/stable 304.137-5~deb9u1 amd64
  NVIDIA metapackage (304xx legacy version)

nvidia-legacy-304xx-kernel-dkms/stable 304.137-5~deb9u1 amd64
  NVIDIA binary kernel module DKMS source (304xx legacy version)

nvidia-legacy-304xx-kernel-source/stable 304.137-5~deb9u1 i386
  NVIDIA binary kernel module source (304xx legacy version)

xserver-xorg-video-nvidia-legacy-304xx/stable 304.137-5~deb9u1 amd64
  NVIDIA binary Xorg driver (304xx legacy version)

由此,我将安装nvidia-legacy-304xx-driver,但恐怕它不能与上面安装的其他软件包一起很好地工作。我是否还可能需要xserver-xorg-video-nvidia-legacy-304xx

任何人都可以向我解释要安装哪些软件包以及为什么吗?


好吧,我等不及了,我尝试安装xserver-xorg-video-nvidia-legacy-304xx。看起来该程序包确实与bumblebee-nvidia程序包冲突。安装后我得到了这个:

nvidia-legacy-304xx:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.9.0-8-amd64/updates/dkms/

depmod...

DKMS: install completed.
Setting up nvidia-legacy-304xx-driver (304.137-5~deb9u1) ...
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Processing triggers for glx-alternative-nvidia (0.8.3~deb9u1) ...
Processing triggers for menu (2.1.47+b1) ...
Processing triggers for update-glx (0.8.3~deb9u1) ...
Processing triggers for glx-alternative-nvidia (0.8.3~deb9u1) ...
update-alternatives: warning: forcing reinstallation of alternative /usr/lib/nvidia/bumblebee because link group glx is broken
Processing triggers for libc-bin (2.24-11+deb9u3) ...
Processing triggers for initramfs-tools (0.130) ...
update-initramfs: Generating /boot/initrd.img-4.9.0-8-amd64
Processing triggers for bumblebee (3.2.1-14) ...

我卸载了xserver-xorg-video-nvidia-legacy-304xx,并尝试安装nvidia-legacy-304xx-driver软件包,该软件包也安装了xserver-xorg-video-nvidia-legacy-304xx软件包。它没有返回警告,也没有错误,但是重新启动optirun glxinfo | grep OpenGL命令后仍然失败...

即使在应该稳定的Debian上,似乎也没有解决方案?


就像@Antonio Orizondo Leyva一样,我安装了他建议的软件包并执行了命令sudo update-alternatives --config glx,然后我为我的GPU选择了不同的选项:

There are 3 choices for the alternative glx (providing /usr/lib/glx).

  Selection    Path                       Priority   Status
------------------------------------------------------------
  0            /usr/lib/nvidia/bumblebee   125       auto mode
  1            /usr/lib/mesa-diverted      5         manual mode
  2            /usr/lib/nvidia             100       manual mode
* 3            /usr/lib/nvidia/bumblebee   125       manual mode

Press <enter> to keep the current choice[*], or type selection number: 

我尝试选择其中的每一个,然后重新启动,但是最终结果是相同的...除了第二个选项(nvidia)重启后,它找不到{{1} }之类的东西,所以甚至无法单独使用Nvidia卡!

还有其他想法吗?

2 个答案:

答案 0 :(得分:2)

我在GTX 1050上遇到过类似的问题。
我认为您可以绕过nvidia-detect命令,所以这是我在Debian Buster 64位内核4.17上所做的:

  1. 执行

    apt install bumblebee-nvidia linux-headers-$(uname -r)
    

    这应该安装nvidia-driver中所需的bbswitch-dkmsblacklist/etc/modprobe.d。您需要运行内核的标头来添加新模块(bbswithnvidia*,在我的情况下为nvidia-current)。

无需添加i386拱,并且一切正常,请检查您正在使用的glx提供程序

update-alternatives --config glx

将其设置为nvidia以外的任何选项,重新启动显示管理器并再次测试。

答案 1 :(得分:1)

阅读this Debian错误报告后,我意识到我应该安装软件包final PermissionStatus permission = await PermissionHandler() .checkPermissionStatus(PermissionGroup.location); 。这解决了我的问题,但是我为此不得不批评Debian,因为据说在他们的official Bumblebee webpage上使用此命令进行安装:

libgl1-nvidia-glx

但是此命令缺少关键的sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install bumblebee-nvidia primus primus-libs:i386 libgl1-nvidia-glx:i386 ,该libgl1-nvidia-glx必须与i386 cuonterpart一起安装才能使所有aps正常工作!

因此引用Debian:

  

虽然您是这个星球上最好的发行商,而且您似乎是最稳定的,但请确保像Arch一样保持您的官方Wiki更新!只有这样,您的用户才不会有像我这样的负面经历,更多的人会选择您的分布。