![与使用供应商提供的发行版和 rootfs 相比,使用 YOCTO 生成自定义发行版和 rootfs 有哪些潜在好处](https://linux22.com/image/221362/%E4%B8%8E%E4%BD%BF%E7%94%A8%E4%BE%9B%E5%BA%94%E5%95%86%E6%8F%90%E4%BE%9B%E7%9A%84%E5%8F%91%E8%A1%8C%E7%89%88%E5%92%8C%20rootfs%20%E7%9B%B8%E6%AF%94%EF%BC%8C%E4%BD%BF%E7%94%A8%20YOCTO%20%E7%94%9F%E6%88%90%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8F%91%E8%A1%8C%E7%89%88%E5%92%8C%20rootfs%20%E6%9C%89%E5%93%AA%E4%BA%9B%E6%BD%9C%E5%9C%A8%E5%A5%BD%E5%A4%84.png)
我读到了关于构建 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 可以帮助您实际完成供应商未做的事情,而这正是您的客户付钱让您做的事情。您的客户不会因为将脚本放在参考板上而向您付费。他们向您支付可用于生产、可靠、可重复且符合法律的完整系统的费用。