systemdを組み込んだだけだと、ネットワークインターフェイスが有効化されない。 systemdにはネットワークインターフェイスの設定を行うsystemd-networkdが存在するが、 yoctoのsystemdのレシピではデフォルトでは組み込まれない。
connmanを追加する方法もあるが、こちらはjethroではNFSやCIFSをブート時にマウントする際に問題があるため、systemd-networkdを有効化する方法を調査した。
systemd-networkdの有効化
local.confに下記を追加する。
PACKAGECONFIG_pn-systemd += " networkd"
ネットワークインターフェイスの設定
connmanと異なり、自動的にDHCPが有効になったりはしないので、設定ファイルを作成する必要がある。
DHCP
DHCPにより動的にIPアドレスを割り当てるには「/etc/systemd/network/wired.network」を下記の内容で作成する。
[Match] Name=eth0 [Network] DHCP=ipv4
スタティックIPアドレス
IPアドレスを静的に割り当てるには「/etc/systemd/network/wired.network」を下記の内容で作成する。
[Match] Name=eth0 [Network] Address=192.168.1.10/24
動作確認
$ systemctl status systemd-networkd.service ● systemd-networkd.service - Network Service Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled) Active: inactive (dead) since Tue 2016-03-15 13:22:52 UTC; 7min ago Docs: man:systemd-networkd.service(8) Process: 142 ExecStart=/lib/systemd/systemd-networkd (code=exited, status=0/SUCCESS) Main PID: 142 (code=exited, status=0/SUCCESS) Status: "Shutting down..." Mar 15 13:22:52 raspberrypi2 systemd[1]: systemd-networkd.service changed ru...m Mar 15 13:22:52 raspberrypi2 systemd-networkd[142]: Got message type=signal s... Mar 15 13:22:52 raspberrypi2 systemd-networkd[142]: Got message type=signal s... Mar 15 13:22:52 raspberrypi2 systemd[1]: Got notification message for unit s...e Mar 15 13:22:52 raspberrypi2 systemd[1]: systemd-networkd.service: Got notif...) Mar 15 13:22:52 raspberrypi2 systemd[1]: systemd-networkd.service: got STOPP...1 Mar 15 13:22:52 raspberrypi2 systemd[1]: Child 142 belongs to systemd-networ...e Mar 15 13:22:52 raspberrypi2 systemd[1]: systemd-networkd.service: main proc...S Mar 15 13:22:52 raspberrypi2 systemd[1]: systemd-networkd.service changed st...d Mar 15 13:22:52 raspberrypi2 systemd[1]: systemd-networkd.service: cgroup is...y Hint: Some lines were ellipsized, use -l to show in full.
ネットワークインターフェイスの設定を行ったあとstatus=0/SUCCESSで終了している。
systemd-networkd.serviceを確認すると、下記のようになっているため正しい動作といえる。
[Service] ... Restart=on-failure ...
ifconfigで確認すると、wired.networkの通りに設定されている。
$ ifconfig eth0 Link encap:Ethernet HWaddr B8:27:EB:A2:C7:F2 inet addr:192.168.21.100 Bcast:192.168.21.255 Mask:255.255.255.0 inet6 addr: fe80::ba27:ebff:fea2:c7f2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1183 errors:0 dropped:0 overruns:0 frame:0 TX packets:191 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:67116 (65.5 KiB) TX bytes:32256 (31.5 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:6240 errors:0 dropped:0 overruns:0 frame:0 TX packets:6240 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:474240 (463.1 KiB) TX bytes:474240 (463.1 KiB)