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

相关推荐
うちは止水5 天前
linux yocto bitbake构建系统生成SDK包
linux·sdk·yocto·bitbake
婷婷_17214 天前
DWC Ethernet QoS VLAN高级功能深度解析
网络·学习·程序人生·ethernet·芯片·vlan·gmac
婷婷_17215 天前
DWC Ethernet QoS VLAN功能实现详解
网络·学习·程序人生·ethernet·芯片·vlan·gmac
小柯博客15 天前
从零开始打造 OpenSTLinux 6.6 Yocto 系统 - STM32MP2(基于STM32CubeMX)(八)
c语言·git·stm32·单片机·嵌入式硬件·嵌入式·yocto
haosend1 个月前
数据网络小知识-VLAN基础及延伸技术简介
路由器·vlan·交换机·数据网络
小柯博客3 个月前
从零开始打造 OpenSTLinux 6.6 Yocto 系统 - STM32MP2(基于STM32CubeMX)(六)
c语言·git·stm32·单片机·嵌入式硬件·开源·yocto
CS创新实验室3 个月前
《计算机网络》深入学:虚拟局域网(VLAN)技术与应用
开发语言·计算机网络·php·vlan·虚拟局域网
ICT技术最前线4 个月前
华为交换机VLAN配置命令详解
服务器·网络·vlan·华为交换机
wusam4 个月前
计算机网络综合实验:中小型企业网络组网与配置仿真实验
计算机网络·vlan·dhcp·独臂路由
小柯博客4 个月前
从零开始打造 OpenSTLinux 6.6 Yocto 系统 - STM32MP2(基于STM32CubeMX)(九)
c语言·stm32·单片机·嵌入式硬件·物联网·嵌入式·yocto