Qemu开发ARM篇-7、uboot以及系统网络连接及配置

文章目录

  • 1、uboot及linux版本网络设置
    • 1、宿主机虚拟网卡创建
    • 2、uboot使用tap0网卡
    • 3、启动测试
  • 2、访问外网设置

在上一篇Qemu开发ARM篇-6、emmc/SD卡AB分区镜像制作并通过uboot进行挂载启动中,我们制作了AB分区系统镜像,并成功通过uboot加载kernel以及dtb并引导进入了系统,但目前uboot和系统还无法进行网络,这对于我们开发非常不便,在本节中,我们将讲解如何对uboot以及系统进行网络连接。

1、uboot及linux版本网络设置

1、宿主机虚拟网卡创建

uboot联网这里我们使用tap进行连接,在使用之前,我们需要通过下面命令安装相应工具:

sudo apt install uml-utilities

安装成功之后我们就可以使用如下命令创建tap0网卡:

sudo tunctl -u root -t tap0

在这里插入图片描述
然后通过ifconfig -a即可查看到我们已经创建了tap0网卡了。
在这里插入图片描述
但是目前还没有ip,并且还未启动,我们通过如下命令设置ip并启动tap0网卡。

sudo ifconfig tap0 172.16.0.3 promisc up

通过上面配置,我们在宿主机上创建了虚拟网卡,接下来,我们将在uboot中使用该网卡。

2、uboot使用tap0网卡

修改./script/run_uboot_with_img.sh启动脚本,将原内容修改为如下启动命令:

ROOT_PATH=$(pwd)
qemu-system-arm  -M vexpress-a9 -m 512M  \
-kernel $ROOT_PATH/out/u-boot-arm/u-boot \
-net tap,ifname=tap0,script=no,downscript=no \
-net nic,macaddr=00:16:3e:00:00:01 \
-nographic \
-no-reboot \
-sd out/ab_img/vexpress_ab.img

上面主要就是加了-net tap,ifname=tap0,script=no,downscript=no,该语句用来指定使用那个网卡,以及网卡的类型,这里使用tap网卡。
以及-net nic,macaddr=00:16:3e:00:00:01用来设置mac地址。

然后在我们之前做环境变量的文件/etc/uboot_env.txt文件内容修改为如下:

bootcmd=mmc read 0x60003000 0x3800 0x10000;mmc read 0x60500000 0x1800 0x400;bootm 0x60003000 - 0x60500000
bootargs=root=/dev/mmcblk0p9 init=/usr/sbin/init console=ttyAMA0 ip=172.16.0.6:172.16.0.3:172.16.0.3:255.255.0.0::eth0:off
ipaddr=172.16.0.5
netmask=255.255.0.0

这里需要就是添加了uboot的ip以及掩码设置,同时在bootargs中添加了ip=172.16.0.6:172.16.0.3:172.16.0.3:255.255.0.0::eth0:off,用来设置开发板ip地址。
其中:各字段含义为:
ip=开发板 IP 地址:宿主机IP 地址:网关地址:子网掩码::开发板网口:off
这里我们设置开发板网卡eth0的ip为172.16.0.6,掩码为:255.255.0.0,同时设置默认网关为:172.16.0.3,因为我们宿主机的网卡ip为172.16.0.3。

上述工作做好之后,我们需要重新运行./script/make_AB_img.sh脚本进行镜像制作,因为我们修改了uboot镜像的值。

3、启动测试

进行做好之后,我们通过运行sudo ./script/run_uboot_with_img.sh 启动uboot,注意这里需要加sudo,因为tap0网卡需要root权限进行访问

在uboot界面我们按下回车,进入uboot控制台,使用ping命令查看uboot网络是否正常。
在这里插入图片描述
可以看到,uboot网络是可以正常ping通宿主机的。
然后我们运行run bootcmd启动kernel.
在linux中使用ping命令查看是否能正常ping通宿主机。
在这里插入图片描述
可以可以正常ping通宿主机,并且网卡ip也是正常的。

然后查看linux系统中默认网关是否正常:route -n
在这里插入图片描述
可以参考默认网关也是正常的。

2、访问外网设置

有时,我们还需要能访问外网,以模拟tox相关功能,那开发板如何鞥通过宿主机网络访问外网呢?
这里我们需要再宿主机中开启网络转发的功能,将tapo的网络请求转发到宿主机能上网的这张网卡,并通过该网卡进行上网。

