Мне нужно настроить WireGuard для запуска VPN при загрузке на устройстве Embedded Linux.
Мой рецепт устанавливает /etc/wireguard/wg0.conf
во многом как примеры, найденные в Интернете.
Затем я пытаюсь включить службу на SystemD, как это на моем wireguard.bb
:
SYSTEMD_SERVICE = "wg-quick@wg0.service"
SYSTEMD_AUTO_ENABLE = "enable"
Но bitbake
выдает мне ошибку:
ERROR: Function failed: SYSTEMD_SERVICE_my-conf value wg-quick@wg0.service does not exist
Я проверил временный каталог, и файл wg0.conf
появляется в правильных местах, но кажется, что SYSTEMD_SERVICE
bitbake не знает, как развернуть "wg0" после знака @
.
Если я попытаюсь без имя интерфейса (wg0
):
SYSTEMD_SERVICE = "wg-quick@.service"
Битбэйк доволен и завершает мой рецепт, но это не то, что systemd
ожидает. Запускать сервис без интерфейса не имеет смысла ...
Затем я попробовал другой подход и отделил сам пакет «wireguard» от конфигурации (пакет «wireguard-conf») и добавил DEPENDS
и RDEPENDS
в «wireguard».
Это стало еще хуже, поскольку мой рецепт wireguard-conf.bb
не содержит файл "wg-quick @ .service" (он происходит из зависимости "wireguard").
Ну
Я не знаю, как правильно это исправить, и любые предложения будут высоко оценены.
Дополнительная информация
Я использую Yocto 2.0.3 в этом проекте (без надежды на его обновление).
Благодаря комментариям @TomasNovotny мне удалось сравнить мой "systemd.bbclas" с Github и заметил изменение в systemd_populate_packages()
, которое, похоже, решает проблему.