Yocto bitbake不调用我的do_安装

Yocto bitbake不调用我的do_安装,yocto,bitbake,Yocto,Bitbake,我有一个诀窍,应该是将一个运行级脚本复制到/etc/init.d中,并从/etc/rc5创建一个指向它的符号链接,但是似乎没有调用do_install函数 下面是我的图层结构。问题bb文件位于树底部的init-wifi.bb。其他带有BB附件的食谱效果很好 . ├── conf │ └── layer.conf ├── recipes-connectivity │ ├── alsa │ │ ├── alsa-lib │ │ └── alsa-lib_1.0.29.bbap

我有一个诀窍,应该是将一个运行级脚本复制到/etc/init.d中,并从/etc/rc5创建一个指向它的符号链接,但是似乎没有调用do_install函数

下面是我的图层结构。问题bb文件位于树底部的init-wifi.bb。其他带有BB附件的食谱效果很好

.
├── conf
│   └── layer.conf
├── recipes-connectivity
│   ├── alsa
│   │   ├── alsa-lib
│   │   └── alsa-lib_1.0.29.bbappend
│   └── wpa-supplicant
│       ├── wpa-supplicant
│       │   ├── wpa_supplicant.conf
│       │   └── wpa_supplicant.conf-sane
│       └── wpa-supplicant_2.4.bbappend
├── recipes-core
│   ├── base-files
│   │   ├── base-files
│   │   │   └── profile
│   │   └── base-files_%.bbappend
│   └── init-ifupdown
│       ├── init-ifupdown-1.0
│       │   └── interfaces
│       └── init-ifupdown_1.0.bbappend
└── recipes-my
    └── init-wifi
        ├── files
        │   └── wifi_start.sh
        └── init-wifi.bb
以下是init-wifi.bb配方:

SUMMARY = "x"
LICENSE = "CLOSED"
#PR = "r0"
SRC_URI += "file://wifi_start.sh"

#INITSCRIPT_NAME = "wifi_start.sh"
#INITSCRIPT_PARAMS = "defaults 90"

do_install() {
    install -d ${D}${sysconfdir}/init.d
    install -d ${D}${sysconfdir}/rcS.d
    install -d ${D}${sysconfdir}/rc1.d
    install -d ${D}${sysconfdir}/rc2.d
    install -d ${D}${sysconfdir}/rc3.d
    install -d ${D}${sysconfdir}/rc4.d
    install -d ${D}${sysconfdir}/rc5.d


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

    ln -sf ${D}${syscondir}/init.d/wifi_start.sh {D}${sysconfdir}/rc5.d/S90wifi_start.sh

}
如果我在do_install函数之外向bb文件引入错误,那么调用bitbake时会出现错误,因此我知道我的配方文件正在被找到并解析。但是,如果我在do_install函数中引入错误,则不会调用它。此外,我没有看到脚本被安装到工作或图像目录中(在删除故意调试错误之后)

如果我强制bitbake使用“bitbake-c install init wifi”运行配方,它将安装文件“work/image”目录:

tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/initwifi/0.0-r0/image/etc/init.d/wifi_start.sh

tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/initwifi/0.0-r0/wifi_start.sh
但是,当我的映像构建并安装在我的模块上时,脚本和链接就不存在了

几天来一直在努力解决这个问题,搜索也没有产生多大帮助

有什么想法吗


谢谢

您没有将新配方添加到图像配方中

IMAGE_INSTALL_append = " init-wifi " 

编辑

我以前也这样做过,效果很好。 我能看到的区别是:

SRC_URI += "file://wifi_start.sh"
应该是

SRC_URI = "file://wifi_start.sh"
因为您正在创建
SRC_URI
,而不是添加到现有URI

我曾经为我使用的每个文件添加md5校验和

你应该加上

FILES_${PN} += "${sysconfdir}/profile.d"
FILES_${PN} += "${sysconfdir}/rcS.d"
FILES_${PN} += "${sysconfdir}/rc1.d"
FILES_${PN} += "${sysconfdir}/rc2.d"
FILES_${PN} += "${sysconfdir}/rc3.d"
FILES_${PN} += "${sysconfdir}/rc4.d"
FILES_${PN} += "${sysconfdir}/rc5.d"

文件

放置在包中的目录或文件的列表

要使用FILES变量,请提供一个包名覆盖,用于标识生成的包。然后,提供一个以空格分隔的文件或路径列表,这些文件或路径标识要包含在结果包中的文件。以下是一个例子:

FILES_${PN} += "${bindir}/mydir1/ ${bindir}/mydir2/myfile"

您没有将新配方添加到图像配方中

IMAGE_INSTALL_append = " init-wifi " 

编辑

我以前也这样做过,效果很好。 我能看到的区别是:

SRC_URI += "file://wifi_start.sh"
应该是

SRC_URI = "file://wifi_start.sh"
因为您正在创建
SRC_URI
,而不是添加到现有URI

