嵌入式Linux系统镜像的更新

嵌入式系统的设计目标是长期运行而不需要频繁更新。对于那些作为智能边缘组成部分而接入网络的系统,定期更新却是一个常见的需求。例如,在嵌入式系统上更新映像,是基于嵌入式Linux的物联网设备或家庭自动化系统制造商经常需要处理的事项。在这种情况下,制造商可能会定期发布设备上运行的操作系统或应用软件更新,以便提高性能、增添新功能或修复发现的安全漏洞。制造商通常会提供一些方法工具,让客户在他们的设备上轻松地进行软件更新,也可能把这些更新作为新设备制造过程的一部分。为此,选择最能满足这种更新需求的操作系统,就成为十分重要的工作。购买商业支持的嵌入式操作系统,比企业内部聘用开发人员来构建和维护自己的操作系统更具成本效益优势。

Ubuntu Core是Ubuntu Linux操作系统的一个版本,专为物联网设备和其他嵌入式系统而设计。它是Ubuntu的轻量级极简版本,只包含了运行物联网设备所需的基本组件和服务,从而使其达到安全与高效。Ubuntu Core包括一系列安全和管理功能,并通过“snaps”提供定制,这是一种用于软件打包和系统部署的专有技术——也就是用于系统容器的压缩版应用软件。由于具备多功能性、安全性和易用性,使它成为开发人员的热门首选。

Wind River Linux是一个基于Linux的商业操作系统,设计目标是嵌入式系统,应用于网络设备、工业控制系统、航空航天和国防技术。Wind River Linux Distro是一个二进制发行版,基于流行的社区驱动Yocto项目,采用市场领先的Wind River Linux构建而成,包括了对树莓派4s的支持。为Distro 安装系统更新需要OSTree,这是一种用于管理操作系统文件部署和更新的开源技术,也是用于创建、部署和管理操作系统树生命周期的工具,而操作系统树是组成操作系统的文件集合。OSTree允许存储和管理操作系统树的多个版本,并支持操作系统的原子事务更新。

目 标

为了确定部署后哪个平台更容易维护,让我们比较一下在Wind River Linux Distro和Ubuntu Core上更新映像的情况。

所用的设备 & 程序

  • Raspberry Pi Imager Raspberry Pi OS – Raspberry Pi – 用来把映像刷新进入你的存储器之中(SD card)
  • Raspberry Pi 4 (RPi4)
  • Micro HDMI port
  • 64 GB Micro SD card
  • USB-C Power Supply

更新 Wind River Linux Distro 映像

  • 确保Wind River Linux Distro二进制映像已经启动运行而且您已经作为root用户登录。
  • 运行OSTree upgrade wrapper script来升级系统。运行命令:

    $ ostree_upgrade.sh
  • 重启系统并重新登录:

    $ reboot
  • 解锁此映像。为了确定您的映像处于锁定状态,运行命令: 

    $ ostree admin unlock  -hotfix
  • 通过DNF安装、升级或移除包。

    $ dnf install packageName
    $ dnf remove packageName
    $ dnf update
  • 为了进行更新,你需要立即明确地更新cache来查看package feeds的变化。

    $ dnf upgrade packageName

更新Ubuntu Core映像

  • 更新Ubuntu Core映像的第一步是使用一个模型断言(model assertion)。输入通常以JSON 格式提供
  • 为了设置模型断言,需要安装snapcraft并登录
  • 需要有一个开发者ID用来创建模型断言
  • 作为开始,需要在支持snap的Linux系统上安装映像
  • 为了输出映像文件本身,请运行如下脚本:

$ ubuntu-image snap ubuntu-core-20-amd64.model

比 较

Wind River Linux和Ubuntu Core都是面向嵌入式系统基于Linux的操作系统,主要用于网络设备、工业控制系统、航空航天和国防技术。这两个操作系统都提供了一系列适合这类应用的特性和功能,例如实时性能和高安全性与高可靠性。

二者的一个关键性区别是:

Wind River Linux是高度可配置的,具有可定制的内核及一系列可选配置以满足特定需求。

Ubuntu Core使用Snap Store来添加和安装软件包,专注于简单性和安全性,具有极简的设计和一系列功能,以确保操作系统和在其上运行的应用始终处于最新版且具备安全性。

上述差异会影响两个操作系统上更新映像的特定工具和进程。例如,Wind River Linux包含了更高级的管理和操作系统映像工具,而Ubuntu Core更专注于提供易用性,方便进行应用更新。

另一个区别是,Wind River Linux Distro是由风河系统公司开发的商业操作系统,而Ubuntu Core是通行Ubuntu Linux发行版的一个特定版本,由Canonical公司开发。这意味着,在Wind River Linux Distro上创建和部署新映像的工具和过程可能与Ubuntu Core略有不同。Wind River Linux专注于为商业用户提供工具和服务,而Ubuntu Core可能包括与公共社区合作和共享操作系统映像的工具。

总的来说,对于嵌入式系统来说,Wind River Linux和Ubuntu Core都是不错的选择,但对于某些类型的应用和环境,应该考量到它们各自的特定特性和能力,以便做出更好的选择。如果你认为可定制性和长期支持比较重要,Wind River Linux Distro是适当的选择。另一方面,如果你关心简洁性,Ubuntu Core就更稳妥一些。在决定使用哪个操作系统之前,仔细评估项目的具体需求和要求,这是非常重要的。