【问题标题】:Yocto Warrior on INITRAMFS_IMAGE_BUNDLE and Linux Kernel Image on SD Card ImageINITRAMFS_IMAGE_BUNDLE 上的 Yocto Warrior 和 SD 卡映像上的 Linux 内核映像
【发布时间】:2019-12-07 04:47:09
【问题描述】:

我正在 Ubuntu 18.04 上使用 Yocto Warriors 构建我的嵌入式 Linux 系统。我有自己的核心图像配方和 initramfs 图像配方。

我一直在阅读文档 (https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#var-INITRAMFS_IMAGE) 和互联网上的各种帖子,以便在我的 local.conf 中提出以下内容:

# Use the INITRAMFS bundled in kernel
#KERNEL_IMAGETYPE = "Image-initramfs-jetson-nano.bin"
#KERNEL_IMAGE_BASE_NAME = "Image-initramfs-jetson-nano.bin"
#INITRAMFS_LINK_NAME = ""
INITRAMFS_NAME = "Initramfs"
INITRAMFS_IMAGE = "tegra-minimal-initramfs"
INITRAMFS_IMAGE_BUNDLE = "1"

这些行实际上创建了一个 initramfs 内置版本的我的内核,并将其放在名为 Image-Initramfs.bin 的部署目录中。它比成功启动的 Image 内核文件略大。所以 Yocto 最终构建了 2 个内核,一个带有 initramfs,一个没有。

ubuntu@ip:~/Desktop/jetson-yocto/build$ du -sh tmp/deploy/images/jetson-nano/Image-Initramfs.bin
36M tmp/deploy/images/jetson-nano/Image-Initramfs.bin
ubuntu@ip:~/Desktop/jetson-yocto/build$ du -sh tmp/deploy/images/jetson-nano/Image--4.9+git0+3c02a65d91-r0-jetson-nano-20190729195650.bin 
33M tmp/deploy/images/jetson-nano/Image--4.9+git0+3c02a65d91-r0-jetson-nano-20190729195650.bin

文档说这是通过辅助编译路径完成的:

Controls whether or not the image recipe specified by INITRAMFS_IMAGE is run through an extra pass (do_bundle_initramfs) during kernel compilation in order to build a single binary that contains both the kernel image and the initial RAM filesystem (initramfs) image. This makes use of the CONFIG_INITRAMFS_SOURCE kernel feature.

Note
Using an extra compilation pass to bundle the initramfs avoids a circular dependency between the kernel recipe and the initramfs recipe should the initramfs include kernel modules. Should that be the case, the initramfs recipe depends on the kernel for the kernel modules, and the kernel depends on the initramfs recipe since the initramfs is bundled inside the kernel image.

问题是 Yocto 没有将这个 initramfs 内核安装到最终的 SD 卡映像中。仅安装了非 initramfs 内核。我无法找到有关如何使其安装 initramfs 版本而不是非 initramfs 版本的 Yocto 指令/设置。

我该怎么做?谢谢。

【问题讨论】:

    标签: linux embedded-linux yocto bitbake yocto-wic


    【解决方案1】:

    如果您使用wic 工具生成 SD 卡映像,那么您可以在local.conf 中添加如下内容

    `IMAGE_BOOT_FILES_append = " Image-Initramfs.bin;${KERNEL_IMAGETYPE}"`
    

    但是,如果您使用的是自定义脚本,那么您必须提供更多信息 并自定义 SD 卡生成脚本。

    【讨论】:

    • 感谢您的回复。不幸的是,目标(NVIDIA Jetson Nano)有一个复杂的分区方案,包含多个自定义二进制文件和一个来自 NVIDIA 的自定义脚本来启动它。我上周尝试实施 wic,但无法使其正常工作。这是我的“问题”帖子:github.com/madisongh/meta-tegra/issues/154
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 2021-03-22
    • 2023-03-22
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多