我曾经为我使用的每个文件添加md5校验和

你应该加上

FILES_${PN} += "${sysconfdir}/profile.d"
FILES_${PN} += "${sysconfdir}/rcS.d"
FILES_${PN} += "${sysconfdir}/rc1.d"
FILES_${PN} += "${sysconfdir}/rc2.d"
FILES_${PN} += "${sysconfdir}/rc3.d"
FILES_${PN} += "${sysconfdir}/rc4.d"
FILES_${PN} += "${sysconfdir}/rc5.d"

文件

放置在包中的目录或文件的列表

要使用FILES变量,请提供一个包名覆盖,用于标识生成的包。然后,提供一个以空格分隔的文件或路径列表,这些文件或路径标识要包含在结果包中的文件。以下是一个例子:

FILES_${PN} += "${bindir}/mydir1/ ${bindir}/mydir2/myfile"
LPS

谢谢你的帮助和建议。有了它们,我就能够让它安装文件并创建链接

我对init-wifi.bb文件进行了建议的更改:

SUMMARY = "x"
LICENSE = "CLOSED"
#PR = "r0"
SRC_URI = "file://wifi_start.sh"


FILES_${PN} += "${sysconfdir}/init.d"
FILES_${PN} += "${sysconfdir}/rcS.d"
FILES_${PN} += "${sysconfdir}/rc1.d"
FILES_${PN} += "${sysconfdir}/rc2.d"
FILES_${PN} += "${sysconfdir}/rc3.d"
FILES_${PN} += "${sysconfdir}/rc4.d"
FILES_${PN} += "${sysconfdir}/rc5.d"


do_install() {

install -d ${D}${sysconfdir}/init.d
install -d ${D}${sysconfdir}/rcS.d
install -d ${D}${sysconfdir}/rc1.d
install -d ${D}${sysconfdir}/rc2.d
install -d ${D}${sysconfdir}/rc3.d
install -d ${D}${sysconfdir}/rc4.d
install -d ${D}${sysconfdir}/rc5.d   

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

ln -sf ${D}${syscondir}/init.d/wifi_start.sh      ${D}${sysconfdir}/rc5.d/S90wifi_start.sh

}
此外,我还必须将下面建议的行添加到meta mylayer/conf/layer.conf

IMAGE_INSTALL_append = " init-wifi "
我得到一个警告:

警告:QA问题:初始化wifi中的Symlink/etc/rc5.d/S90wifi_start.sh指向TMPDIR[Symlink to sysroot]

所以我想我会重温一下我是如何做链接的,但我已经“脱离了上死点”,再次前进

谢谢

-史蒂夫

谢谢你的帮助和建议。有了它们,我就能够让它安装文件并创建链接

我对init-wifi.bb文件进行了建议的更改:

SUMMARY = "x"
LICENSE = "CLOSED"
#PR = "r0"
SRC_URI = "file://wifi_start.sh"


FILES_${PN} += "${sysconfdir}/init.d"
FILES_${PN} += "${sysconfdir}/rcS.d"
FILES_${PN} += "${sysconfdir}/rc1.d"
FILES_${PN} += "${sysconfdir}/rc2.d"
FILES_${PN} += "${sysconfdir}/rc3.d"
FILES_${PN} += "${sysconfdir}/rc4.d"
FILES_${PN} += "${sysconfdir}/rc5.d"


do_install() {

install -d ${D}${sysconfdir}/init.d
install -d ${D}${sysconfdir}/rcS.d
install -d ${D}${sysconfdir}/rc1.d
install -d ${D}${sysconfdir}/rc2.d
install -d ${D}${sysconfdir}/rc3.d
install -d ${D}${sysconfdir}/rc4.d
install -d ${D}${sysconfdir}/rc5.d   

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

ln -sf ${D}${syscondir}/init.d/wifi_start.sh      ${D}${sysconfdir}/rc5.d/S90wifi_start.sh

}
此外,我还必须将下面建议的行添加到meta mylayer/conf/layer.conf

IMAGE_INSTALL_append = " init-wifi "
我得到一个警告:

警告:QA问题:初始化wifi中的Symlink/etc/rc5.d/S90wifi_start.sh指向TMPDIR[Symlink to sysroot]

所以我想我会重温一下我是如何做链接的,但我已经“脱离了上死点”,再次前进

谢谢


-Steve

我尝试将IMAGE\u INSTALL\u append=“init wifi”添加到我的配方layer.conf和local.conf中,但它们似乎都没有设置工作/安装目录中的文件。我尝试将IMAGE\u INSTALL\u append=“init wifi”添加到我的配方layer.conf和local.conf中,所有这些似乎都没有在工作/安装目录中设置文件。不确定协议。所以我在你的回复上做了标记。再次感谢!你的帮助是不可或缺的,非常感谢!我不确定协议。所以我在你的回复上做了标记。再次感谢!你的帮助是不可或缺的,非常感谢!