启动Systemd .Service在启动时,找不到ETH0



我正在使用Systemd在单板计算机(嵌入式)平台上启动可执行文件。我希望此应用程序以无头模式运行 - 不登录 - 用户将通过Web浏览器控制输入。

我正在使用运行Debian的TS-7800-V2。

这是我的服务(weberver.service)设置(etc/systemd/system):

[Unit]
Description=Run LWSWS webserver on startup
Wants=network-online.target
After=network.target network-online.target
[Service]
Type=simple
ExecStart=/libwebsockets/build/bin/lwsws
[Install]
WantedBy=multi-user.target

我已经启用并启动了服务,并检查了状态:

root@ts7800-v2:~# systemctl status webserver.service 
��● webserver.service - Run LWSWS webserver on startup
   Loaded: loaded (/etc/systemd/system/webserver.service; enabled; vendor preset
   Active: active (running) since Mon 2017-12-11 11:23:39 PST; 11min ago
 Main PID: 2408 (lwsws)
   CGroup: /system.slice/webserver.service
       ��└��─2408 /libwebsockets/build/bin/lwsws
Dec 11 11:23:39 ts7800-v2 lwsws[2408]: lwsws[2416]:    mounting callback://proto
Dec 11 11:23:39 ts7800-v2 lwsws[2408]: lwsws[2416]:  Using non-SSL mode
Dec 11 11:23:39 ts7800-v2 lwsws[2408]: lwsws[2416]: created client ssl context f
Dec 11 11:23:39 ts7800-v2 lwsws[2408]: lwsws[2416]: Unable to find interface eth
Dec 11 11:23:39 ts7800-v2 lwsws[2408]: lwsws[2416]: init server failed
Dec 11 11:23:39 ts7800-v2 lwsws[2408]: lwsws[2416]: Failed to create vhost local
Dec 11 11:23:39 ts7800-v2 lwsws[2408]: lwsws[2416]: /etc/lwsws/conf.d/test-serve
Dec 11 11:23:39 ts7800-v2 lwsws[2408]: lwsws[2416]: Context creation failed
Dec 11 11:23:39 ts7800-v2 lwsws[2408]: GPS THREAD created successfully
Dec 11 11:23:39 ts7800-v2 lwsws[2408]: MOTOR CONTROL THREAD created successfully

因此,该服务处于活动状态并运行,但是没有建立ETH0连接,因此Web服务器(libwebsockets Web Server LWSWS)无法正常启动。

我的问题是如何使以太网在启动上启动,以便Web服务器可以启动并运行?

在此服务的依赖项中,网络在服务启动之前显示在树上:

root@ts7800-v2:/etc/systemd/system# systemctl list-dependencies webserver.service
��● ��├��─system.slice
��● ��├��─network-online.target
��● ��│ ��└��─networking.service
��● ��└��─sysinit.target
��●   ��├��─dev-hugepages.mount
��●   ��├��─dev-mqueue.mount
��●   ��├��─kmod-static-nodes.service
��●   ��├��─proc-sys-fs-binfmt_misc.automount
��●   ��├��─sys-fs-fuse-connections.mount
��●   ��├��─sys-kernel-config.mount
��●   ��├��─sys-kernel-debug.mount
��●   ��├��─systemd-ask-password-console.path
��●   ��├��─systemd-binfmt.service
��●   ��├��─systemd-hwdb-update.service
��●   ��├��─systemd-journal-flush.service
��●   ��├��─systemd-journald.service
��●   ��├��─systemd-machine-id-commit.service
��●   ��├��─systemd-modules-load.service
��●   ��├��─systemd-random-seed.service
��●   ��├��─systemd-sysctl.service
��●   ��├��─systemd-timesyncd.service
��●   ��├��─systemd-tmpfiles-setup-dev.service

有关如何在Web服务器启动之前开始网络的建议将不胜感激。谢谢!

我认为您缺少网络接口的管理。像NetworkManager一样。如果您已经使用了SystemD,则可能是systemd-networkd是您的解决方案。请阅读Archlinux Wiki的SystemD-Networkd以供参考。

我必须在应用程序处于无头模式时将以太网连接到自动启动。这是ETC/网络/接口文件的内容(CAT):

root@ts7800-v2:/etc/network# cat interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

我添加了" auto eth0"行,现在在我的WebServer.Service之前启动了以太网。

最新更新