【问题标题】:Yocto / Bitbake: How to do something with every binary build by the system?Yocto / Bitbake:如何处理系统构建的每个二进制文件?
【发布时间】:2018-05-05 02:24:08
【问题描述】:

用例: 我正在为我的 Raspberry Pi 开发一个 IoT Linux 系统。只读 rootfs 不是一个选项,因为我想即时升级可执行文件。我认为是我的解决方案:我开发了一个可以签署 ELF 文件(Linux 可执行文件和库)的工具。它使用一些 pub/priv 密钥对部分进行签名,将签名保存到一个部分中并在执行之前检查文件(类似于 DigSig,但在 openssl-lib 的帮助下)。库加载器(glibc)也被修改为在加载之前检查所有 linux“.so”库。最后,我想在开源许可下发布项目和我的解决方案。目前还没有完成,离稳定还很远。

发展状况:

  • ELF-文件签名工具已完成。
  • 内核被修改(新的安全模块/自己的系统调用函数来检查精灵二进制签名)。
  • Glibc 已针对我的本地源进行了修改和修补。
  • Quemu 已修补以支持我的新系统调用。
  • Yocto 环境已设置。该图像在我的 RaspberryPi 2 测试机上运行。

到目前为止一切顺利。我觉得我非常接近我的解决方案。

现在我需要: 使 Yocto / bitbake 启用所有 ELF 文件在构建过程后签名。最好是 rpm 文件已经包含签名的 ELF 文件。并且签名过程将由所有其他包的一个配方完成。 (所以我不想创建一个只修改根文件夹中文件的安装后脚本)。

在谷歌搜索几个小时并检查 yocto 的文档后,我没有解决方案。如果有人可以帮助我,那就太好了。

【问题讨论】:

    标签: linux-kernel openssl glibc yocto bitbake


    【解决方案1】:

    我认为你可以在 poky/meta/classes 中自定义 package.bbclass,特别是 split_and_strip_files 函数有助于剥离每个文件

    oe.utils.multiprocess_exec(sfiles, oe.package.runstrip)

    您可以添加签名,然后在 poky/meta/lib/oe/package.py 中添加您的自定义工具

    【讨论】:

      猜你喜欢
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 2012-11-05
      • 2021-06-08
      • 2017-04-04
      • 1970-01-01
      • 2015-01-01
      相关资源
      最近更新 更多