最新的内核更新Linux 5.15.0-53-generic
引入了一个错误,破坏了 的 radeon 驱动程序AMD Ryzen 3 2200G with Radeon Vega Graphics
。它启动时屏幕一片黑。我尝试使用apt install amdgpu
或安装 AMD 的驱动程序amdgpu-install
。经过大量故障排除后,它没有抛出错误并安装完成。重新启动时,驱动程序似乎无法正常工作。一切看起来都和使用 禁用所有视频驱动程序时一模一样nomodeset
。
这个帖子让我得出结论,我需要在 grub 中选择较旧的内核。但是,当我启用时,一切看起来都像nomodeset
,尽管我没有。进一步的调查显示,我的集成显卡实际上不需要驱动程序amdgpu
,但是xserver-xorg-video-radeon
。
但 X11 显然加载了amdgpu
而不是radeon
。
$ lspci -k | grep -EA3 'VGA|3D|Display'
0a:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] (rev c8)
Subsystem: Gigabyte Technology Co., Ltd Radeon RX Vega 11
Kernel modules: amdgpu
因此,我可能以某种方式配置了错误的驱动程序,而不是解决我最初的问题。
-Processor-
AMD Ryzen 3 2200G with Radeon Vega Graphics
-Version-
Kernel : Linux 5.15.0-53-generic (x86_64)
Version : #59-Ubuntu SMP Mon Oct 17 18:53:30 UTC 2022
C Library : GNU C Library / (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35
Distribution: Ubuntu 22.04.1 LTS
-Display-
Resolution : 1024x768 pixels
Vendor : The X.Org Foundation
Version : 1.21.1.3
Current Display Name: :1
-Monitors-
Monitor 0 : 1024x768 pixels
-OpenGL-
Vendor : (Unknown)
Renderer : (Unknown)
Version : (Unknown)
Direct Rendering: No
我是否正确地假设我需要以某种方式更改 xserver 的视频驱动程序?如果是这样,我该如何安全地做到这一点?目前一切看起来都没有加载任何图形驱动程序。
答案1
这篇文章让我得出结论,我需要在 grub 中选择较旧的内核。
这是两个有效的解决方案之一。
你应该向 Canonical 报告这个错误如果还没有报告,同时使用旧内核(通过 Synaptic 冻结升级)并等待适用于您的系统的新内核准备就绪。
您可以尝试PPA 主线内核尽管。
第二个有效的解决方案是安装 AMD 的 amdgpu-pro,这是一个替代驱动程序。但我不推荐它,因为很多用户最终都会遇到麻烦,而且如果你不熟悉 CLI,一旦出现问题,就很难恢复图形界面。
这是碰运气。
radeon 与 amdgpu
您无法使用该radeon
驱动程序来驱动您的 GPU。该驱动程序是较旧的版本,专为 Radeon HD 2000-6000 系列和第一代 GCN 卡(例如 Radeon HD 7770、Radeon R9 280 等)而编写。
该amdgpu
驱动程序是较新的驱动程序,可与所有 GCN 和 RDNA 芯片配合使用。
您的 Vega 芯片是最后一款采用 GCN 架构的 GPU,无法与 配合使用radeon
。尝试强制使用它可能会导致硬件损坏或无法工作。
驱动架构讲解
看来您很困惑,所以我来解释一下发生了什么:Linux 中的 AMD 驱动程序有 2 个组件:内核空间和用户空间。
内核空间驱动程序与内核一起发布。当出现错误时,它们与内核版本相关联。此类内核错误通常会在上游快速修复(几天或几周内),但 Ubuntu 需要一些时间(通常需要几个月),因为 Ubuntu 需要从上游内核反向移植更改。
从您提到的情况来看,这就是问题的原因。
用户空间驱动程序与 Mesa 和 X11 软件包分开提供。由于问题出在驱动程序的内核部分,因此弄乱这些软件包无法解决问题,而且您可能会意外破坏某些功能。
更新
好的,从您的回复来看,您说您降级了内核,但仍然不起作用。
首先,请确保您确实已通过以下方式降级:
uname -r
您可以通过前往 GRUB -> 尝试多个内核版本Advanced options for Ubuntu
并开始选择其他版本。
好的,假设这不起作用,下一步要尝试/怀疑的是:
你的 Xorg 日志
发布 的内容/var/log/Xorg.0.log
。它可能包含有价值的信息。
由于您启动时出现黑屏,您可以尝试切换到 tty(Ctrl + Alt + F2)
如果键盘没有响应,则启动到安全模式,安装 openssh-server,重新启动到正常节点,然后从第二台计算机控制您的计算机。
确保 amdgpu 模块已加载
跑步:
lsmod | grep amdgpu
它应该有命中并且 amdgpu 应该正在使用。
如果不存在则运行:
sudo modprobe amdgpu
如果失败,请检查dmesg
。
重启你的 DM
有时在加载驱动程序时会出现竞争条件,真正的问题是您的 DM 在 GPU 驱动程序准备好之前启动。因此 DM 崩溃了。
我个人遇到过这个问题:有一半的时间,我会随机启动到黑屏,键盘也会死机。但是,来自 SSH 会话的以下命令可以恢复我的计算机。
我不知道您使用哪个 DM,因此以下命令之一应该适合您:
sudo service lightdm restart
sudo service gdm3 restart
sudo service sddm restart
将 amdgpu 固件添加到 initramfs 以便尽早可用
这是对上一项中提到的竞争条件的修复。
运行以下命令:
echo "amdgpu" | sudo tee --append /etc/initramfs-tools/modules
sudo update-initramfs -c -k $(uname -r)
如果操作正确,则检查它是否有效,运行:
lsinitramfs /boot/initrd.img-$(uname -r) | grep amdgpu
应该返回多个匹配项(之前应该没有)。
然后重新启动并祈祷一切正常。
您可以通过删除 amdgpu 行并再次/etc/initramfs-tools/modules
运行来撤消此更改update-initramfs
尝试另一个固件包
包裹Linux 固件为您的硬件提供所有固件 blob,包括 AMD 的 GPU。
旧版本也许可以解决您的问题,或者新版本也可以。
您还可以尝试最新的https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
您可以通过 git 回滚最新的文件sudo apt install --reinstall linux-firmware
(因为它们都是进入的文件/lib/firmware
)
从 LiveUSB 检查
如果您仍然无法修复它;创建一个 LiveUSB 并从那里启动:您可能会想重新安装 Ubuntu(一个有效的选项)。
如果 LiveUSB 也出现同样的问题,您可能需要考虑硬件损坏(您的 iGPU 出现故障,或者显示器的电缆坏了,电缆松动了,或者显示器坏了,或者连接器/端口坏了)。如果是这种情况,也请尝试 Windows。