avahi-daemon是一种Linux操作系统上运行在客户机上实施查找基于网络的Zeroconf service的服务守护进程。 该服务可以为Zeroconf网络实现DNS服务发现及DNS组播规范。 用户程序通过Linux D-Bus信息传递接收发现到网络服务和资源的通知。 该守护进程配合缓存用户程序的答复,以帮助减少因答复而产生的网络流量。
目前工作中使用到的目的是为了在手机端使用类似ZeroConf 软件,能在http服务中找到运行中的设备以及显示相关的信息,便于工作人员的维护。
记录工作遇到的问题
- 在文件系统添加了dbus、avahi 相关的配置
- 启动时,avahi-daemon无法正常启动,使用指令avahi-daemon时,启动失败,错误原因:dbus连接未成功,解决如下:
- 在/etc/init.d/目录下,找到dbus,使用指令 dbus start, 开启dbus服务
- 重新使用avahi-daemon指令开启服务,启动失败,错误原因:没有权限
- 根据错误提示,执行指令 chmod 771 /...(错误提示无权限目录)
- 再次执行avahi-daemon指令,启动失败,错误原因:socket 没有权限
- 这个错误是由linux内核中的部分配置引起的, ANDROID_PARANOID_NETWORK, android paranoid网络,对linux内核网络部分的改动,通过这个改动增加了网络的认证机制。从而导致avahi-daemon无法正常启动。修改linux内核中的相关配置。
- 将该网络的相关配置关闭后,avahi-daemon服务启动成功
- avahi-daemon服务启动,但是缺少http服务,只有ssh与FTP服务。解决方法,添加http.service服务,在/etc/avahi/services目录下。添加服务后有可能会出现无法打开你添加的服务文件,可以使用chmod 644 (你添加的文件)。因为avahi-daemon需要有root的权限执行。
- 参考网站 :
- http://hyb757.blog.163.com/blog/static/337191012011380393068/
- https://dev.openwrt.org/browser/packages/libs/avahi/files/service-http?rev=15247
- http://unix.stackexchange.com/questions/268639/avahi-daemon-fails-to-start-with-failed-to-chroot-permission-denied-but-on
- https://lists.linaro.org/pipermail/linaro-dev/2012-Apr