LVFS 使 Linux 固件更新更轻松

Linux 厂商固件服务 (LVFS) 作为发布更新的硬件厂商与需要安装更新的最终用户之间的桥梁。
505 位读者喜欢此内容。
Open lightbulbs.

Opensource.com

传统上,在 Linux 中更新 BIOS 或网卡的固件意味着启动到 Microsoft Windows,或者准备一个 MS-DOS 软盘,并希望更新后一切正常。定期搜索供应商网站以查找更新是一项手动且容易出错的任务,我们不应该要求用户这样做。固件更新服务使最终用户更容易实现硬件更新。

固件更新服务需要两件事

  • 供应商向服务提供有关特定硬件可用更新的信息,以及
  • 一种将固件部署到硬件上的机制。

Linux 厂商固件服务 (LVFS) 是一项安全的 Web 服务,允许硬件厂商上传固件更新。LVFS 提供的元数据和文件被所有主要的 Linux 发行版使用,以提供客户端(如 fwupdmgr 和 GNOME 软件)的元数据。 厂商托管或分发内容也无需向 LVFS 支付费用(尽管欢迎 OEM 和用户的捐款)。

对于最终用户,fwupd 是一个简单的守护进程,专为 Linux 构建,允许会话软件更新本地计算机上的设备固件。它专为桌面设计,但也可用于手机和无头服务器。 要查看和应用更新,用户可以使用 GUI 软件管理器(如 GNOME 软件)、命令行工具或系统 D-Bus 接口。

LVFS 如何开始

许多硬件已经支持用户可升级的闪存固件。 这对于供应商来说是一件好事,因为他们可以在发现并修复错误时发布硬件和部署更新。 通过分割可用的闪存,一个分区用于引导加载程序,另一个分区用于应用程序固件,后者可以在无需拆卸或昂贵的编程器的情况下进行升级。

LVFS 源于我设计 ColorHug 的经验,ColorHug 是一种允许 Linux 用户校准其显示器的开放硬件色度计。 自该项目启动以来,我们已经为三个不同的 设备 发布了十几个更新。 与大多数开放硬件设备一样,为了升级固件,我将项目特定的工具打包在 tarball 中,并通过 HTTP 从我的托管提供商那里提取自定义元数据文件。 有一个用于二进制固件的校验和,但没有私有/公共签名。 大多数用户只是使用命令行,以 root 身份使用静态链接的程序来刷新固件。

与此同时,Red Hat 希望我帮助使更多硬件“开箱即用”。 其中一部分涉及添加内核驱动程序,一部分涉及修复 GNOME 以支持新硬件,还有一部分涉及更新设备上的固件。 在 Linux 中升级笔记本电脑固件通常是一种糟糕的体验,我想知道我是否可以产生一个共享的基础架构,大型公司和开放硬件纳米供应商都可以使用它——既可以应用固件本身,也可以以共享、安全的方式分发元数据和固件文件。 这就是 LVFS 的由来。

fwupd 如何工作

fwupd 守护进程支持常用的设计固件升级 (DFU) 和统一可扩展固件接口 (UEFI) 标准,以及许多供应商特定的更新协议。 如果项目可以使用 dfu-utildfu-programmerflashromfwupdate 进行更新,那么它很可能可以直接与 fwupd 一起使用,而无需额外的代码。 如果更新协议是供应商特定的(例如 Logitech 使用的协议),我们可以为守护进程编写一个小插件来升级硬件。 目前,LVFS 支持大约 10 种不同的升级机制,并且每个现代 Linux 发行版都附带 fwupd

LVFS 允许任何规模的供应商免费创建帐户并上传带有标准元数据的可重新分发的固件。 选择 CAB 容器格式是为了允许使用 Microsoft Update 工具重新签名现有文件。 固件使用 GNU Privacy Guard (GPG) 进行签名,共享元数据文件会更新固件的 SHA256 哈希值。 然后将新文件上传到支持 SSL 的内容分发网络,并且可以处于私有、禁运、测试或稳定状态。

LVFS 现在支持 70 多种不同的设备,并且每个月有超过 165,000 台设备通过 fwupd 使用 LVFS 上的固件进行更新。 此外,可用固件列表每月被下载近 1 亿次。 自我们启动此项目以来,至少有 600,000 件硬件(但可能更多)已使用新固件进行更新。

我们得到了许多大型供应商的强力支持,还有一些供应商正在测试该服务并致力于获得上传二进制文件的法律批准。 我很想在 LVFS 上看到更多硬件,并在 fwupd 守护进程中支持更多自定义闪存协议。

硬件的生产已经够困难了,无需设计一种可在每个 Linux 发行版上运行的安全升级机制。 如果您想使用 LVFS 分发固件,请与我联系。 如果您想开发一个 fwupd 插件,您可以 发送电子邮件到邮件列表 或开始阅读 文档。 如果您知道支持用户可升级固件的硬件,请咨询制造商是否包含 LVFS 支持。

标签
User profile image.
Richard 拥有超过 10 年的开源软件开发经验。

9 条评论

我同意。不幸的是,它在 F27 中已损坏。它看起来像是错误插入的路径... /boot/efi/EFI/EFI//boot/efi/EFI/... ???

正在安排… [ - ]UEFI 固件更新失败:{error #0} /builddir/build/BUILD/fwupdate-9/linux/libfwup.c:1193 get_fd_and_media_path(): 打开 /boot/efi/EFI/EFI//boot/efi/EFI/fedora/fw/fw/fwupdate-K0LvwD.cap 失败:没有该文件或目录

太棒了!我会等待。 其次,dmidecode 告诉我它已经是 2.3.1 了,但 fwupdmgr 认为它仍然是 2.2.1

BIOS 信息
供应商:Dell Inc.
版本:2.3.1


XPS 13 9360 系统固件
版本:0.2.2.1
最低版本:0.2.2.1

我也在等待 TB16 固件更新。 这个底座不是最好的戴尔产品。

感谢您的辛勤工作!!!
我无法想象它有多么复杂和耗时。

回复 作者 hughsie

Dell 选择在 fwupd 中将版本号指定为 aa.bb.cc.dd 而不是稍微正常的 aa.bb.ccdd -- fwupd 支持这一点,但 dmidecode 似乎不支持。

回复 作者 Creep

我有一台 HP Pavilion 15 ab252ur (V2H26EA),惠普声称仅当 Win10 是安装的唯一系统时才支持 FW 更新。 我在上面安装了 Ubuntu 16.04 作为第一个系统,然后安装了 Win10 作为第二个系统(都在禁用安全启动的 UEFI 模式下),之后我无法从 Win10 中更新 FW。 我是否有机会使用此软件和存储库从 Ubuntu 中更新 FW?

HP 尚未将此型号包含在 LVFS 上,但是一旦他们这样做,就没有理由不能工作。

回复 作者 Wladimir Mutel (未验证)

将此推给制造商是一个好主意,他们都应该更加努力地确保他们的用户可以使用他们购买的设备。 我认为最大的问题是制造商将固件作为计划报废的驱动因素(有点像 iPhone 在新 iPhone 发布之前变得更慢)。

我们的许多供应商都表示需要FreeBSD上的原生工具来更新固件。 所以我在想这是否可能是一个前进的方向,尽管目前看来它主要专注于Linux桌面。

虽然它确实专注于Linux,但我认为fwupd中实际上没有任何Linux特定的代码。 我没有尝试在FreeBSD上安装fwupd,但我认为如果所需的依赖项版本到位,应该可以做到。 一些可选的插件是Linux特定的(例如UEFI UpdateCapsule插件),但你可以将其编译出去。

回复 作者:Scott Lamons

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.