博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LVFS使Linux固件更新更加容易
阅读量:2527 次
发布时间:2019-05-11

本文共 1775 字,大约阅读时间需要 5 分钟。

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

固件更新服务需要两件事:

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

(LVFS)是一项安全的Web服务,允许硬件供应商上传固件更新。 所有主要的Linux发行版都使用LVFS提供的元数据和文件来为客户端提供元数据,例如fwupdmgr和GNOME软件。 对于LVFS托管或分发内容,供应商也不收取任何费用(尽管OEM和用户都欢迎捐赠)。

fwupd是为Linux构建的简单守护程序,它允许会话软件更新本地计算机上的设备固件。 它是为台式机设计的,还可以在电话和无头服务器上使用。 要查看和应用更新,用户可以使用GUI软件管理器,例如GNOME软件,命令行工具或系统D-Bus界面。

LVFS如何开始

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

LVFS源自我设计经验, 是一种开放式硬件色度计,可让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多种不同的设备,并且使用LVFS上的固件, fwupd每月更新超过165,000台设备。 此外,每月下载的固件列表将近1亿次。 自从我们开始这个项目以来,至少有600,000项硬件(但可能还有更多)已使用新固件进行了更新。

我们得到了许多大型供应商的大力支持,其他一些供应商也对该服务进行了测试,并正在寻求法律许可以上传二进制文件。 我很想在LVFS上看到更多的硬件,并在fwupd守护程序中支持更多的自定义刷新协议。

无需设计能够在每个Linux发行版上运行的安全升级机制,就很难生产出足够的硬件。 如果您想使用LVFS分发固件,请与我联系。 如果您想开发fwupd插件,可以或开始阅读 。 如果您知道支持用户可升级固件的硬件,请询问制造商有关包括LVFS支持的信息。

翻译自:

转载地址:http://yrszd.baihongyu.com/

你可能感兴趣的文章
阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
查看>>
阶段3 2.Spring_02.程序间耦合_4 曾经代码中的问题分析
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_4 ApplicationContext的三个实现类
查看>>
阶段3 2.Spring_02.程序间耦合_8 工厂模式解耦的升级版
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
查看>>
阶段3 2.Spring_04.Spring的常用注解_3 用于创建的Component注解
查看>>
阶段3 2.Spring_04.Spring的常用注解_2 常用IOC注解按照作用分类
查看>>
阶段3 2.Spring_09.JdbcTemplate的基本使用_5 JdbcTemplate在spring的ioc中使用
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_3、快速创建SpringBoot应用之手工创建web应用...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_04.ssm整合之编写SpringMVC框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_5、SpringBoot2.x的依赖默认Maven版本...
查看>>
阶段3 3.SpringMVC·_07.SSM整合案例_08.ssm整合之Spring整合MyBatis框架
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_9、SpringBoot基础HTTP其他提交方法请求实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_12、SpringBoot2.x文件上传实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_19、SpringBoot个性化启动banner设置debug日志...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_20、SpringBoot2.x配置全局异常实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第5节 SpringBoot部署war项目到tomcat9和启动原理讲解_23、SpringBoot2.x启动原理概述...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_21、SpringBoot2.x配置全局异常返回自定义页面...
查看>>