我正在寻找一个用于在yocto中启用systemd配方的模板配方。可执行文件已由yocto提供的配方安装。此配方的目标是在启动时提供make /usr/bin/btattach
。
首先,我在相应配方目录的图层中创建了以下结构:
btattach-systemd/
|-- files
| `-- btattach.service
`-- btattach-systemd.bb
食谱的内容
SUMMARY = "Writes patterns to the fb device"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
inherit systemd
REQUIRED_DISTRO_FEATURES= "systemd"
SRC_URI = "file://btattach.service"
S = "${WORKDIR}"
do_install () {
install -m 0644 ${WORKDIR}/btattach.service.service ${D}${sysconfdir}/systemd/system
}
SYSTEMD_SERVICE_${PN} = "btattach.service"
除此之外,图像配方中的IMAGE_INSTALL
已使用btattach-systemd
正确扩展。
bitbake btattach-systemd
运行正常,但在尝试构建完整图像时,整个图像位于do_rootfs
步。错误:
* opkg_solver_install: Cannot install package btattach-systemd.
关于bug在哪里的想法?
答案 0 :(得分:1)
我认为配方应该是这样的(省略摘要,许可证,许可证校验和,并假设二进制包被称为“btattach”):
SRC_URI = "file://btattach.service"
SYSTEMD_SERVICE_${PN} = "btattach.service"
inherit systemd
do_install_append() {
install -d ${D}${systemd_unitdir}/system
for service in ${SYSTEMD_SERVICE_${PN}}; do
install -m 0644 ${WORKDIR}/${service} ${D}${systemd_unitdir}/system/
sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_unitdir}/system/${service}
done
}
RDEPENDS_${PN} = "btattach"
答案 1 :(得分:1)
我很抱歉没有对您的问题发表评论,因为我对此没有声誉。此外,LetoThe2nd answer比我的更完整,但是可以通过以下方式快速解决问题:
在我看来,您正在安装'btattach.service.service'
而不是'btattach.service'
。
答案 2 :(得分:1)
假设.service文件是正确的,我对Yocto配方的看法以及它可能失败的原因是因为btattach.service文件不包含在安装中,这是最后一行所做的。
您是否已确保事先bitbake btattach.systemd -c cleanall
和bitbake btattach.systemd -c cleanstate
,因为我注意到Yocto食谱中的拼写错误为btattach.service.service
。
SUMMARY = "Writes patterns to the fb device"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
inherit systemd
REQUIRED_DISTRO_FEATURES= "systemd"
SRC_URI = "file://btattach.service"
S = "${WORKDIR}"
do_install () {
install -m 0644 ${WORKDIR}/btattach.service ${D}${sysconfdir}/systemd/system
}
SYSTEMD_SERVICE_${PN} = "btattach.service"
FILES_${PN} += "/lib/systemd/system/btattach.service"