Yocto Bitbake未将文件从recipe安装到rootfs
我目前正在使用yocto构建系统imx6sxsabresd(IMX6 Solo X)。我已经成功构建了图像,但是我想在init.d中添加一个脚本来打开led。我将在meta fsl bsp发布层中添加linux imx配方 这是我的linux-imx.bbappend文件: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
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上。内核就是其中之一。