该项目旨在使 Linux 上的固件更新自动、安全、可靠。
网站上提供了更多信息。
此存储库中的 GitHub 问题和讨论
Libera IRC 频道#fwupd
。您可以通过 Libera 的 IRC 或通过 Matrix 上的 IRC 桥加入。
有关如何构建 fwupd 开发环境的信息,请参阅构建和调试。
注意:在大多数情况下,最终用户不应从头开始编译 fwupd;这是一个复杂的项目,具有数十个依赖项(以及许多配置选项),而且有太多可能出错的地方。
用户应该只由他们的发行版安装和更新 fwupd,由软件包维护者管理和测试。该发行版还将对 fwupd 如何与系统上的其他软件(例如使用 GNOME 软件)交互进行一些测试。
使用 Snap 或使用 Flatpak 安装 fwupd 可能有助于在命令行上更新需要前沿 fwupd 版本的特定设备,但不应将其视为发行版提供的系统版本的替代品。
Tartan 是一个 LLVM 静态分析插件,用于分析 GLib 代码。可以使用以下命令安装并运行它:
mkdir build-tartan CC=clang-17 meson ../ SCANBUILD=../contrib/tartan.sh ninja scan-build
该项目默认配置为从 Linux 供应商固件服务 (LVFS) 下载固件。
所有希望将其固件提供给 Linux 用户的 OEM 和固件创建者都可以使用此服务。
您可以在 fwupd 网站的硬件供应商部分找到有关创建固件胶囊的技术细节的更多信息。
如果您的设备具有 fwupd 支持的固件,则可以通过以下方式检查更新并使用 fwupd 的命令行工具应用它们。
# fwupdmgr get-devices
这将显示 fwupd 检测到的所有设备。
# fwupdmgr refresh
这将从 LVFS 下载最新的元数据。
# fwupdmgr get-updates
如果系统上的任何设备有可用更新,则会显示它们。
# fwupdmgr update
这将为您的系统下载并应用所有更新。
可以实时应用的更新将立即完成。
启动时运行的更新将在下次重新启动时暂存。
您可以在 fwupd 网站的最终用户部分找到有关更新工作流程的更多信息。
如果还安装并启用了 Passim 项目,fwupd 将重新发布下载的元数据文件,默认在0.0.0.0:27500
上提供服务。
同一网络上的其他客户端可以通过 mDNS/LLMNR 使用此功能来减少配置的远程网络带宽。
要禁用此功能,请在/etc/fwupd/daemon.conf
中设置P2pPolicy=none
、卸载 passim 软件包或在终端上使用systemctl mask passim.service
。
fwupd 将鼓励用户向 LVFS 报告成功和失败的更新。 这是一项可选功能,但值得鼓励,因为它为 LVFS 管理员和 OEM 开发人员提供了有关固件更新过程效率的宝贵反馈。
有关此数据的隐私政策可以在 lvfs readthedocs 网站上查看。
要报告更新的状态,请运行:
# fwupdmgr report-history
只有从 LVFS 分发的更新才会报告给 LVFS。
可以使用“批准的更新”功能在企业中控制更新流程。这允许域管理员将可能的更新从中央服务器(例如 LVFS 或镜像)过滤到仅在您的组织中经过专门测试的固件。
可以通过将ApprovalRequired=true
添加到远程配置文件(例如lvfs.conf
来启用已批准的更新列表。启用后,可以使用逗号分隔列表在fwupd.conf
中设置批准的更新列表。
例如:
ApprovedFirmware=foo,bar
其中foo,bar
指的是与元数据文件中的两个更新相对应的容器校验和。
此外,可以使用fwupdmgr set-approved-firmware baz
或使用 D-Bus 接口来补充已批准的固件列表。
fwupdmgr 是一个命令行客户端,但 fwupdmgr 手册页中列举了各种其他图形前端。
Coverity - 适用于 Java、C/C++、C#、JavaScript、Ruby 和 Python 代码的静态分析器。
PVS-Studio - C、C++、C# 和 Java 代码的静态分析器。