我的主机网卡情况如下:
在这里插入图片描述
其中:enp6s18是我主机的网卡,用以访问外网,tap0是虚拟网卡,用以连接qemu开发板。现在我们需要配置将tap0的外网请求转发到enp6s18以进行外网访问:

1、首先开启ubuntu内核转发功能:
临时生效:
echo "1" > /proc/sys/net/ipv4/ip_forward
永久生效的话,需要修改/etc/sysctl.conf
net.ipv4.ip_forward = 1
执行sysctl -p马上生效
查看是否开启成功:
执行该条命令,cat /proc/sys/net/ipv4/ip_forward
如果输出1则说明开启成功!

2、配置iptables
在终端输入如下命令:

sudo iptables -A FORWARD -i tap0 -o enp6s18 -j ACCEPT
sudo iptables -A FORWARD -i enp6s18 -o tap0 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o enp6s18 -j MASQUERADE

注意上面tap0网卡和enp6s18 网卡需要根据自己物理机情况修改为自己网卡名字即可。
执行之后,只会临时起效,重启之后就失效了。
永久保存:
iptables-save > /etc/sysconfig/iptables
3、修改其他电脑的网关
将局域网中想要访问外网的电脑的网关改成服务器的局域网IP:172.16.0.3
这一步我们已经做过了,就是前面uboot传递bootargs的时候设置的网关地址。
上面工作做好之后,我们就可以启动开发板,看能否正常上网了。
在这里插入图片描述
可以看到,现在开发板已经可以成功访问外网网络了。

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

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

相关文章

Windows:win11旗舰版连接无线显示器,连接失败

摘要:win11系统通过 miracast 无线连接到长虹电视的时候,一直连接不上。查看电脑又是支持 miracast 协议,后续发现关闭防火墙即可正常连接。 一、问题现状 最近公司里新换了电视,打算把笔记本电脑投屏到电视上。由于 HDMI 插拔不…

SQL_create_view

SQL CREATE VIEW 在SQL中,CREATE VIEW 语句用于创建一个视图,视图是基于SQL查询的虚拟表。视图可以简化复杂的SQL查询,提高数据库的安全性,并且可以作为查询优化的一种方式。 以下是创建视图的基本语法: CREATE VIEW…

JS基础练习|点击按钮更改背景色

效果图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel"…

计算机毕业设计 基于Python的摄影平台交流系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

【MySQL】常见的SQL优化方式(一)

目录 1、插入数据 &#xff08;1&#xff09;批量插入 &#xff08;2&#xff09;手动提交事务 &#xff08;3&#xff09;主键顺序插入 2、主键优化 &#xff08;1&#xff09;页分裂 &#xff08;2&#xff09;页合并 3、order by 优化 &#xff08;1&#xff09;排…

PyTorch 模型保存与加载的三种常用方式

在深度学习的训练过程中&#xff0c;我们不可避免地要保存模型&#xff0c;这是一个非常好的习惯。接下来&#xff0c;文章将通过一个简单的神经网络模型&#xff0c;带你了解 PyTorch 中主要的模型保存与加载方式。 文章目录 为什么保存和加载模型很重要&#xff1f;代码示例模…

新品:新一代全双工音频对讲模块SA618F22-C1

SA618F22-C1是我司一款升级版的无线数字和音频二合一全双工传输模块&#xff0c;支持8路并发高音质通话。用户不仅可以通过串口实现数据的无线传输&#xff0c;还可以通过I2S数字音频或模拟音频接口来传输语音信号。该模块内置高速微控制器、回声消除电路、ESD静电防护、高性能…

计算机网络各层有哪些协议?计算机网络协议解析:从拟定到实现,全面了解各层协议的作用与区别

在数字化时代&#xff0c;计算机网络无处不在&#xff0c;已经成为不可或缺的一部分。为了让不同设备能够有效地进行通信&#xff0c;网络协议作为一种约定和规则&#xff0c;确保了数据在网络中的可靠传输。今天&#xff0c;我们将深入探讨计算机网络的各层协议&#xff0c;详…

c#代码介绍23种设计模式_10组合模式

