与使用供应商提供的发行版和 rootfs 相比,使用 YOCTO 生成自定义发行版和 rootfs 有哪些潜在好处

与使用供应商提供的发行版和 rootfs 相比,使用 YOCTO 生成自定义发行版和 rootfs 有哪些潜在好处

我读到了关于构建 rootfs 的 buildroot 和 YOCTO 项目(谷歌)之间的比较,并想问一个更普遍的问题:

从头开始构建我自己的 rootfs 并构建我自己的“操作系统发行版”(例如使用 YOCTO)有什么潜在好处,而不是使用我的嵌入式系统供应商(例如带有 jetson SoC 的 Nvidia)提供的系统。

我特别感兴趣的是以下几个方面进行比较

  • 系统安全和操作系统强化
  • 表现

我这样问是因为我不知道自己学习和构建这些组件“是否值得”。

谢谢

答案1

例如,使用 YOCTO,而不是使用我的嵌入式系统供应商提供的系统,例如带有 jetson SoC 的 Nvidia。

这是否满足您的需求并且不会产生不必要的安全攻击面? Nvidia 评估板在物理上是否适合您汽车的自动驾驶控制箱?它是否连接到所有网络接口以及汽车的控制总线?

就是这样。嵌入式开发很少“只是在 SoC 参考板上运行我的 python 脚本”。通常是:

  • 从评估板上取出 SoC,围绕它构建您自己的板,并使用自己的外设,
  • 为您连接到嵌入式主板的东西编写并提供驱动程序。毕竟它的名字叫嵌入式, 因为它是嵌入式在其他一些机械中。
  • 编写您想要在该系统上部署的应用程序。
  • 开发一种为该平台交叉编译它的方法(你可以不是想要在嵌入式平台上编译 Chromium。这实际上需要几周的时间。)
  • 随着您不断开发该软件,开发一种用更新版本替换该软件的方法
  • 如果您想在欧盟销售该系统,请写下软件物料清单 (SBOM)(请参阅:RED 指令。美国也有类似的要求。您必须明确地知道您的设备中有哪些软件,以列表的形式。)
  • 如果您使用的任何免费软件您的客户可以向您索取源代码,请准确保留您在系统中放置的软件的源代码。您的客户有权使用该版本,而不是其他版本或未经修改以适用于您的系统或应用程序的版本
  • 开发一种可重复的方法来为板上的存储生成图像。这很重要——你会想要在六个月内改变一些小东西,并且你必须 100% 确定你的整个系统通过的所有测试仍然通过,即使编写原始构建系统的人正在度假或不能记住。或者退休了。或者离开你的公司。

一般来说,供应商图像不这样做任何的。

OpenEmbedded 优惠

  • 为您的定制硬件甚至供应商硬件构建主板支持包的标准化方法,因为供应商操作系统通常真的很糟糕
  • 收集、更新和集成 Linux 内核补丁的标准方法
  • 可以生成包含为您刚刚构建的平台开发软件所需的所有编译器、库、标头的 SDK
  • 一种将软件集成到图像中的方法,该方法稳健、可重复,而不是“哦,约翰知道要复制哪些文件到哪里,但他死了”
  • 一种从这些软件配方中生成可在现场替换的软件包的简单方法
  • SBOM 生成方式与生成图像的方式相同,因此它实际上是完整的,而不是“约翰认为最坏的情况是他忘记提及他使用的一两个小库”
  • 源打包/归档生成(让法律部门高兴,因为没有竞争对手可以起诉他们停止分发硬件,因为它发布了您违反了其自由和开源软件许可证的软件)
  • 烘焙图像的可靠方法

所以,优点是:

供应商图像可帮助您充分了解 SoC,以便您可以利用它构建自己的系统。它永远不是您最终部署到嵌入式设备的内容。 OpenEmbedded 可以帮助您实际完成供应商未做的事情,而这正是您的客户付钱让您做的事情。您的客户不会因为将脚本放在参考板上而向您付费。他们向您支付可用于生产、可靠、可重复且符合法律的完整系统的费用。

相关内容