amdgpu 缺少固件

rm *_*-rf 30 firmware 18.10

之后sudo apt-get dist-ugprade我看到下面我端子输出:

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
Run Code Online (Sandbox Code Playgroud)

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

我的显卡是 RADEON RX VEGA M

Pil*_*ot6 36

你可以在linux-firmware git 上找到固件

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

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

  • +1。但是,未来的读者请注意,如果您为 MESA 驱动程序尚不支持的卡放置固件文件,则可能会破坏系统。我在使用 MESA 19.1 的情况下为我的 RX 5700 卡放置 `navi10_*` 固件文件时发生了这种情况。它破坏了我的系统,不得不通过 live-usb-recover 它。解决方案:另外(**除了添加固件文件**)升级MESA,然后一切正常。我设法通过直播中的“chroot”做到了:) (9认同)
  • 无论可能性与否,它都发生在我身上。所以我认为以评论的形式提供这些信息可能会很有用;我还添加了我的轶事解决方案,因为恢复模式对我不起作用——也许我做错了什么,我真的不记得了。 (2认同)
  • 如果我的 AMD 卡上缺少的固件不在该 git 存储库中怎么办,是否只是等待的问题?例如。navi10_mes.bin 和 arcturus_****.bin(10 个文件) - 我有 Radeon 550 (2认同)
  • 未找到 `arcturus` 文件! (2认同)

小智 17

为了节省新用户和不熟悉终端的人的时间——为了方便使用,可以直接复制和粘贴以下命令。请确保安装了 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

  • 但为什么我们必须手动执行此操作?Ubuntu 应该自动拥有或获取这些文件。 (2认同)

小智 15

截至 2022 年 1 月更新,根据Ubuntu 中的 linux-firmware 1.187.24 源码包,更改日志显示:

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

因此,现在只需更新到最新linux-firmware软件包就可以解决 AMD 南岛缺少固件的特定问题。

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


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

直接从 git 存储库下载有微妙的含义:

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

另一种替代方案(假设使用 HWE 堆栈)是尝试匹配假设发生在内核和固件版本之间的发布测试周期。

  • 获取当前版本 ( cat /etc/lsb-release)。例如“Ubuntu 20.04.3 LTS”:
  • 获取您的内核版本 ( uname -a)。例如5.11。
  • 如果好奇,请了解当前存储库中可用的固件包版本 ( apt show linux-firmware | grep Version)
  • 通过https://ubuntu.com/about/release-cycle#ubuntu-kernel-release-cycle找出与 HWE 内核/堆栈匹配的临时版本。例如,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) 的内核 5.11 一起发布。
  • 从 hirsute (21.04) 版本下载并手动安装 .deb。
  • 通过使用 Ubuntu 中的 .deb 包,希望固件能够正确签名以支持安全启动(对于那些不停留在旧版 BIOS 和 UEFI 上、关心针对 rootkit 和 bootoader 恶意软件的缓解措施的人)。

例如,内核为 5.11 的 20.04.3 LTS 与来自 hirsute (21.04) 的 linux-firmware 的匹配是 v 1.197.3,而焦点 (20.04) 存储库已使 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
Run Code Online (Sandbox Code Playgroud)

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

为了进一步解释,Ubuntu HWE 堆栈维护者更新了内核(和 amdgpu 驱动程序),但不幸的是未能使 linux 固件包保持最新。因此,amdgpu 驱动程序显然是在 Ubuntu 包含在较新的临时非 LTS 中的固件之上进行测试/开发的,但随后未能将其 HWE 内核刷新包含/向后移植到之前的 LTS。

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

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

有关的: