开始学习
使用 systemd 配置网络
通常我们在 Linux 中使用 ifconfig 或 ip 命令来配置网络,但这样配置是临时的,重启系统之后又没了。那怎么样才能优雅地配置网络呢?
其实在 iMX8 Yocto BSP 中,默认使用 systemd 系统管理程序作为第一个进程,并且提供了 systemd-networkd 服务,该服务会从 /etc/systemd/network 目录读取配置文件来管理网络设备。
网络管理命令
Yocto 默认提供了 systemd,使用 Systemd-Networkd 接管网络配置(位于 /lib/systemd/systemd-networkd),因此我们可以使用如下命令查看、控制网络服务。
# 查看网络服务的状态
systemctl status systemd-networkd
# 启动网络服务
systemctl start systemd-networkd
# 停止网络服务
systemctl stop systemd-networkd
# 重启网络服务
systemctl restart systemd-networkd
# 设置开机启动网络服务
systemctl enable systemd-networkd
# 禁止开机启动网络服务
systemctl disable systemd-networkd
网络配置文件
启动系统后,为了方面管理网络配置,我们可以在 /etc/systemd/network/ 目录中添加网络配置文件。
例如,添加一个动态分配 IP 的配置文件 10-wired-dhcp.network,内容如下:
[Match]
Name=eth0
[Network]
DHCP=yes
[DHCP]
RouteMetric=0
再添加一个静态 IP 配置文件 20-wired-static.network,内容如下:
[Match]
Name=eth0
[Network]
Address=192.168.1.100/24
DNS=192.168.1.1
DNS=114.114.114.114
[Route]
Gateway=192.168.1.1
Metric=100
文件名前面的数字表示优先级,数字越小优先级越高,因此上述两个配置文件会优先使用 dhcp 网络配置。
重启网络服务即可看到效果
systemctl restart systemd-networkd
使用 networkctl 命令查看网卡状态
root@imx8mqevk:~# networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 eth0 ether routable configuring