How to start avahi-autoipd from boot on yocto build via recipes/files?

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

How to start avahi-autoipd from boot on yocto build via recipes/files?

跳至解决方案
3,605 次查看
Anton_K
Contributor III

Hello, I need to start avahi-autoipd with --force-bind option.
I can do it on runtime via: 

/usr/sbin/avahi-autoipd --force-bind -D -w eth0

How can I add this rule to the system interface up for eth0 on the yocto building stage?
Thanks in advance for correct answers

My case: yocto Kirkstone release for i.MX8

0 项奖励
回复
1 解答
3,589 次查看
Chavira
NXP TechSupport
NXP TechSupport

Hi @Anton_K!
Thank you for contacting NXP Support!

To solve this problem you can execute this command as a service at the start of the boot of the board.

After doing this on Yocto try to do the .service following the steps:

1: cd etc/systemd/system
2: create a file .service using vim or nano
3: The file must contain:

[Unit]
Description=” Your Description”

[Service]
ExecStart=/usr/sbin/avahi-autoipd --force-bind -D -w eth0

[Install]
WantedBy=multi-user.target

4: save the file with .service extension

After that, if your commands are executed every time that you turn on your board you can add the service on Yocto.

I found this wiki on how to do that.

https://wiki.koansoftware.com/index.php/Add_a_systemd_service_file_into_a_Yocto_image



Best Regards!
Chavira

在原帖中查看解决方案

4 回复数
3,590 次查看
Chavira
NXP TechSupport
NXP TechSupport

Hi @Anton_K!
Thank you for contacting NXP Support!

To solve this problem you can execute this command as a service at the start of the boot of the board.

After doing this on Yocto try to do the .service following the steps:

1: cd etc/systemd/system
2: create a file .service using vim or nano
3: The file must contain:

[Unit]
Description=” Your Description”

[Service]
ExecStart=/usr/sbin/avahi-autoipd --force-bind -D -w eth0

[Install]
WantedBy=multi-user.target

4: save the file with .service extension

After that, if your commands are executed every time that you turn on your board you can add the service on Yocto.

I found this wiki on how to do that.

https://wiki.koansoftware.com/index.php/Add_a_systemd_service_file_into_a_Yocto_image



Best Regards!
Chavira

3,581 次查看
Anton_K
Contributor III

Thanks for your reply. But it's some strange to create system service for just running another system service. Does it possible to connect this service to eth0 network up/down event?

0 项奖励
回复
3,552 次查看
Chavira
NXP TechSupport
NXP TechSupport

Hi @Anton_K!


I think is possible but is not automatic.

Probably you can solve this problem using a script or something similar to monitor the ethernet status and send the proper commands according to your necessities.


Best Regards!
Chavira

0 项奖励
回复
3,522 次查看
Anton_K
Contributor III

Totally I have solved this problem by your way. I've extended avahi recipe by avahi-autoipd custom service in meta-distro repository.

diff git a/conf/distro/layer.conf b/conf/distro/layer.conf
...
+IMAGE_INSTALL:append = " avahi-autoipd"

diff --git a/recipes-connectivity/avahi/avahi/avahi-autoipd.service b/recipes-connectivity/avahi/avahi/avahi-autoipd.service
...
+++ b/recipes-connectivity/avahi/avahi/avahi-autoipd.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Running avahi-autoipd
+After=network.target
+
+[Service]
+ExecStart=/usr/sbin/avahi-autoipd --force-bind eth0
+ExecStop=/usr/sbin/avahi-autoipd -k eth0
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target

diff --git a/recipes-connectivity/avahi/avahi_%.bbappend b/recipes-connectivity/avahi/avahi_%.bbappend
...
+++ b/recipes-connectivity/avahi/avahi_%.bbappend
@@ -0,0 +1,14 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
+
+SRC_URI += " file://${PN}-autoipd.service "
+
+FILES:avahi-autoipd += " ${systemd_unitdir}/system/${PN}-autoipd.service "
+
+SYSTEMD_PACKAGES += " ${PN}-autoipd"
+SYSTEMD_AUTO_ENABLE:${PN}-autoipd = "enable"
+SYSTEMD_SERVICE:${PN}-autoipd = "${PN}-autoipd.service"
+
+do_install:append() {
+    install -d ${D}${systemd_unitdir}/system
+    install -m 0644 ${WORKDIR}/${PN}-autoipd.service ${D}${systemd_unitdir}/system
+}

 
And it's successfully worked, @Chavira very thanks for case!