四、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: 2renderer: networkdethernets:eth0:dhcp4: novlans:eth0.104:id: 104link: eth0addresses: [120.104.10.20/24]routes:- to: 239.0.104.0/24via: 0.0.0.0on-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.8VLAN=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.bb1 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/networkinstall -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设置都已经生效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Web自动化】Selenium的使用(一)

目录 关于自动化测试selenium工作机制 selenium的使用selenium中常用API定位元素按id定位按名称定位按类名定位按标签名定位按CSS选择器定位按XPath定位示例 操作测试对象等待sleep休眠隐式等待显示等待 打印信息浏览器操作键盘事件鼠标事件切换窗口截图关闭浏览器 欢迎阅读本文…

YOLO格式数据集转COCO格式

网上找了很久的YOLO格式数据集转COCO格式的代码,但是没有一个成功的,费尽千辛万苦终于找到一个能用的,因此记录一下。 一、首先YOLO格式数据集文件布局 其中lmages和labels 中的内容布局如下,只不过一个存放图片,一个存…

接口自动化框架搭建(三):pytest库安装

1,使用命令行安装 前提条件:已安装python环境 pip install pytest 或者 pip3 install pytest2,从编译器pycharme中安装

数组指针的运用

这段代码使用了数组指针,实现了从二维数组中获取指定位置的元素值。以下是代码的总结: tipsInputHangLie 函数用于提示用户输入要获取的元素的行号和列号,然后通过指针参数返回用户输入的行号和列号。 getDataFromArray 函数接收一个二维数组…

[TS面试]TypeScript 中 any, nerver, unknown, null undefined 和 void 有什么区别?

TypeScript 中 any, nerver, unknown, null & undefined 和 void 有什么区别? any: 动态类型变量 失去了类型检查作用 never: 永远不存在值的类型 抛出异常, 根本没有返回值的函数表达式 或者箭头函数表达式返回值类型 unknown 任何类型的值都可以赋值给unknown unknown…

6.2物联网RK3399项目开发实录-驱动开发之GPIO使用(wulianjishu666)

物联网嵌入式开发源码例程: 链接:https://pan.baidu.com/s/1B3oqq5QBhN-VmTFt9CI-7A?pwd2ihg ******************************************************************************************* GPIO 使用 简介 GPIO, 全称 General-Purpose Input/…

机器学习概念、步骤、分类和实践

在当今数字化时代,机器学习已经渗透到我们生活的方方面面,从智能手机应用、搜索引擎优化,到自动驾驶汽车、医疗诊断等,其应用无处不在。本文将带您走进机器学习的世界,了解它的基本概念、步骤、分类以及实践应用。 一…

前端-css-2

1.背景样式 属性名作用属性值background-color背景颜色颜色background-image设置背景图像地址url(地址)background-repeat设置背景图像重复方式 repeat:重复。 repeat-x:横向重复。 repeat-y:纵向重复。 no-repeat:不重复。 back…

SpringBoot集成JWT基础使用

目录 一.接口统一前缀设置二.JWT POM依赖三.JWT工具类TokenUtils.java四.拦截器JwtInterceptor.java五.拦截器设置六.设置自定义头配置 一.接口统一前缀设置 1.指定controller统一的接口前缀 2.加自定义拦截器JwtInterceptor,设置拦截规则,指定Login接口放行,不需验…

2024-3-28

今日流水账: 把计网实验报告完成了,当然还有点小问题就是PC2>PC4的测试截图没有看了下V8中是如何实现快速 for in的,嗯,懵懵懂懂吧,就了解了个 enum cache,其是描述符数组的一个字段,所以其…

计组:指令格式与寻址方式

指令格式 指令格式 一、引言 在计算机科学中,指令格式是计算机指令系统的一个重要组成部分。它规定了计算机指令的编码方式、结构以及各个字段的含义,是计算机硬件和软件之间交互的桥梁。了解指令格式对于理解计算机组成原理、汇编语言编程以及计算机…

YOLOv9改进策略 : C2f改进 | 引入YOLOv8 C2f结构

💡💡💡本文改进内容:应订阅者需求,如何将YOLOv8 C2f结构引入到YOLOv9 💡💡💡C2f层是一种特殊的卷积层,用于将不同尺度的特征图融合在一起,以提高目标检测的准…

C# 多线程

文章目录 C# 多线程进程与线程无参数的子线程带参数的子线程运行结果 销毁线程 Abort()运行结果 ThreadPool和Task运行结果 C# 多线程 进程与线程 进程:进程就是一个应用程序,对电脑的各种资源的占用 线程:线程是程序执行的最小单位&#…

MySQL锁机制详解及死锁处理方式

前言 为了给高并发情况下的MySQL进行更好的优化,有必要了解一下MySQL查询更新时的锁表机制。 概述 MySQL有三种锁的级别:页级、表级、行级。 MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking); BDB存储引…

新型的FPGA器件将支持多样化AI/ML创新进程

作者:郭道正, Achronix半导体中国区总经理 近日举办的GTC大会把人工智能/机器学习(AI/ML)领域中的算力比拼又带到了一个新的高度,这不只是说明了通用图形处理器(GPGPU)时代的来临,而是包括GPU、…

Ubuntu服务器搭建 - 环境篇

Ubuntu服务器搭建 - 环境篇 基于腾讯云服务器 - Ubuntu 20.04 LTS 一、安装 - MySQL 1.1 概述 MySQL安装方式有三种: 1. 使用Ubuntu 包管理工具 apt安装 2. 使用MySQL官方APT存储库安装 3. 使用MySQL官方二进制发行版安装 1.2 安装 MySQL 使用MySQL官方APT存储库安装 $ wget…

WSL启动nvidia-docker镜像:报错libnvidia-ml.so.1- file exists- unknown

1.首先使用docker而不是nvidia-docker启动原始镜像下的容器: sudo docker run --rm -it registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.13.1 bash2.在该容器中删除相关nvidia库文件&#xff…

08-研发流程设计(上):如何设计Go项目的开发流程?

在Go 项目开发中,我们不仅要完成产品功能的开发,还要确保整个过程是高效的,代码是高质量的。 所以,Go 项目开发一定要设计一个合理的研发流程,来提高开发效率、减少软件维护成本。研发流程会因为项目、团队和开发模式…

MyBatis的<select>标签可以接收多个参数进行查询

MyBatis的<select>标签可以接收多个参数进行查询 你可以在XML文件中定义多个参数&#xff0c;并在查询语句中使用这些参数进行查询。以下是一个示例&#xff1a; XML查询语句&#xff1a; <select id"selectUsersByAgeAndGender" parameterType"map…

Linux常见内置远程下载工具及检测思路分析

一、Linux常见远程下载工具 Linux中远程下载文件的常用命令有curl、wget和scp。 二、工具详情 1、Curl 1&#xff09;功能&#xff1a; curl命令是一个功能强大的工具&#xff0c;可以用来传输数据&#xff0c;支持多种协议&#xff0c;包括HTTP、HTTPS、FTP等。通过curl命令…