【问题标题】:How to put an extra file in the kernel image by yoctoyocto 如何在内核映像中添加一个额外的文件
【发布时间】:2017-12-21 18:30:30
【问题描述】:

我无法通过 yocto 将我的 initramfs.cpio 放入我的内核映像中。

我有两个bb文件,一个用来建initramfs,另一个用来建fitimage。 我成功构建了与我的 initramfs 图像捆绑的 fitimage。 但是它总是无法在 fitImage 的 /usr 目录中构建具有 initramfs.cpio.gz 的 fitImage。 (我的意思是,当我使用 fitImage 引导到控制台时,我想在 /usr 中看到一个名为 initramfs.cpio 的文件)

================================================ ====================== 这是我的错误信息..

ERROR: linux-mine-1_4.9.27+gitAUTOINC+d87116e608-r0 do_package: QA Issue: linux-mine: Files/directories were installed but not shipped in any package:
  /usr
  /usr/initramfs-mine-qemu.cpio
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
linux-mine: 2 installed and not shipped files. [installed-vs-shipped]
ERROR: linux-mine-1_4.9.27+gitAUTOINC+d87116e608-r0 do_package: Fatal QA errors found, failing task.
ERROR: linux-mine-1_4.9.27+gitAUTOINC+d87116e608-r0 do_package: Function failed: do_package
ERROR: Logfile of failure stored in: /home/paul/projects/Test/yocto/build/tmp/work/mine-poky-linux-gnueabi/linux-mine/1_4.9.27+gitAUTOINC+d87116e608-r0/temp/log.do_package.26149
ERROR: Task (/home/paul/projects/Test/yocto/yocto-2.2/poky/../meta-mine/recipes-kernel/linux/linux-mine_4.9.bb:do_package) failed with exit code '1'

================================================ ====================== 这是我的内核映像 bb 文件

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"

LINUX_VERSION ?= "4.9.27"

SRCREV = "d87116e608e94ad684b5e94d46c892e33b9e2d78"
SRC_URI = "git://local/kernel;protocol=ssh;branch=master"

#FILES_${PN} += "/usr /usr/initramfs-mine-${MACHINE_ARCH}.cpio"
#FILES_${PN}-${PV} += "/usr /usr/initramfs-mine-${MACHINE_ARCH}.cpio"
#IMAGE_INSTALL = "initramfs-mine"

do_install_append () {
echo "WangPaul : S=[${S}]"
echo "WangPaul : B=[${B}]"
echo "WangPaul : D=[${D}]"
install -d ${D}/usr/
install -m 0444 ${B}/usr/initramfs-mine-${MACHINE_ARCH}.cpio ${D}/usr/
}

================================================ ====================== 这是我的 initramfs bb 文件

LICENSE = "GPLv2"

PACKAGE_INSTALL = "initramfs-live-boot ${VIRTUAL-RUNTIME_base-utils} udev ${ROOTFS_BOOTSTRAP_INSTALL}"
IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}"

inherit core-image

================================================ ====================== 我发现了类似的问题: Ship extra files in kernel module recipe 和 An example of using FILES_${PN}

上面讨论的方法行不通...

任何信息将不胜感激! 谢谢!!

【问题讨论】:

  • 我不确定你想达到什么目的。你看过manual这里吗?如果需要,您可以在 freenode 上加入 #yocto 以获得更多帮助。
  • 嗨@Nayfe,谢谢你的信息~~,我已经阅读了手册,我可以构建一个fitimage捆绑一个ramdisk。但这不是我想要的。我想要一个不捆绑 ramdisk 的 fitimage。然后将它刷到我的设备上,启动,最后,我希望我的 /usr 目录有一个 cpio 文件。
  • 您是否尝试过添加内核映像 bb FILES_${PN} += " /usr/initramfs-mine-${MACHINE_ARCH}.cpio" 让我知道这是否有帮助,如果有帮助我会发布答案。
  • 你确定 ${B}/usr/initramfs-mine-${MACHINE_ARCH}.cpio 存在吗?不应该是 ${DEPLOY_DIR} 吗?
  • 嗨 PauloNeves,是的~我试过了,但还是失败了!!嗨 Nayfe,是的~我检查了 ${B}/usr,有 initramfs-mine-${MACHINE_ARCH}.cpio ~

标签: linux yocto


【解决方案1】:

这个错误似乎是 QA 问题,这意味着源代码已编译但未添加到 rootfs。将以下行添加到您的kernel-image.bb。它会解决这个问题。

FILES_${PN} += "${exec_prefix}/*"

注意:可能在您的kernel.bb 文件中您提供了错误的格式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多