如何为Yocto构建的树莓派5设置静态IP地址?
树莓派5 Yocto镜像静态IP配置失败排查
一、镜像构建配置
基于meta-raspberrypi/conf/machine/raspberrypi5.conf修改,添加dhcpcd等模块后的配置如下:
#@TYPE: Machine #@NAME: RaspberryPi 5 Development Board (64bit) #@DESCRIPTION: Machine configuration for the RaspberryPi 5 in 64 bits mode require conf/machine/include/arm/armv8-2a/tune-cortexa76.inc include conf/machine/include/rpi-base.inc MACHINE_FEATURES += "pci" MACHINE_EXTRA_RRECOMMENDS += "\ linux-firmware-rpidistro-bcm43455 \ bluez-firmware-rpidistro-bcm4345c0-hcd \ linux-firmware-rpidistro-bcm43456 \ bluez-firmware-rpidistro-bcm4345c5-hcd \ nano \ setxkbmap \ dhcpcd \ " RPI_KERNEL_DEVICETREE = "\ broadcom/bcm2712-rpi-5-b.dtb \ " RPI_KERNEL_DEVICETREE_OVERLAYS:append = " overlays/bcm2712d0.dtbo" SDIMG_KERNELIMAGE ?= "kernel_2712.img" SERIAL_CONSOLES ?= "115200;ttyAMA10" VC4DTBO ?= "vc4-kms-v3d" # When u-boot is enabled we need to use the "Image" format and the "booti" # command to load the kernel KERNEL_IMAGETYPE_UBOOT ?= "Image" # "zImage" not supported on arm64 and ".gz" images not supported by bootloader yet KERNEL_IMAGETYPE_DIRECT ?= "Image" KERNEL_BOOTCMD ?= "booti" UBOOT_MACHINE = "rpi_arm64_config"
二、问题现象
尝试配置静态IP后,执行ifconfig查看eth0状态,无IP地址输出:
eth0 Link encap:Ethernet HWaddr 2C:CF:67:1F:AA:33 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packeyts:0 errors:0 dropped:0 pverruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:107
三、已尝试操作
- 参考Yocto静态IP配置方案进行设置,无效
- 手动修改网络配置文件(从
80-wired.network改为50-wired.network),配置内容如下:
[Match] Type=ether Name=eth0 KernelCommandLine=!nfsroot KernelCommandLine=!ip [Network] DHCP=no Address=172.16.30.53/24 Gateway=172.16.30.254 DNS=8.8.8.8 [DHCP] UseMTU=yes RouteMetric=10 ClientIdentifer=mac
四、排查建议
- 检查systemd-networkd服务状态:执行
systemctl status systemd-networkd,确认服务是否正常启动,有无报错信息 - 验证配置文件语法:执行
networkctl reload,查看是否有配置格式错误提示 - 检查网卡链路状态:执行
ethtool eth0,查看Link detected字段是否为yes,确认物理链路是否连通 - 查看网络服务日志:执行
journalctl -u systemd-networkd,查找配置加载失败、IP分配异常的具体原因 - 确认Yocto构建依赖:检查镜像是否包含
systemd-networkd包,需在IMAGE_INSTALL中添加该组件 - 排查服务冲突:由于同时添加了
dhcpcd,可能与systemd-networkd抢占网卡管理权,建议禁用dhcpcd服务:systemctl disable --now dhcpcd,再重启systemd-networkd:systemctl restart systemd-networkd
内容的提问来源于stack exchange,提问作者minimus_maximus
相关产品推荐
相关产品推荐

