Yocto bitbake不调用我的do_安装
我有一个诀窍,应该是将一个运行级脚本复制到/etc/init.d中,并从/etc/rc5创建一个指向它的符号链接,但是似乎没有调用do_install函数 下面是我的图层结构。问题bb文件位于树底部的init-wifi.bb。其他带有BB附件的食谱效果很好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
.
├── 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中,所有这些似乎都没有在工作/安装目录中设置文件。不确定协议。所以我在你的回复上做了标记。再次感谢!你的帮助是不可或缺的,非常感谢!我不确定协议。所以我在你的回复上做了标记。再次感谢!你的帮助是不可或缺的,非常感谢!