当使用 NVIDIA 专有驱动程序时,我无法让我的新笔记本电脑显示 Ubuntu 登录屏幕。
我有一台新的 HP Pavilion 15 Gaming ec1001na,其规格如下:
- 处理器:AMD Ryzen 5 4600H
- GPU:NVIDIA GeForce GTX 1650
- 内存:8GB 3200MHz SODIMM DDR4(2 x 4GB 条)
- 存储:Windows 10 安装在 256GB NVMe SSD 上,Ubuntu 安装在 512GB Samsung EVO SSD 上
- 引导加载程序:512GB SSD 上的 Grub,默认为 Ubuntu,安全启动已关闭
如果我卸载所有 NVIDIA 驱动程序并激活(取消黑名单)开源 Nouveau 驱动程序,我才能让笔记本电脑启动到 Ubuntu。但是,使用 Nouveau 驱动程序的帧速率恶魔般的(1-2fps)运行 Unigine Valley 基准测试时。(尽管安装了驱动程序,但由于 Vulkan 驱动程序问题,我无法让 Lutris 运行 Epic Games。)所以 Nouveau 驱动程序还不够好。
我已尝试了以下所有驱动程序(在尝试新驱动程序之前,请先卸载旧驱动程序):
- 通过 ubuntu graphics-drivers ppa 安装 NVIDIA Linux 430.09
- 通过 NVIDIA 可安装程序 (NVIDIA-Linux-x86_64-430.09.run) 安装 NVIDIA Linux 430.09
- 通过 ubuntu graphics-drivers ppa 安装 NVIDIA Linux 435.21
- 通过 NVIDIA 可安装程序 (NVIDIA-Linux-x86_64-435.21.run) 安装 NVIDIA Linux 435.21
- 通过 ubuntu graphics-drivers ppa 安装 NVIDIA Linux 450.57
- 通过 NVIDIA 可安装程序 (NVIDIA-Linux-x86_64-450.57.run) 安装 NVIDIA Linux 450.57
对于每一个,我都尝试在 Grub 配置中使用 nomodeset 和不使用 nomodeset 进行启动。
我尝试过同时使用这两个显示管理器:
- gdm3
- 光网络
lspci | grep VGA
显示:
01:00.0 VGA compatible controller: NVIDIA Corporation Device 1f99 (rev a1)
05:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Renoir (rev c7)
我尝试过为 gdm3 禁用 Wayland:
cat /etc/gdm3/custom.conf
# GDM configuration storage
#
# See /usr/share/gdm/gdm.schemas for a list of available options.
[daemon]
# Uncomment the line below to force the login screen to use Xorg
WaylandEnable=false
# Enabling automatic login
# AutomaticLoginEnable = true
# AutomaticLogin = user1
# Enabling timed login
# TimedLoginEnable = true
# TimedLogin = user1
# TimedLoginDelay = 10
[security]
[xdmcp]
[chooser]
[debug]
# Uncomment the line below to turn on debugging
# More verbose logs
# Additionally lets the X server dump core if it crashes
Enable=true
我已经修改了X11以直接处理NVIDIA显卡:
cat /etc/X11/xorg.conf
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 450.57
Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Mouse0" "CorePointer"
EndSection
Section "Files"
EndSection
Section "InputDevice"
# generated from default
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/psaux"
Option "Emulate3Buttons" "no"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
# generated from default
Identifier "Keyboard0"
Driver "kbd"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Unknown"
ModelName "Unknown"
Option "DPMS"
EndSection
Section "Device"
# My BusID Found by lspci | grep VGA
BusID "PCI:1:0:0"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
EndSection
Section "Screen"
# Option "SLI" "off"
# Option "MultiGPU" "off"
# Option "UseDisplayDevice" "DFP"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
使用任何专有驱动程序,我都无法进入登录屏幕。我只看到屏幕左上角有一个闪烁的水平光标,或者完全黑屏。我可以访问 tty2,也可以通过 SSH 进入笔记本电脑。
我的 NVIDIA 错误报告输出(我删除了重复的行和 base64 日志块以使其符合大小限制): https://paste.ubuntu.com/p/73MGTYhTh9/
如何让 NVIDIA 专有驱动程序正常运行?
(或者,如何让 Nouveau 在视频渲染/游戏中产生实际可用的帧速率?)
更新2020-07-30: 当我以为系统正在启动到 Nouveau 上的 Ubuntu 桌面环境时,它实际上是在 AMD 4600H 集成显卡 (amdgpu) 上运行的。
因此,无论是通过 Nouveau 还是专有驱动程序在 nVidia GPU 上运行的任何尝试似乎都会失败。
如果您认为这台笔记本电脑无法正常工作,我可以根据 RMA 退回它吗?
答案1
我已设法解决了该问题:
TL:DR;如果您运行的笔记本电脑同时配备了新的 AMD 4000 APU 和 NVIDIA 卡,请将 NVIDIA 卡的驱动程序列入黑名单,将 Linux 内核升级到 > 5.6,然后您就可以在性能良好的集成 AMD 显卡上运行您的系统。
任何专有 NVIDIA 驱动程序组合都无法正常工作。所有驱动程序(430、435、440、450)都会导致启动时出现黑屏。开源 Nouveau 驱动程序还会导致从挂起状态恢复时出现问题,导致恢复到黑屏。
最后,我读到新的 Ryzen 笔记本 APU(Ryzen 4000 系列)只有 Linux 内核 5.6 才能真正得到良好支持。
因此我按照此处的说明升级到内核 5.7:https://linuxconfig.org/how-to-upgrade-kernel-to-latest-version-on-ubuntu-20-04-focal-fossa-linux
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
sudo install ubuntu-mainline-kernel.sh /usr/local/bin/
sudo ./ubuntu-mainline-kernel.sh -i
我卸载了专有的 NVIDIA 驱动程序:
sudo apt-get purge '*nvidia-*'
(如果您通过 NVIDIA .run 二进制文件安装了它们,那么您可以使用同一个 .run 文件卸载它们):
sudo ./NVIDIA-Linux-x86_64-XXX.YY.run --uninstall
我将 nouveau 列入了黑名单:
sudo echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
我在 grub 配置中明确启用了 AMDGPU:
sudo nano /etc/default/grub
将 GRUB_CMDLINE_LINUX_DEFAULT 更改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amdgpu.vm_update_mode=3 amdgpu.ppfeaturemask=0xffffffff amdgpu.vm_fault_stop=0 amdgpu.vm_debug=1 amdgpu.gpu_recovery=1"
更新了我的 grub 配置:
sudo update-grub
然后重启!Ubuntu 正确启动,桌面环境呈现在屏幕上。我能够安装 Vulkan 库来支持游戏(参见https://linuxconfig.org/install-and-test-vulkan-on-linux
):
sudo apt install libvulkan1 mesa-vulkan-drivers vulkan-utils
通过 Lutris,游戏运行流畅。《侠盗猎车手 5》确实抱怨资源不足,这是因为它无法将系统 RAM 视为 GPU RAM。实际上,我的 32GB 系统 RAM 足以运行操作系统,还有足够的空间用于图形处理。我可以以 30fps 的速度运行高细节 1080p,或者以中等细节的速度运行 60fps。