как добавить рецепт для сервиса yocto systemd - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу добавить пользовательскую службу systemd yocto.

Я имею в виду [ Включить системные службы, используя yocto

, но не работающий код bb.не установлен в файловой системе.
(с кодом eth0.service все в порядке)

как это исправить?


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.service

[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

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Для сети вы также можете создать systemd _%. Bbappend с

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

SRC_URI += "file://eth0.network"

FILES_${PN} += "{sysconfdir}/systemd/network/* "

do_install_append() {
    install -d ${D}${systemd_unitdir}/network/
    install -m 0644 ${WORKDIR}/*.network ${D}${systemd_unitdir}/network/
}

с files/eth0.network:

[Match]
Name=eth0

[Network]
DHCP=ipv4
0 голосов
/ 13 февраля 2019

, если у вас есть inherit systemd и SYSTEMD_SERVICE_${PN} = "eth0.service", которые, как вам кажется, следовало бы сделать.Поэтому я думаю, что вам нужно добавить SYSTEMD_AUTO_ENABLE = "enable" и убедиться, что в файле .service есть раздел [Install], который, кажется, у вас также есть.Во-вторых, также убедитесь, что пакет добавлен к изображению через IMAGE_INSTALL_append = " eth0" в local.conf

...