缺少 amdgpu 固件

缺少 amdgpu 固件

之后sudo apt-get dist-upgrade,我在终端看到以下输出:

Setting up linux-modules-extra-4.18.0-16-generic (4.18.0-16.17) ...
Setting up linux-image-generic (4.18.0.16.17) ...
Setting up linux-headers-generic (4.18.0.16.17) ...
Setting up linux-generic (4.18.0.16.17) ...
Processing triggers for linux-image-4.18.0-16-generic (4.18.0-16.17) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.18.0-16-generic
W: Possible missing firmware /lib/firmware/amdgpu/vega12_gpu_info.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_asd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_sos.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_asd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_sos.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_rlc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_mec2.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_mec.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_me.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_pfp.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_ce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_rlc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_mec2.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_mec.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_me.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_pfp.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_ce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_sdma1.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_sdma.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_sdma1.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_sdma.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_uvd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_uvd.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_vce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_vce.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega20_smc.bin for module amdgpu
W: Possible missing firmware /lib/firmware/amdgpu/vega12_smc.bin for module amdgpu
I: The initramfs will attempt to resume from /dev/dm-2
I: (/dev/mapper/ubuntu--vg-swap_1)
I: Set the RESUME variable to override this.
/etc/kernel/postinst.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.18.0-16-generic
Found initrd image: /boot/initrd.img-4.18.0-16-generic
Found linux image: /boot/vmlinuz-4.18.0-15-generic
Found initrd image: /boot/initrd.img-4.18.0-15-generic
Found linux image: /boot/vmlinuz-4.18.0-10-generic
Found initrd image: /boot/initrd.img-4.18.0-10-generic
Adding boot menu entry for EFI firmware configuration
done

有人能告诉我在哪里可以找到以及如何安装丢失的固件吗?

我的显卡是 RADEON RX VEGA M

答案1

您可以在以下位置找到固件Linux 固件 git

看起来那里缺少固件文件。

您可以git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git将丢失的文件复制到/lib/firmware/amdgpu

答案2

更新:这只是我“让事情正常运转”的业余方法 — 有更好的答案,这可能不是最稳定的方法。家庭用户空间中的 Linux 本质上是关于学习。如果你弄坏了什么东西,你就需要学习修复它,或者重新开始!任何计算系统都是如此。你越早学会处理这个问题,你就越早找到一种“自己摸索”的方法,而不是依赖施舍的解决方案 — 这可能是不完美的。

不要使用此解决方案解决业务环境问题。 你被警告了。

———为了节省新用户和不熟悉终端的人的时间——以下命令可以直接复制粘贴以方便使用。请确保已安装 git,如果没有,请打开终端(大多数情况下为 ctrl + alt + t)并输入以下命令: sudo apt install git -y

如果 apt 抱怨更新,请使用以下命令进行更新和升级: sudo apt update && sudo apt upgrade -y

然后使用第一个命令安装 git。

所需的固件文件可以在以下位置找到: https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware.git

如果你已经安装了 git,可以输入以下命令完成 cd ~/Documents && git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware.git

使用上述命令克隆存储库后,重要的是将文件放在正确的位置,以便程序“update-initramfs”可以找到它们并使用它们。

为此,只需在终端中输入以下命令(对于 ubuntu,截至 18.04)

sudo cp ~/Documents/linux-firmware/amdgpu/* /lib/firmware/amdgpu && sudo update-initramfs -k all -u -v

上述命令假设您更新您的 initramfs 映像并将使用当时系统上可用的所有内核版本。

完成这些之后,APT 就不会再抱怨了。:D

答案3

截至 2022 年 1 月的更新,根据Ubuntu 中的 linux-firmware 1.187.24 源码包,变更日志内容如下:

amdgpu:为 SI asics 添加 UVD 固件(LP:#1953249)

因此现在只需更新到最新linux-firmware软件包即可解决 AMD Southern Islands 缺少固件的特定问题。

先前的答案/替代解决方法留在下面以供后人参考,因为如果/当 Ubuntu 维护人员更新内核和 AMD 驱动程序模块而没有记得更新相关的固件包时,其他 AMD 型号和固件可能会遇到同样的问题。


先前的答案建议直接从 linux-firmware git 下载固件。此答案提供了一种替代方法,尝试更紧密地复制 Ubuntu 发布测试周期的工作方式,并可以代表官方发布内核与相关发布固件的“更广泛测试”组合。

直接从 git repo 下载有微妙的含义:

  • 它最终可能会将潜在的非常新的固件与可能稍微旧的内核模块混合在一起,这可能会导致偏离经过较少测试的组合固件与内核驱动模块。
  • 当固件尚未经过适当签名并包含在 initramfs 中时,UEFI 安全启动可能无法工作。

假设存在 HWE 堆栈,另一种方法是尝试匹配假设在内核和固件版本之间发生的发布测试周期。

  • 获取当前版本 ( cat /etc/lsb-release)。例如“Ubuntu 20.04.3 LTS”:
  • 获取你的内核版本 ( uname -a)。例如 5.11。
  • 如果好奇,请了解当前 repo 中可用的固件包版本 ( apt show linux-firmware | grep Version)
  • 通过以下方式确定哪个临时版本与 HWE 内核/堆栈匹配https://ubuntu.com/about/release-cycle#ubuntu-kernel-release-cycle。例如 5.11 从 Ubuntu 21.04(hirsute)反向移植到 20.04.3 LTS。
  • 使用 Ubuntu 软件包搜索(https://packages.ubuntu.com/search?keywords=linux-firmware&searchon=names)并找到linux-firmware适合该特定临时版本和内核组合的软件包版本。例如https://packages.ubuntu.com/hirsute-updates/linux-firmware与带有 hirsute (21.04) 的 Kernel 5.11 一起发布。
  • 从 hirsute (21.04) 版本下载并手动安装 .deb。
  • 通过使用 Ubuntu 的 .deb 包,希望固件被正确签名以便与安全启动一起使用(对于那些没有停留在传统 BIOS 和 UEFI 上并且关心这些针对 rootkit 和 bootoader 恶意软件的缓解措施的人来说)。

例如,将 20.04.3 LTS 和内核 5.11 与 hirsute (21.04) 中的 linux-firmware 进行匹配,后者的版本为 v 1.197.3,而 focal (20.04) repo 中的 linux-firmware 已经过时v 1.187.20

curl -OL http://archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.197.3_all.deb
sudo dpkg -i linux-firmware_1.197.3_all.deb

额外提示:从最近的镜像下载 deb,因为这个包几乎有 200MB 大,主档案可能会很慢。

进一步解释一下,Ubuntu HWE 堆栈维护者更新了内核(和 amdgpu 驱动程序),但不幸的是未能使 linux-firmware 软件包保持最新状态。因此,amdgpu 驱动程序显然是在 Ubuntu 随较新的临时非 LTS 附带的固件上测试/开发的,但随后未能将他们的 HWE 内核更新包含/反向移植到以前的 LTS。

每个人都遇到了这种错误,请注册一个启动板帐户并添加您的投票“这个错误影响了我”以帮助让 Ubuntu 注意并保持 HWE 内核和 linux 固件包更好地同步:https://bugs.launchpad.net/ubuntu/+source/linux-firmware/+bug/1953249

这种方法的一个缺点是固件将不再自动更新,但手动安装 .deb 比尝试混合临时发布存储库(这需要 apt 首选项包名称固定和优先级)要简单得多

有关的:

答案4

从此处下载文件存储库并将它们放入您的计算机中

相关内容