现有可执行文件的systemd yocto配方

现有可执行文件的systemd yocto配方,yocto,bitbake,openembedded,Yocto,Bitbake,Openembedded,我正在寻找一个模板配方,用于在yocto中启用systemd配方。可执行文件已经由yocto提供的配方安装。此配方的目标是提供启动时运行的make/usr/bin/btattach 首先,我在相应的配方目录中的层中创建了以下结构: btattach-systemd/ |-- files | `-- btattach.service `-- btattach-systemd.bb 食谱的内容 SUMMARY = "Writes patterns to the fb device" LICEN

我正在寻找一个模板配方,用于在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\u安装
已通过
btattach systemd
正确扩展

bitbake btattach systemd
运行正常,但在尝试构建完整映像时,请在整个映像的
do_rootfs
步骤中执行。错误如下:

 * opkg_solver_install: Cannot install package btattach-systemd.                                    

关于bug在哪里的想法?

我认为配方应该如下所示(省略摘要、许可证、许可证校验和,并假设二进制软件包称为“btattach”):


我认为配方应该如下所示(省略摘要、许可证、许可证校验和,并假设二进制软件包名为“btattach”):


很抱歉,我没有评论你的问题,因为我没有这方面的声誉。此外,它比我的更完整,但这里有一个可能的快速修复方法:


在我看来,您是在安装
'btattach.service.service'
而不是
'btattach.service'

我很抱歉没有对您的问题进行评论,因为我对此没有声誉。此外,它比我的更完整,但这里有一个可能的快速修复方法:


在我看来,您安装的是
'btattach.service.service'
,而不是
'btattach.service'

假设.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"

假设.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"

这似乎试图安装在
SYSTEMD\u服务下注册的所有软件包?我不确定这是我的问题。你能详细说明一下吗?是的,它尝试这样做,当然你也可以手动将其限制为一个文件。由于您目前没有提供更多详细信息(查看日志!),我个人猜测您是在某种程度上弄乱了路径。请仔细查看我给您的示例中的systemd_unitdir引用。这似乎尝试安装在
systemd_SERVICE
下注册的所有软件包?我不确定这是我的问题。你能详细说明一下吗?是的,它尝试这样做,当然你也可以手动将其限制为一个文件。由于您目前没有提供更多详细信息(查看日志!),我个人猜测您是在某种程度上弄乱了路径。请仔细查看我给您的示例中的systemd_unitdir引用。