目录 1. 组合模式的定义 2. 组合模式的实现 3. 组合模式中涉及到三个角色 4. 组合模式的优缺点 5、实现思路 在软件开发过程中&#xff0c;我们经常会遇到处理简单对象和复合对象的情况&#xff0c;例如对操作系统中目录的处理就是这样的一个例子&#xff0c;因为目录可以…

四、Drf认证组件

四、Drf认证组件 4.1 快速使用 from django.shortcuts import render,HttpResponse from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.authentication import BaseAuthentication from rest_framework.exception…

【Linux】修改用户名用户家目录

0、锁定旧用户登录 如果旧用户olduser正在运行中是无法操作的&#xff0c;需要先禁用用户登录&#xff0c;然后杀掉所有此用户的进程。 1. 使用 usermod 命令禁用用户 这将锁定用户账户&#xff0c;使其无法登录&#xff1a; sudo usermod -L olduser2. 停止用户的进程 如…

【Python】FeinCMS:轻量级且可扩展的Django内容管理系统

在互联网飞速发展的今天&#xff0c;内容管理系统&#xff08;CMS&#xff09;成为了网站开发中的核心工具&#xff0c;尤其对于需要频繁更新内容的企业和个人站点而言&#xff0c;CMS 提供了极大的便利。市场上有许多不同的 CMS 工具可供选择&#xff0c;其中基于 Django 框架…

CentOS 6文件系统

由冯诺依曼在 1945 年提出的计算机五大组成部分&#xff1a;运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入设 备&#xff0c;输出设备。 1. 硬盘结构&#xff1a; &#xff08;1&#xff09;机械硬盘结构&#xff1a; 磁盘拆解图&#xff1a; 扇区&#xff0c;…

前端BOM常用操作

BOM操作常用命令详解及代码案例 BOM&#xff08;Browser Object Model&#xff09;是浏览器对象模型&#xff0c;是浏览器提供的JavaScript操作浏览器的API。BOM提供了与网页无关的浏览器的功能对象&#xff0c;虽然没有正式的标准&#xff0c;但现代浏览器已经几乎实现了Java…

前端动态创建svg不起效果?

document.createElement(path);诸如此类的创建一般都是不太行的 我在创建这个之后&#xff0c;虽然在网页上是有相应的结构&#xff0c;但是完全不显示 一般正确的创建方式为 document.createElementNS(http://www.w3.org/2000/svg,path);在使用document.createElementNS(“ht…

【重学 MySQL】四十五、数据库的创建、修改与删除

【重学 MySQL】四十五、数据库的创建、修改与删除 一条数据存储的过程数据输入数据验证数据处理数据存储数据持久化反馈与日志注意事项 标识符命名规则基本规则长度限制保留字与特殊字符命名建议示例 MySQL 中的数据类型创建数据库创建数据库时指定字符集和排序规则 查看数据库…

影刀---实现我的第一个抓取数据的机器人

你们要的csdn自动回复机器人在这里文末哦&#xff01; 这个上传的资源要vip下载&#xff0c;如果想了解影刀这个软件的话可以私聊我&#xff0c;我发你 目录 1.网页对象2.网页元素3.相似元素组4.元素操作设置下拉框复选框滚动条获取元素的信息 5.变量6.数据的表达字符串变量列…

CNN+Transformer解说

CNN&#xff08;卷积神经网络&#xff09;和Transformer是两种在深度学习领域广泛使用的模型架构&#xff0c;它们在处理不同类型的数据和任务时各有优势。 CNN擅长捕捉局部特征和空间层次结构&#xff0c;而Transformer擅长处理序列数据和长距离依赖关系。 将CNN与Transform…

解开 Golang‘for range’的神秘面纱:易错点剖析与解读

前言 在 Go 语言的编程世界中&#xff0c;充满了各种有趣的特性和挑战。其中&#xff0c;一些看似简单的代码结构可能会隐藏着意想不到的结果。今天&#xff0c;我们就来探讨一下在 Golang 中一个容易让人产生疑惑的地方——for range循环。相信很多 Go 开发者在日常编程中都会…

github项目--crawl4ai

github项目--crawl4ai 输出html输出markdown格式输出结构化数据与BeautifulSoup的对比 crawl4ai github上这个项目&#xff0c;没记错的话&#xff0c;昨天涨了3000多的star&#xff0c;今天又新增2000star。一款抓取和解析工具&#xff0c;简单写个demo感受下 这里我们使用cra…