Sample Header Ad - 728x90

systemd networking is ignoring network configuration file on boot

3 votes
3 answers
4171 views
I have an embedded linux system compiled with Yocto, using systemd. I have a network configuration file at
/etc/systemd/network/20-wired.network
. The contents of that file are: [Match] Name=eth0 [Network] Address=192.168.5.40/24 Gateway=192.168.5.1 DNS=192.168.5.1 However, when I reboot my machine, the eth0 interface is successfully configured using DHCP instead of assigning the static IP address. The
a
command shows: 2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether f8:dc:7a:3c:27:82 brd ff:ff:ff:ff:ff:ff inet 10.1.1.223/16 brd 10.1.255.255 scope global dynamic noprefixroute eth0 valid_lft 85898sec preferred_lft 85898sec inet6 fe80::43ec:fd39:e1c0:3c05/64 scope link noprefixroute valid_lft forever preferred_lft forever However, if I then wait 5 seconds or so after boot, and do a
restart systemd-networkd
the system will usually be configured correctly like so: 2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether f8:dc:7a:3c:27:82 brd ff:ff:ff:ff:ff:ff inet 192.168.5.40/24 brd 192.168.5.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::43ec:fd39:e1c0:3c05/64 scope link noprefixroute valid_lft forever preferred_lft forever Lastly, with the right timing on the restart of the network service, I can seemingly even get this result (both the intended static address and the unwanted DHCP address): 2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether f8:dc:7a:3c:27:82 brd ff:ff:ff:ff:ff:ff inet 192.168.5.40/24 brd 192.168.5.255 scope global eth0 valid_lft forever preferred_lft forever inet 10.1.1.223/16 brd 10.1.255.255 scope global dynamic noprefixroute eth0 valid_lft 86246sec preferred_lft 86246sec inet6 fe80::43ec:fd39:e1c0:3c05/64 scope link noprefixroute valid_lft forever preferred_lft forever Does anyone know what is going on here or how to debug this? Is there something obvious wrong with my configuration?
status systemd-networkd
shows the following immediately after boot (specifically after network-online.target): * systemd-networkd.service - Network Service Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled) Active: activating (start) since Tue 2021-07-20 12:58:52 UTC; 65ms ago TriggeredBy: * systemd-networkd.socket Docs: man:systemd-networkd.service(8) Main PID: 282 ((networkd)) Tasks: 1 (limit: 3576) Memory: 416.0K CGroup: /system.slice/systemd-networkd.service `-282 (networkd) Some number of seconds later it looks like this: * systemd-networkd.service - Network Service Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2021-07-20 12:58:52 UTC; 3min 20s ago TriggeredBy: * systemd-networkd.socket Docs: man:systemd-networkd.service(8) Main PID: 282 (systemd-network) Status: "Processing requests..." Tasks: 1 (limit: 3576) Memory: 2.0M CGroup: /system.slice/systemd-networkd.service `-282 /lib/systemd/systemd-networkd So it looks like the service is still "activating" when the network-online.target services run. I'm not sure what that means, though, or if it's a problem.
Asked by Dave (91 rep)
Jul 19, 2021, 08:40 PM
Last activity: Aug 1, 2025, 03:12 AM