修改 core-image-minimal 以仅生成 rootfs

Modifying core-image-minimal to only make rootfs

我正在 Zedboard 上做一个嵌入式项目。我想(至少现在)只使用 Bitbake 来生成适当的 rootfs。我使用食谱 core-image-minimal,因为我只需要有限数量的员工。我如何才能 "tell" 不编译内核,不制作 u-boot 等,只关注 rootfs?

这是我到目前为止所做的:

  1. 创建了我的构建环境
  2. 已下载所需图层
  3. 已修改 local.conf 以将需要的包添加到 rootfs

然后输入后

bitbake core-image-minimal

我得到了我的 rootfs,以及所有这些不必要的工作人员。我怎样才能避免它?

我最近有同样的需要 使用 yocto 构建 rootfs,跳过内核、uboot、图像创建等其他东西。这样做有很多合理的理由.无论如何,这是你必须做的:

bitbake core-image-minimal -c image_cpio

在 krogoth 中,这将填充 build/tmp/work/$MACHINE/core-image-minimal/1.0-r0/ 中的 rootfs 目录并在中创建一个 rootfs.cpio 文件build/tmp/deploy/images/$MACHINE/

在莫蒂,rootfs.cpio 档案似乎在 build/tmp/work/$MACHINE/core-image-minimal/1.0-r0/deploy-core-image-minimal-image-complete/

有趣的概念。然而,据我观察,Yocto 必须在内核和 u-boot 中获取 defconfig 才能对映像本身进行配置。因此,删除该进程将使 rootfs 无法启动。

这些对我来说发生了很多时间,因为我使用不同的内核为不同的机器编译。我以为 ARM 映像是相同的并且适用于所有机器,但我错了。

对于Debian,编译出来的image需要使用kernel对应的配置来编译rootfs才能正常工作。 Yocto也是一样。

bitbake -e |grep IMAGE_FSTYPE

会给你类似的东西:

IMAGE_FSTYPES="tar.gz cpio cpio.gz.u-boot ...."

它是将生成的所有图像的列表,要删除不需要的图像,在 local.conf 文件中使用:

IMAGE_FSTYPES_remove = " cpio cpio.gz.u-boot"

第一个元素之前的 space 不是可选的。 此致

如果您不想构建内核,请将 virtual/kernel 的首选提供程序设置为 'linux-dummy'。