Yocto Bitbake未将文件从recipe安装到rootfs

Yocto Bitbake未将文件从recipe安装到rootfs,yocto,bitbake,imx6,Yocto,Bitbake,Imx6,我目前正在使用yocto构建系统imx6sxsabresd(IMX6 Solo X)。我已经成功构建了图像,但是我想在init.d中添加一个脚本来打开led。我将在meta fsl bsp发布层中添加linux imx配方 这是我的linux-imx.bbappend文件: FILESEXTRAPATHS_prepend := "${THISDIR}/linux-imx:" SRC_URI += "file://0001-added-pad-for-heartbeat-led.patch

我目前正在使用yocto构建系统imx6sxsabresd(IMX6 Solo X)。我已经成功构建了图像,但是我想在init.d中添加一个脚本来打开led。我将在meta fsl bsp发布层中添加linux imx配方

这是我的linux-imx.bbappend文件:

FILESEXTRAPATHS_prepend := "${THISDIR}/linux-imx:"



SRC_URI += "file://0001-added-pad-for-heartbeat-led.patch \
        file://heartbeat.sh \
        file://heartbeat "



PACKAGECONFIG_append = " heartbeat"



inherit update-rc.d

INITSCRIPT_PACKAGES = "${PN}"

INITSCRIPT_PARAMS = "start"

INITSCRIPT_NAME = "heartbeat.sh"



do_install_append() 
{

  install -d ${D}${sysconfdir}/init.d

  install -m 0755 ${WORKDIR}/heartbeat.sh ${D}${sysconfdir}/init.d/heartbeat.sh




  install -d ${D}/home/root

  install -m 0755 ${WORKDIR}/heartbeat ${D}/home/root/heartbeat

}



FILES_${PN} += "${sysconfdir}/init.d/heartbeat.sh /home/root/heartbeat"

PACKAGES = "${PN}"

我能够使用包含在这个bbappend文件中的补丁成功地创建SD卡映像,但是,heartbeat.sh和heartbeat文件没有复制到添加到输出SD卡文件的最终rootfs。这是非常奇怪的,因为我能够看到这些文件在它们的路径中被复制到../tmp/work/imx6sxsabresd poky linux gnueabi/linux imx/4.14.98-r0/image/

,正如注释所示,附加到内核配方是错误的做法。您应该添加自己的配方,并从映像定义中引用该配方(附加到映像安装)

您的食谱可能类似于:

SUMMARY = "LED heartbeat init script"

inherit update-rc.d

SRC_URI += "\
    file://heartbeat.sh \
"

do_install() {
    install -d ${D}${sysconfdir}/init.d
    install -m 0755 ${WORKDIR}/heartbeat.sh ${D}${sysconfdir}/init.d/
}

FILES_${PN} =  "${sysconfdir}/init.d/heartbeat.sh"

INITSCRIPT_NAME = "heartbeat.sh"
INITSCRIPT_PARAMS = "start 90 5 . stop 20 0 1 6 ."


正如评论所建议的那样,在内核配方中添加是错误的做法。您应该添加自己的配方,并从映像定义中引用该配方(附加到映像安装)

您的食谱可能类似于:

SUMMARY = "LED heartbeat init script"

inherit update-rc.d

SRC_URI += "\
    file://heartbeat.sh \
"

do_install() {
    install -d ${D}${sysconfdir}/init.d
    install -m 0755 ${WORKDIR}/heartbeat.sh ${D}${sysconfdir}/init.d/
}

FILES_${PN} =  "${sysconfdir}/init.d/heartbeat.sh"

INITSCRIPT_NAME = "heartbeat.sh"
INITSCRIPT_PARAMS = "start 90 5 . stop 20 0 1 6 ."


Linux imx听起来像一个内核,对吗?我不希望内核包必须安装在rootfs上。你有没有考虑过使用新的食谱?是的。为什么不呢?有没有另外一个创建rootfs的方法?当我把菜谱分开时,我在执行时遇到了一些问题。它是nxp提供的bsp的ontop。根据定义,在安装rootfs之前引导期间所需的任何内容都不能存储在rootfs上。内核就是其中之一。Linux-imx听起来像内核,对吗?我不希望内核包必须安装在rootfs上。你有没有考虑过使用新的食谱?是的。为什么不呢?有没有另外一个创建rootfs的方法?当我把菜谱分开时,我在执行时遇到了一些问题。它是nxp提供的bsp的ontop。根据定义,在安装rootfs之前引导期间所需的任何内容都不能存储在rootfs上。内核就是其中之一。