等待connman在系统系统中完成网络配置

时间:2014-01-23 17:01:26

标签: beagleboneblack angstrom-linux systemd connman

有没有办法在serviceX运行之前配置systemd服务(例如serviceX)以等待connmand服务完成配置网络接口?根据我对systemd的理解,使用或依赖network.target是没有意义的,因为该功能被严重破坏。我正在使用的系统(带Angstrom Linux的BeagleBone Black)使用connman而不是NetworkManager。

3 个答案:

答案 0 :(得分:4)

根据systemd文档,所有需要在启动时等待在线连接工作的系统单元需要包含以下内容:

[Unit]
...
Wants=network-online.target
After=network-online.target

如果您想与旧的systemd版本兼容,您还可以使用:

[Unit]
...
Wants=network.target network-online.target
After=network.target network-online.target

这是针对systemd的。使用NetworkManager(为了完整性,我知道你没有使用它),这是有效的,因为上游版本0.9.10和包括Fedora在内的一些发行版也适用于较旧的上游版本。

https://bugzilla.gnome.org/show_bug.cgi?id=728965

当您使用connman时,您需要检查connman是否正确实现network-online.target。检查connman 1.30源代码显示没有network-online.target的外观,所以我必须假设connman落后。您可能希望在connman和/或Linux发行版中启动功能请求。在这种情况下,如果你在这里添加一个关于它的说明会很好。

基本上,对于较新的systemd版本,正确实现network-online.target的网络服务以及使用正确依赖关系的服务,一切都应该为用户开箱即用。

根据对另一个答案的评论,connman.service的单位部分如下:

[Unit]
Description=Connection service
After=syslog.target

至少应该在Before=network.targetAfter=syslog.target对于当前的systemd版本是多余的。但是,network-online.target的完整实施将是首选。

答案 1 :(得分:0)

在撰写本文时,

Wants=network.target network-online.targetAfter=network.target network-online.target似乎不足以在BeagleBone Black上使用Angstrom。我还必须将connman.service添加到Wants=,以便让所有内容正常运行。

答案 2 :(得分:-2)

按照here的说明,我发现这行(在.service文件的[Unit]部分中)对我有用:

Wants=network-online.target #wait for network up. Can slow down script.

我将此修补程序应用于所述目的,以使opkg upgrade正常工作,现在就可以了。我认为使用network-online而不是network可能就是诀窍。