在 Clevo N871EJ1 笔记本电脑上使用 NVidia GPU

在 Clevo N871EJ1 笔记本电脑上使用 NVidia GPU

我这里有一台 Clevo N871EJ1 (Schenker Media 17) 笔记本电脑,这让我很头疼。我尝试安装 Ubuntu 18.10、Debian Stretch 和 Debian Buster(测试),但在安装过程中或安装后都被锁定,并出现“CPU 卡住”内核消息。通过调用lspci立即锁定机器的命令行可以轻松重现。我能够通过指定pci=noacpi内核参数来解决这个问题,现在一切正常,除了 NVidia GPU,这就是我的问题所在(刚刚提到了初始锁定问题,以防相关)。

该笔记本电脑有两个 GPU:

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Mobile)
01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 Mobile] (rev a1)

机器的固件(仅限 UEFI,无传统模式)几乎没有配置选项,因此无法选择专用 GPU。所以我猜想这里正在使用这个可怕的 NVidia Optimus 东西。

Intel GPU 在视频加速和 3D 加速方面没有任何问题,所以这很好。但如果不使用 GTX 1050 就太可惜了。

所以我安装了bumblebee专有的 nvidia 驱动程序(Debian 软件包nvidia-driver版本 390.87-6,内核 4.19.12-1),确保 nouveau 驱动程序已正确列入黑名单,但它不起作用:

$ optirun glxinfo
[29571.477699] [ERROR]Cannot access secondary GPU - error: Could not load GPU driver

[29571.477772] [ERROR]Aborting because fallback start is disabled.

在内核日志中我看到了这一点:

[29571.206327] nvidia: module license 'NVIDIA' taints kernel.
[29571.206329] Disabling lock debugging due to kernel taint
[29571.224868] nvidia-nvlink: Nvlink Core is being initialized, major device number 240
[29571.225080] nvidia 0000:01:00.0: can't find IRQ for PCI INT A; please try using pci=biosirq
[29571.225082] NVRM: Can't find an IRQ for your NVIDIA card!
[29571.225083] NVRM: Please check your BIOS settings.
[29571.225083] NVRM: [Plug & Play OS] should be set to NO
[29571.225083] NVRM: [Assign IRQ to VGA] should be set to YES 
[29571.225085] nvidia: probe of 0000:01:00.0 failed with error -1
[29571.225095] NVRM: The NVIDIA probe routine failed for 1 device(s).
[29571.225095] NVRM: None of the NVIDIA graphics adapters were initialized!
[29571.266406] nvidia-nvlink: Unregistered the Nvlink Core, major device number 240

当我按照输出中的提示进行设置时,pci=biosirq机器会在启动过程中再次锁定。固件中也没有“即插即用操作系统”或“将 IRQ 分配给 VGA”的选项(仅限 UEFI,无传统模式)。

那么我还能尝试什么来让 NVidia GPU 正常工作呢?

答案1

为了回答我自己的问题,我终于在这里找到了解决方案:

所以实际的问题是,当遇到关闭的 NVidia GPU 时,X Server 和 lspci 会冻结系统。我猜想设置内核选项pci=noacpi只是通过完全中断对 NVidia GPU 的访问(无法加载驱动程序)来意外地解决了这个问题。

修复方法是修改/etc/bumblebee/bumblebee.conf

  • 设置PMMethodnone
  • 设置AlwaysUnloadKernelDrivertrue

在此之后,我能够删除pci=noacpi内核选项,系统可以正确启动,lspci不再冻结,并且我能够将 NVidia GPU 与optirun.

相关内容