Отключить стандартную службу systemd в сборке Yocto - PullRequest
0 голосов
/ 02 июня 2018

Мне нужно запустить собственный сервис systemd, назовем его custom.service.Я знаю, как написать рецепт для его добавления и включения при загрузке:

SYSTEMD_SERVICE_${PN} = "custom.service"
SYSTEMD_AUTO_ENABLE_${PN} = "enable"

Однако он конфликтует с одной из стандартных systemd служб - systemd-timesyncd.service.

Есть ли хороший предпочтительный способ отключить эту службу systemd по умолчанию в моем файле bitbake, даже если systemd_XX.bb на самом деле включает ее?

Я могу создать файл systemd_%.bbappend для изменения настроек systemd,но я не могу найти место, где можно отключить одну службу, оставив все остальные включенными.


Я нашел работающее решение - полностью удалить timesyncd, используя

PACKAGECONFIG_remove = "timesyncd"

Но мне интересно, является ли это подходящим способом и есть ли способ просто отключить его, но оставить в системе.

Ответы [ 4 ]

0 голосов
/ 23 января 2019

Как насчет добавления рецепта .bbappend для конфликтующего сервиса, который вы хотите отключить.В него вы бы добавили: SYSTEMD_AUTO_ENABLE_${PN} = "disable"

0 голосов
/ 02 июня 2018

Обычно вы устанавливаете SYSTEMD_AUTO_ENABLE _ $ {PN} = "отключить", и это позволит службе быть частью образа, но отключено при загрузке.Однако для systemd, которая предоставляет множество сервисных модулей по умолчанию, это может быть не то решение, которое вы, возможно, захотите развернуть.Вы можете хирургическим путем удалить символическую ссылку в etc и убедиться, что служба не запускается автоматически при загрузке, но файл .service по-прежнему является частью образа.Поэтому добавьте следующее в файл systemd _%. Bbappend в своем слое

do_install_append() {
        rm -rf ${D}${sysconfdir}/systemd/system/sysinit.target.wants/systemd-timesyncd.service
} 

. Есть и другие способы отключить это, например, используя предустановки systemd, как описано здесь

0 голосов
/ 05 июня 2018

Я думаю, что "официальный" способ сделать это - создать что-то подобное в вашем проекте:

PACKAGECONFIG_append_pn-systemd = "--disable-timesyncd"

Это в основном то же самое, что вы уже предложили.Чтобы просто не активировать сервис, вы должны сделать это вручную, так как вы можете изменить автоматическое включение только по рецепту.

0 голосов
/ 02 июня 2018

Если система работает нормально при удалении другого пакета, удаление пакета является предпочтительным решением.Меньшее количество пакетов означает более простую систему.

...