系统信息
- MSI Creator 15 笔记本电脑
- NVIDIA GeForce RTX 2070 SUPER 移动版 / Max-Q
- 外接 LG Ultrawide 显示器
- Windows 10 / Ubuntu 20.04 双启动
问题
我已经在我的 Ubuntu 20.04 机器上成功使用 nvidia 455 驱动程序大约六个月了。我很少使用 Windows 分区,但昨天我在使用它。关闭 Windows 10 并返回 Ubuntu 后,我的外接显示器完全停止工作。
(注意:Windows 可能与此问题无关——重新启动可能会让 Ubuntu 有机会更新软件包并自我破坏)
显然,NVIDIA 驱动程序不再起作用。运行nvidia-smi
和其他命令产生以下错误:
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
在谷歌上搜索答案,大多数解决方案都建议在发生这种情况时重新安装 NVIDIA 驱动程序。请注意,我需要图形驱动程序以及 CUDA 工具包等nvcc
。
清除 Nvidia
我尝试过许多不同的解决方案,每当我遇到困难并需要重新开始时,我就会运行这些命令。
sudo apt purge nvidia*
sudo apt purge libnvidia*
sudo apt autoremove
通常,由于新安装的驱动程序导致 Ubuntu 在重启后卡在启动过程中,所以我会在恢复模式下运行这些程序。
我还检查dpkg -l | grep nvidia
并删除了安装过程中遗留的所有软件包。当我想安装旧版本的驱动程序时,这是必要的。
尝试的解决方案
以下是我尝试过的所有方法的列表:
无数次重启我的机器(包括完全关闭电源和拔掉电源一段时间)
跟随官方NVIDIA Cuda 安装指南重新安装驱动程序并管理冲突。例如,
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.4.1/local_installers/cuda-repo-ubuntu2004-11-4-local_11.4.1-470.57.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-4-local_11.4.1-470.57.02-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-4-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
- 尝试将 noveau 和 nvidiafb 列入黑名单:
blacklist nvidiafb
blacklist nouveau
options nouveau modeset=0
重新安装 nvidia 驱动程序时,我尝试了多个驱动程序版本(470、465、460、455),使用了多种安装方法(首先是 deb,然后是 ubuntu-distributed,然后是 runfile)。所有这些方法都以不同的方式失败了。最常见的是,当我安装驱动程序后重新启动时,Ubuntu 在启动时无限挂起(我看到一个黑屏,上面有 MSI 徽标和“ubuntu”徽标,有时还有一个旋转的圆圈)。
NVIDIA 驱动程序在 Windows 中似乎仍能正常工作,因此我认为我的显卡没有烧坏或出现类似问题。
从 grub 启动到 Ubuntu 恢复模式并选择 dpkg repaiingr 选项——似乎没有任何帮助
sudo ubundu-drivers autoinstall
-- 安装了 nvidia 470 驱动程序,但没有成功我注意到
uname -r
我的内核版本是 5.11,而 Nvidia 驱动程序的支持表显示 Ubuntu 20.04 仅支持 5.4。因此,我降级到 5.4 并重新安装了 nvidia 驱动程序,但仍然没有成功。
观察结果
nvidia-smi
在下列情况下会产生输出(而不是错误):
- 重新安装驱动程序之后但在重新启动系统之前
- 重新安装驱动程序后进入恢复模式
现在怎么办?
我完全不知道该怎么办了。我唯一能想到的办法就是完全重新安装 Ubuntu,但昨天一切都运行正常,这似乎有点疯狂。
参考
询问Ubuntu.SE,“安装 nvidia 限制驱动程序后屏幕空白”
询问Ubuntu.SE,Ubuntu 18.04 和 nVidia。启动后卡住
询问Ubuntu.SE,从 PPA 安装最新驱动程序后启动挂起,且 Ctrl+Alt+F1 键盘快捷键不起作用
询问Ubuntu.SE,卡在启动屏幕,Nvidia 显卡驱动程序问题
询问Ubuntu更改 NVIDIA 驱动程序导致 Ubuntu 在启动时冻结
询问Ubuntu安装 nvidia 限制驱动程序后出现空白屏幕
询问Ubuntu图形驱动程序停止工作
询问UbuntuUbuntu 20.04 Nvidia 显卡不可用(建议切换到内核5.4)
系统信息
在写这个问题之前,我再次使用上面描述的方法清除了系统中的所有内容。在这种状态下,以下是一些系统信息:
内核版本
$ uname -r
5.4.0-80-generic
安全启动
$ sudo mokutil --sb-state
SecureBoot disabled
lshw
$ sudo lshw -C display
*-display UNCLAIMED
description: VGA compatible controller
product: TU104M [GeForce RTX 2070 SUPER Mobile / Max-Q]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller cap_list
configuration: latency=0
resources: memory:ac000000-acffffff memory:80000000-8fffffff memory:90000000-91ffffff ioport:3000(size=128) memory:ad000000-ad07ffff
*-display
description: VGA compatible controller
product: UHD Graphics
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 05
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:191 memory:ab000000-abffffff memory:40000000-4fffffff ioport:4000(size=64) memory:c0000-dffff
hwinfo
$ hwinfo --gfxcard
16: PCI 100.0: 0300 VGA compatible controller (VGA)
[Created at pci.386]
Unique ID: VCu0.pBgP2fGEzV8
Parent ID: vSkL.sXdMPV6yXb4
SysFS ID: /devices/pci0000:00/0000:00:01.0/0000:01:00.0
SysFS BusID: 0000:01:00.0
Hardware Class: graphics card
Model: "nVidia VGA compatible controller"
Vendor: pci 0x10de "nVidia Corporation"
Device: pci 0x1e91
SubVendor: pci 0x1462 "Micro-Star International Co., Ltd. [MSI]"
SubDevice: pci 0x12c6
Revision: 0xa1
Memory Range: 0xac000000-0xacffffff (rw,non-prefetchable,disabled)
Memory Range: 0x80000000-0x8fffffff (ro,non-prefetchable,disabled)
Memory Range: 0x90000000-0x91ffffff (ro,non-prefetchable,disabled)
I/O Ports: 0x3000-0x307f (rw,disabled)
Memory Range: 0xad000000-0xad07ffff (ro,non-prefetchable,disabled)
IRQ: 255 (no events)
Module Alias: "pci:v000010DEd00001E91sv00001462sd000012C6bc03sc00i00"
Driver Info #0:
Driver Status: nvidiafb is not active
Driver Activation Cmd: "modprobe nvidiafb"
Driver Info #1:
Driver Status: nouveau is not active
Driver Activation Cmd: "modprobe nouveau"
Driver Info #2:
Driver Status: nvidia_drm is not active
Driver Activation Cmd: "modprobe nvidia_drm"
Driver Info #3:
Driver Status: nvidia is not active
Driver Activation Cmd: "modprobe nvidia"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #11 (PCI bridge)
34: PCI 02.0: 0300 VGA compatible controller (VGA)
[Created at pci.386]
Unique ID: _Znp.7YEiQ6GHkFE
SysFS ID: /devices/pci0000:00/0000:00:02.0
SysFS BusID: 0000:00:02.0
Hardware Class: graphics card
Device Name: "Onboard - Video"
Model: "Intel VGA compatible controller"
Vendor: pci 0x8086 "Intel Corporation"
Device: pci 0x9bc4
SubVendor: pci 0x1462 "Micro-Star International Co., Ltd. [MSI]"
SubDevice: pci 0x12c6
Revision: 0x05
Driver: "i915"
Driver Modules: "i915"
Memory Range: 0xab000000-0xabffffff (rw,non-prefetchable)
Memory Range: 0x40000000-0x4fffffff (ro,non-prefetchable)
I/O Ports: 0x4000-0x403f (rw)
Memory Range: 0x000c0000-0x000dffff (rw,non-prefetchable,disabled)
IRQ: 192 (55080 events)
Module Alias: "pci:v00008086d00009BC4sv00001462sd000012C6bc03sc00i00"
Driver Info #0:
Driver Status: i915 is active
Driver Activation Cmd: "modprobe i915"
Config Status: cfg=new, avail=yes, need=no, active=unknown
Primary display adapter: #16
ubuntu-drivers
$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001E91sv00001462sd000012C6bc03sc00i00
vendor : NVIDIA Corporation
driver : nvidia-driver-450-server - distro non-free
driver : nvidia-driver-460 - distro non-free recommended
driver : nvidia-driver-470-server - distro non-free
driver : nvidia-driver-470 - third-party non-free
driver : nvidia-driver-460-server - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
谢谢你!
如果需要更多信息,请告诉我,我会尽力提供!感谢您提供的任何帮助!
答案1
我今天运行了以下命令(按照上述方法清除后)并且重启后它似乎又可以正常工作:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-460
不要问我为什么它有效——我昨天尝试了同样的事情,但没有成功。
答案2
我通过重新安装驱动程序并通过 Nvidia 驱动程序启用所有 GPU 解决了该问题:
运行命令:
sudo nvidia-config --enable-all-gpus.
关机并启动(不是重新启动)。
答案3
我最近在 Fedora 上也遇到了这种情况,不过我注意到 Windows 选择更新系统固件(UEFI/BIOS)只是在 Linux NVIDIA 驱动程序停止工作之前。我知道这已经是一年前的事情了,但你的情况是否也一样?
就我而言,我之前安装了 NVIDIA 内核驱动程序,并使用我手动生成的签名密钥对其进行了签名。我使用以下链接中列出的流程执行了此操作,但并非所有步骤都适用于 Ubuntu 用户:
https://blog.monosoul.dev/2021/12/29/automatically-sign-nvidia-kernel-module-in-fedora/
事实证明,系统中注册的密钥mokutil
可能会在固件更新中丢失:这就是发生在我身上的事情。要解决我的问题,我所需要做的就是找到我的签名密钥并重新注册我用来签名 NVIDIA 驱动程序的密钥:
sudo mokutil --import /etc/pki/akmods/certs/public_key.der
当然,您的公钥的位置可能会有所不同,因为 Ubuntu 不使用akmods
。