gpt4 book ai didi

linux - INITRAMFS_IMAGE_BUNDLE 上的 Yocto Warrior 和 SD 卡镜像上的 Linux 内核镜像

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:12 51 4
gpt4 key购买 nike

我正在 Ubuntu 18.04 上使用 Yocto warrior 构建我的嵌入式 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 指令/设置。

我该怎么做?

最佳答案

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

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

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

关于linux - INITRAMFS_IMAGE_BUNDLE 上的 Yocto Warrior 和 SD 卡镜像上的 Linux 内核镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57260710/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com