fwupd (简体中文)
fwupd 是一个简单的守护程序,可让您更新某些设备的固件,包括用于多数计算机的 UEFI。
安装
如果您将其用于 UEFI 固件升级,请参阅 #UEFI 升级设置。
图形化前端
某些桌面环境前端解决方案具有内置的 fwupd 支持:
- GNOME Software — 将定期检查更新,并在 GNOME 的后台自动下载固件。下载固件后,将在 Gnome Software 中显示一个弹出窗口以执行更新。
- KDE Discover — 与 Plasma 一起使用的软件中心。随着 KDE Plasma 5.14 的发布,KDE Discover中已实现了新的 fwupd 后端以进行固件更新。这些固件更新与其他系统更新一起显示。
- GNOME Firmware — 在 fwupd 支持的设备上升级,降级和重新安装固件的应用程序。它可以解锁锁定的 fwupd 设备,验证支持的设备上的固件并显示 fwupd 设备的所有发行。
使用
要显示 fwupd 检测到的所有设备:
$ fwupdmgr get-devices
要从 Linux Vendor firmware Service (LVFS) 下载最新的元数据:
$ fwupdmgr refresh
要列出系统上任何设备可用的更新:
$ fwupdmgr get-updates
要安装更新:
$ fwupdmgr update
- 可以实时应用的更新将立即完成。
- 在启动时运行的更新将为下一次重新启动做好准备。
- 可能需要使用 root 用户执行特定设备的更新。
UEFI 升级设置
- 确保您使用 UEFI 模式启动系统,它将无法在旧版启动模式下工作。
- 验证 您的 EFI 变量是否可以获取。
- 正确挂载你的 EFI 系统分区 (ESP),
esp
用于表示此部分中的挂载点。
准备 ESP 目录
fwupd 会将所有必需的文件复制到 "esp" 上,但是要使其正常工作,"esp" 上必须存在基本的文件夹布局。
这会在 esp 目录创建 'EFI' 目录 。
mkdir esp/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
。
查阅此 GitHub issue,以获取更多讨论此问题的信息。
故障排除
没有错误,但重启后没有升级
状况:fwupdmgr update
未报告任何错误并提示重新启动(例如,在 BIOS 更新中)。 但是,系统将正常重启,并且不会进行固件更新。
可能的原因:在 BIOS 设置中,必须允许更改引导顺序。