我目前正在使用yocto来构建系统imx6sxsabresd(IMX6 Solo X)。我已经成功构建了映像,但是我想向init.d添加脚本以打开LED。我将在meta-fsl-bsp-release层中附加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文件中包含的补丁程序成功创建sdcard映像,但是,文件heartbeat.sh和heartbeat不会复制到添加到输出sdcard文件的最终rootfs中。这很奇怪,因为我能够在它们的路径中看到这些文件,并将它们复制到../ tmp / work / imx6sxsabresd-poky-linux-gnueabi / linux-imx / 4.14.98-r0 / image /
答案 0 :(得分:0)
正如评论所建议的那样,将其添加到内核配方是错误的方法。您应该改为添加自己的配方,并从图像定义中引用该配方(附加到IMAGE_INSTALL)。
您的食谱可能类似于:
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 ."