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设置都已经生效。