![Ubuntu 20.04 LTS 暂停后无法恢复](https://linux22.com/image/1022993/Ubuntu%2020.04%20LTS%20%E6%9A%82%E5%81%9C%E5%90%8E%E6%97%A0%E6%B3%95%E6%81%A2%E5%A4%8D.png)
在 Ubuntu 20.04 LTS(安装了 UEFI 模式,NVIDIA GF GTX 1050)上,我无法在暂停后恢复计算机,因此我必须直接关闭它并重新启动。这是我的/etc/default/grub
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="nouveau.modeset=0"
当我尝试恢复设备时屏幕显示:
ERROR: GPU0: Display engine push buffer channel allocation failed: 0x65 (Call timed out [NV_ERR_TIMEOUT])
ERROR: GPU0: Failed to allocate display engine core DMA push buffer
ERROR: GPU0: Display engine push buffer channel allocation failed: 0x65 (Call timed out [NV_ERR_TIMEOUT])
ERROR: GPU0: Failed to allocate display engine core DMA push buffer
答案1
我的联想 Legion 也出现了同样的问题。我设法让它工作了:
sudo apt purge nvidia-*
sudo apt install nvidia-driver-450-server
该包 nvidia-driver-450
将代替安装 nvidia-driver-460
。
答案2
这是一个已知的漏洞。
解决方案是恢复到 nVidia 版本 450。
您还应该在错误报告中注册并注明“它影响到我”,然后订阅有关错误更新的电子邮件。
要安装早期版本的 nVidia 驱动程序,请参见:
答案3
了解一些背景知识来理解问题和一些建议的(有效)解决方案的冗余。
NVIDIA Linux 驱动程序通过两种不同的机制支持挂起和休眠电源管理操作:
内核驱动回调:默认机制 - 无需明确配置即可启用和使用。内核驱动程序从 Linux 内核接收回调,以暂停、休眠和恢复已注册 Linux PCI 驱动程序的每个 GPU。
/proc/driver/nvidia/suspend
:此机制在使用时不依赖 Linux 内核的回调,而是依赖系统管理工具(例如)systemd
通过接口向 NVIDIA 内核驱动程序发出暂停、休眠和恢复命令/proc/driver/nvidia/suspend
。它仍处于实验阶段,需要明确配置才能使用。
这最干净简单的解决方案就是简单地禁用 2(如果已启用)并让默认机制1做工作。
当然,高级用户可以选择使用明确而准确的配置来修复[2]——它更强大,因为这种机制旨在消除内核驱动程序回调机制的限制1. 它支持具有高级 CUDA 功能(例如 UVM)的电源管理,并且能够保存和恢复所有视频内存分配
以下是最干净简单的解决方案(su -
假定访问):
检查[2]是否启用:
systemctl status nvidia-suspend nvidia-hibernate nvidia-resume
或者,执行以下操作:
journalctl -b | grep suspend
如果使用了 [2],您会在日志中看到它的明确操作,例如:
COMMAND=/bin/systemctl status nvidia-suspend nvidia-hibernate nvidia-resume
好的,既然您知道 [2] 正在使用中,让我们禁用它。:
systemctl disable nvidia-suspend nvidia-hibernate nvidia-resume
您应该会看到一条消息,指出:
Removed /etc/systemd/system/systemd-[suspend|hibernate|resume].service.requires/nvidia-[suspend|hibernate|resume].service
现在,您可以重复步骤 1 或 2,并验证服务确实已禁用:
rm /lib/systemd/system-sleep/nvidia
我见过一些有效但不准确的解决方案,例如[1,2,3],sudo rm /etc/systemd/system/systemd-suspend.service.requires/nvidia-suspend.service
建议手动操作。你不应该这样做。
其他一些有用的诊断命令:
$ cat /proc/driver/nvidia/version
$ nvcc --version
另外Ctrl+ Alt+F7后跟 Ctrl+ Alt+ F1。
答案4
我使用 ubuntu 20.04、内核 5.11.0 和 Nvidia 驱动程序 470.74 时也遇到了同样的问题:暂停后尝试恢复时出现黑屏。如上所述这里使用命令行安装而不是驱动程序安装 GUI完成工作。服务器版本的驱动程序对我来说有缺点,因为它不管理显示器的颜色配置文件(这对于服务器来说是有意义的)。
sudo apt purge nvidia-*
sudo apt autoremove
sudo apt install nvidia-driver-450
此安装驱动程序版本 460.91 在我的配置下运行良好。版本 470.74 的命令行安装有问题。