四、Yocto创建静态IP和VLAN(基于raspiberrypi 4B)

Yocto创建VLAN配置

在车载域控中很多时候需要创建VLAN,本小节记录如何为yocto构建出来的image自动化创建静态IP以及VLAN。

关于各种VLAN的配置参考:VLAN

1. ubuntu系统中使用netplan创建VLAN

正常情况下我们在ubuntu系统中可以通过netplan来自动化创建vlan,下面给一个配置文件01-network-manager-all.ymal:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
  vlans:
    eth0.104:
      id: 104
      link: eth0
      addresses: [120.104.10.20/24]
      routes:
      - to: 239.0.104.0/24
        via: 0.0.0.0
        on-link: true

将这个文件放到/etc/netplan/文件夹下重启即可看见自动生成的vlan网卡。

2. 嵌入式系统中使用systemd-networkd创建VLAN

在嵌入式系统中不存在netplan,我们可以使用systemd-networkd来创建VLAN. 我们的配置文件需要放到/etc/systemd/network文件夹下:

里面的具体内容:

10-eth0.network:(当eth0网卡注册时设置静态IP 网关和DNS,以及创建104vlan)

[Match]
Name=eth0

[Network]
Address=192.168.34.20/24
Gateway=192.168.34.1
DNS=8.8.8.8

VLAN=eth0.104

20-eth0.104.netdev:(根据netdev创建vlan104网卡)

[NetDev]
Name=eth0.104
Kind=vlan

[VLAN]
Id=104

30-eth0.104.network:(配置vlan104网卡的ip和网关)

[Match]
Name=eth0.104

[Network]
Address=120.104.10.20/24
Gateway=120.104.10.1

如果需要创建多个VLAN参考上面创建多个netdev和network即可。

3. 集成到yocto构建系统

综合上面章节我们只需要把我们的netdev和network文件放到根文件系统/etc/systemd/network文件夹下即可,下面我们就创建一个bb文件来完成这部分工作。

首先在meta-rpi-robot下面新建recipes-network/vlanconfig文件夹:

mkdir -p recipes-network/vlanconfig

创建如下文件夹和bb 文件:

~/work/raspberry/poky-kirkstone/meta-rpi-robot/recipes-network/vlanconfig (main ✘)✹✭ ᐅ tree .
.
├── files
│   ├── 10-eth0.network
│   ├── 20-eth0.104.netdev
│   └── 30-eth0.104.network
└── vlanconfig_0.1.bb

1 directory, 4 files

vlanconfig_0.1.bb 内容如下:

SUMMARY = "Add VLAN Config For RPI Robot"
DESCRIPTION = "Add VLAN Config For RPI Robot"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://10-eth0.network \
        file://20-eth0.104.netdev \
        file://30-eth0.104.network \
"

do_install() {
    install -d ${D}${sysconfdir}/systemd/network
    install -m 0644 ${WORKDIR}/10-eth0.network ${D}${sysconfdir}/systemd/network/
    install -m 0644 ${WORKDIR}/20-eth0.104.netdev ${D}${sysconfdir}/systemd/network/
    install -m 0644 ${WORKDIR}/30-eth0.104.network ${D}${sysconfdir}/systemd/network/
}

FILES_${PN} = "${sysconfdir}/systemd/network/*"

到这里为之我们的集成工作就差不多了,可以使用如下指令编译验证:

bitbake vlanconfig

完成以后我们还需要将这个集成打包到构建镜像里面,追加IMAGE_INSTALL变量:

然后编译全image:

bitbake rpi-robot-image

刷机验证:

可以看到静态IP和VLAN设置都已经生效。

相关推荐
「QT(C++)开发工程师」2 天前
【Yocto 是一个开源项目】
linux·qt·yocto
极客范儿3 个月前
新华三H3CNE网络工程师认证—VLAN使用场景与原理
网络·智能路由器·vlan
TNT_TT3 个月前
十二、Yocto集成ROS2 app程序(package)
嵌入式·ros·yocto·raspberrypi
致奋斗的我们4 个月前
HCIP的学习(25)
网络·网络协议·学习·网络安全·智能路由器·信息与通信·vlan
TNT_TT5 个月前
十一、Yocto集成tcpdump等网络工具
网络·嵌入式·yocto·tcpdump·raspberrypi
烈火蜓蜻5 个月前
CCIE-15-MPLS-VPN
智能路由器·mpls·vlan·bgp·trunk·eigrp·mp-bgp
Ingernuity6 个月前
VLAN间路由
网络·tcp/ip·http·华为·ensp·vlan·ospf
千册7 个月前
yocto编译测试
yocto
投石7 个月前
yocto系列之理解与创建第一个定制recipe
linux·yocto·ubuntu22.04·构建镜像