fwupd (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

翻译状态:本文是 Fwupd翻译。上次翻译日期:2020-09-28。如果英文版本有所更改,则您可以帮助同步翻译。

fwupd 是一个简单的守护程序,可让您更新某些设备的固件,包括用于多数计算机的 UEFI。

支持的设备列表请查看这里,更多厂商支持计划请查看这里

安装

安装 fwupd

如果您将其用于 UEFI 固件升级,请参阅 #UEFI 升级设置

图形化前端

某些桌面环境前端解决方案具有内置的 fwupd 支持:

  • GNOME Software — 将定期检查更新,并在 GNOME 的后台自动下载固件。下载固件后,将在 Gnome Software 中显示一个弹出窗口以执行更新。
https://wiki.gnome.org/Apps/Software || gnome-software
  • KDE Discover — 与 Plasma 一起使用的软件中心。随着 KDE Plasma 5.14 的发布,KDE Discover中已实现了新的 fwupd 后端以进行固件更新。这些固件更新与其他系统更新一起显示。
https://userbase.kde.org/Discover || discover
  • GNOME Firmware — 在 fwupd 支持的设备上升级,降级和重新安装固件的应用程序。它可以解锁锁定的 fwupd 设备,验证支持的设备上的固件并显示 fwupd 设备的所有发行。
https://gitlab.gnome.org/hughsie/gnome-firmware-updater || gnome-firmware

使用

要显示 fwupd 检测到的所有设备:

$ fwupdmgr get-devices
注意: 列表中的部分设备可能不能使用该工具更新,例如 Intel 核芯显卡,可以替代地提供的供应商解决方案。

要从 Linux Vendor firmware Service (LVFS) 下载最新的元数据:

$ fwupdmgr refresh

要列出系统上任何设备可用的更新:

$ fwupdmgr get-updates

要安装更新:

$ fwupdmgr update
注意:
  • 可以实时应用的更新将立即完成。
  • 在启动时运行的更新将为下一次重新启动做好准备。
  • 可能需要使用 root 用户执行特定设备的更新。

UEFI 升级设置

警告: UEFI 固件更新可能会损坏您的引导程序,成功安装固件更新后,可能需要重新创建 NVRAM 条目(例如,使用 efibootmgr
  1. 确保您使用 UEFI 模式启动系统,它将无法在旧版启动模式下工作。
  2. 验证 您的 EFI 变量是否可以获取
  3. 正确挂载你的 EFI 系统分区 (ESP),esp 用于表示此部分中的挂载点。

准备 ESP 目录

fwupd 会将所有必需的文件复制到 "esp" 上,但是要使其正常工作,"esp" 上必须存在基本的文件夹布局。

注意: 根据您所使用的引导加载程序或其他操作系统的存在,此目录可能已经存在。

这会在 esp 目录创建 'EFI' 目录 。

mkdir esp/EFI/
警告: 'EFI' 目录必须全部大写。如果使用小写字母,则 fwupd 可能会将 esp 检测为 esp/efi/,并开始寻找 esp/efi/EFI/

创建后,您必须重新启动 fwupd 服务。

systemctl restart fwupd.service

您现在可以 $ fwupdmgr refresh$ fwupdmgr update。它将要求重新启动,现在应该自动重新启动到固件更新程序。

安全启动

安全启动开启的系统下,fwupd 使用 shim 来引导 fwupd EFI 文件。 使用前请确保正确安装 shim。

用自己的密钥

或者,您必须手动签名用于执行升级的 UEFI 可执行文件,该文件位于 /usr/lib/fwupd/efi/fwupdx64.efi。 已签名的 UEFI 可执行文件应放在 /usr/lib/fwupd/efi/fwupdx64.efi.signed. 使用 sbsigntools,可以通过运行以下命令来实现:

# sbsign --key <keyfile> --cert <certfile> /usr/lib/fwupd/efi/fwupdx64.efi

为了使安装或者升级时自动签名,使用 Pacman 挂钩

/etc/pacman.d/hooks/sign-fwupd-secureboot.hook
[Trigger]
Operation = Install
Operation = Upgrade
Type = Path
Target = usr/lib/fwupd/efi/fwupdx64.efi

[Action]
When = PostTransaction
Exec = /usr/bin/sbsign --key <keyfile> --cert <certfile> /usr/lib/fwupd/efi/fwupdx64.efi
Depends = sbsigntools

确保用密钥的相应路径替换 <keyfile><certfile>

除了 Pacman 挂钩,您也可以创建从 /usr/lib/fwupd/efi/fwupdx64.efi/usr/lib/fwupd/efi/fwupdx64.efi.signed 的符号链接,并将文件添加到 /etc/sbupdate.conf 中的 EXTRA_SIGN 列表中。

最后,您必须将 /etc/fwupd/uefi.conf 中包含 DisableShimForSecureBoot 的行更改为 DisableShimForSecureBoot=true 并重新启动 fwupd.service

注意: 如果在 fwupd 1.4 之前进行了此设置,请注意配置选项的名称已更改。

查阅此 GitHub issue,以获取更多讨论此问题的信息。

故障排除

没有错误,但重启后没有升级

状况:fwupdmgr update 未报告任何错误并提示重新启动(例如,在 BIOS 更新中)。 但是,系统将正常重启,并且不会进行固件更新。

可能的原因:在 BIOS 设置中,必须允许更改引导顺序。