如何为yocto systemd服务添加配方
我想添加自定义yocto systemd服务 我指的是[ 但bb代码不工作。未安装在文件系统中。如何为yocto systemd服务添加配方,yocto,systemd,recipe,Yocto,Systemd,Recipe,我想添加自定义yocto systemd服务 我指的是[ 但bb代码不工作。未安装在文件系统中。 (eth0.0服务代码正常) 如何修复它 eth0_0.1.bb SUMMARY = "Install and start a systemd service" SECTION = "eth0" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f
(eth0.0服务代码正常) 如何修复它
eth0_0.1.bb
SUMMARY = "Install and start a systemd service"
SECTION = "eth0"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
SRC_URI += "file://eth0.service"
S = "${WORKDIR}"
inherit systemd
SYSTEMD_SERVICE_${PN} = "eth0.service"
do_install() {
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/eth0.service ${D}${systemd_system_unitdir}/
}
FILES_${PN} += "/lib/systemd/system"
REQUIRED_DISTRO_FEATURES= "systemd"
eth0.0服务
[Unit]
Description=Network interfaces
Wants=network.target
Before=network.target
BindsTo=sys-subsystem-net-devices-eth0.device
After=sys.subsystem-net-devices-eth0.device
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c "ifup eth0"
ExecStop=/bin/sh -c "ifdown eth0"
[Install]
WantedBy=multi-user.target
如果您有
inherit-systemd
和systemd\u-SERVICE\u${PN}=“eth0.SERVICE”
,您似乎应该这样做。因此,我认为您需要添加的是systemd\u-AUTO\u-ENABLE=“ENABLE”
a
确保
.service
文件也有[Install]
部分。其次,如果您有继承systemd
和系统d\u服务${PN}=“eth0.service”,请确保通过image\u Install\u append=“eth0”
中的将包添加到映像中
您似乎应该这样做。因此我认为您需要添加的是SYSTEMD\u AUTO\u ENABLE=“ENABLE”
a
请确保.service
文件也有[Install]
部分。其次,请确保通过image\u Install\u append=“eth0”
在local.conf
中为网络添加包,您还可以使用
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://eth0.network"
FILES_${PN} += "${systemd_unitdir}/network/*"
do_install_append() {
install -d ${D}${systemd_unitdir}/network/
install -m 0644 ${WORKDIR}/*.network ${D}${systemd_unitdir}/network/
}
使用文件/eth0.network
:
[Match]
Name=eth0
[Network]
DHCP=ipv4
对于网络,您还可以创建一个systemd_uz%.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://eth0.network"
FILES_${PN} += "${systemd_unitdir}/network/*"
do_install_append() {
install -d ${D}${systemd_unitdir}/network/
install -m 0644 ${WORKDIR}/*.network ${D}${systemd_unitdir}/network/
}
使用文件/eth0.network
:
[Match]
Name=eth0
[Network]
DHCP=ipv4
您是否已在本地通过例如image\u INSTALL\u append=“eth0”将其添加到图像中。conf@Khem哦,我很愚蠢。它很有效!我通过do_install()创建了符号链接。“ln-sf${systemd_unitdir}/system/eth0.service\${D}${sysconfdir}”/systemd/system/multi-user.target.wants/eth0.service'但是错误->ln:无法创建符号链接。怎么了?如果您有继承systemd
和systemd\u服务${PN}=“eth0.service”
您似乎有,那么您不需要进行符号链接。所以我认为您需要添加的是systemd\u AUTO\u ENABLE=“ENABLE”
并确保.service文件具有您似乎也具有的[Install]部分。您是否已通过例如本地的image\u Install\u append=“eth0”将其添加到映像中。conf@Khem哦,我很愚蠢。它很有效!我通过do_install()创建了符号链接。“ln-sf${systemd_unitdir}/system/eth0.service\${D}${sysconfdir}”/systemd/system/multi-user.target.wants/eth0.service'但是错误->ln:无法创建符号链接。怎么了?如果您有继承systemd
和systemd\u服务${PN}=“eth0.service”
您似乎有,那么您不需要进行符号链接。所以我认为您需要添加的是systemd\u AUTO\u ENABLE=“ENABLE”
并确保.service文件中有您似乎也有的[Install]部分。