systemdを使用してYoctoにコンパイルされた組み込みLinuxシステムがあります。にネットワーク設定ファイルがあります/etc/systemd/network/20-wired.network
。ファイルの内容は次のとおりです。
[Match]
Name=eth0
[Network]
Address=192.168.5.40/24
Gateway=192.168.5.1
DNS=192.168.5.1
ただし、コンピュータを再起動すると、静的IPアドレスが割り当てられるのではなく、DHCPを使用してeth0インターフェイスが正常に設定されました。このip a
コマンドは次のようになります。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
ただし、起動後約5秒待ってから実行すると、systemctl restart systemd-networkd
システムは通常次のように正しく設定されます。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
最後に、タイムリーにネットワークサービスを再起動すると、次のような結果(予想される固定アドレスと不要なDHCPアドレスの両方)が得られるようです。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
ここで何が起こっているのか、またはデバッグする方法を知っている人はいますか?私の設定に間違いなく間違っていますか?
systemctl status systemd-networkd
起動直後、次のものが表示されます(特に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)
数秒後、次のように表示されます。
* 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
したがって、network-online.target サービスが実行されている場合、サービスはまだ「アクティブ」であるように見えます。しかし、それが何を意味するのか、問題があるのかはよくわかりません。
答え1
systemd-networkdとNetworkManagerの両方が実行されていることを確認しました。それは正常ではありませんか?一般的に、次のいずれかをしたいですか? systemctl disable /lib/systemd/system/NetworkManager.service && reboot
問題が解決したようです。
編集:これは答えではないか、少なくとも完全な答えではありません。 NetworkManagerが無効になっても、この現象が再発生します。
答え2
無効にする必要はありません。ネットワーク管理者。次の行を設定ファイルに追加します。
NM_CONTROLLED=no
お役に立てば幸いです。