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.rhkb.cn/news/437309.html

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

相关文章

详解Java中的Collection单列集合(从底层到用法超详细解析和细节分析)

⭕在 Java 中,集合框架是开发过程中最常用的数据结构之一,其中 Collection 接口是整个集合框架的基础。Collection 是处理单列数据的接口,它定义了一些通用的操作,允许对一组对象进行操作。今天我们将深入介绍 Java 中的单列集合 …

docker学习笔记(1.0)

docker命令 下载镜像相关命令 检索:docker search 比如:docker search nginx 是查看有没有nginx镜像 后面的OK表示是不是官方镜像,如果有就是官方镜像,如果没有就是第三方的。 下载:docker pull 比如&#xff1a…

【09】纯血鸿蒙HarmonyOS NEXT星河版开发0基础学习笔记-Class类基础全解(属性、方法、继承复用、判断)

序言: 本文详细讲解了关于我们在程序设计中所用到的class类的各种参数及语法。 笔者也是跟着B站黑马的课程一步步学习,学习的过程中添加部分自己的想法整理为笔记分享出来,如有代码错误或笔误,欢迎指正。 B站黑马的课程链接&am…

Windows开发工具使用技巧

在 Windows 上进行开发时,有许多工具和技巧可以提升开发效率和用户体验。以下是一些常用的开发工具和技巧: 常用开发工具 1. Visual Studio Code (VS Code) - 插件管理:利用扩展市场(Extension Marketplace)安装各种…

centos磁盘逻辑卷LVM创建

centos磁盘逻辑卷LVM创建 一、磁盘逻辑卷LVM说明二、centos磁盘使用情况三、LVM安装指南1.LVM工具安装1. yum list lvm2. yum search lvm3. yum search pvcreate4. yum list lvm25. yum install lvm2 2.创建物理卷2.1磁盘情况查看2.2创建物理卷(PV) 3.创…

【CKA】一、基于角色的访问控制-RBAC

1、基于角色的访问控制-RBAC 1. 考题内容: 2. 答题思路: 这道题就三条命令,建议直接背熟就行。 也可以查看帮助 kubectl create clusterrole -h kubectl create serviceaccount -h kubectl create rolebinding -h 注意: 1、资…

windows 桌面采集音频

头文件&#xff1a; #ifndef __CAPTURE_AUDIO__ #define __CAPTURE_AUDIO__#include <functional> #include <windows.h> #pragma comment(lib, "winmm.lib")class CaptureAudio { public:CaptureAudio();~CaptureAudio();public:bool Init(const std::…

uniapp中uni.request的统一封装 (ts版)

文章目录 前言一、我们为什么要去封装&#xff1f;二、具体实现1.创建一个请求封装文件&#xff1a;2.封装 uni.request&#xff1a;3.如何去使用&#xff1f; 总结 前言 在uniapp中如何去更简洁高效的发送我们的请求&#xff0c;下面就介绍了uni.request()二次封装。 一、我们…

C++ | Leetcode C++题解之第446题等差数列划分II-子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:int numberOfArithmeticSlices(vector<int> &nums) {int ans 0;int n nums.size();vector<unordered_map<long long, int>> f(n);for (int i 0; i < n; i) {for (int j 0; j < i;…

音视频入门基础:FLV专题(7)——Tag header简介

一、引言 从《音视频入门基础&#xff1a;FLV专题&#xff08;3&#xff09;——FLV header简介》中可以知道&#xff0c; 在FLV header之后&#xff0c;FLV文件剩下的部分应由PreviousTagSize和Tag组成。FLV文件 FLV header PreviousTagSize0 Tag1 PreviousTagSize1 Ta…

最新BurpSuite2024.9专业中英文开箱即用版下载

1、工具介绍 本版本更新介绍 此版本对 Burp Intruder 进行了重大改进&#xff0c;包括自定义 Bambda HTTP 匹配和替换规则以及对扫描 SOAP 端点的支持。我们还进行了其他改进和错误修复。 Burp Intruder 的精简布局我们对 Burp Intruder 进行了重大升级。现在&#xff0c;您可…

【Canvas与徽章】金圈蓝底国庆75周年徽章

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>金边黑盾75周年</title><style type"text/css"&g…

sql语句牛客练习

文章目录 1. SQL21 浙江大学用户题目回答情况① 错误② 正确 2. SQL22 统计每个学校的答过题的用户的平均答题数① 错误② 正确 3. SQL23 统计每个学校各难度的用户平均刷题数4. SQL25 查找山东大学或者性别为男生的信息① 错误② 正确 5. SQL26 计算25岁以上和以下的用户数量①…

Linux相关概念和重要知识点(11)(进程调度、Linux内核链表)

1.Linux调度算法 上篇文章我粗略讲过queue[140]的结构&#xff0c;根据哈希表&#xff0c;我们可以将40个不同优先级的进程借助哈希桶链入queue[140]中。调度器会根据queue的下标来进行调度。但这个具体的调度过程是怎样的呢&#xff1f;以及runqueue和queue[140]的关系是什么…

DC00025【含论文】基于协同过滤推荐算法springboot视频推荐管理系统

1、项目功能演示 DC00025【含文档】基于springboot短视频推荐管理系统协同过滤算法视频推荐系统javaweb开发程序设计vue 2、项目功能描述 短视频推荐系统分为用户和系统管理员两个角色 2.1 用户角色 1、用户登录、用户注册 2、视频中心&#xff1a;信息查看、视频收藏、点赞、…

Leecode热题100-84.柱状图中的最大矩形

给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 解释&#xff1a;最大的矩形为图…

Python核心知识:pip使用方法大全

什么是 pip&#xff1f; pip 是 Python 的包管理工具&#xff0c;允许用户安装、升级和管理 Python 的第三方库和依赖。它极大地简化了开发过程&#xff0c;使开发者可以轻松地获取并安装所需的软件包。pip 已成为 Python 项目中最常见的包管理工具&#xff0c;并且自 Python …

SQL第10课挑战题

1. 从OrderItems表中返回每个订单号order_num各有多少行数order_lines&#xff0c;并按order_lines对结果进行排序 2. 返回名为cheapest_item的字段&#xff0c;该字段包含每个供应商成本最低的产品&#xff08;使用products表中的prod_price)&#xff0c;然后从最低成本到最高…

房屋水电费:重新布局,重构JS代码

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>房租水电费</title><script type"…

计算机网络:计算机网络概述:网络、互联网与因特网的区别

文章目录 网络、互联网与因特网的区别网络分类 互联网因特网基于 ISP 的多层次结构的互连网络因特网的标准化工作因特网管理机构因特网的组成 网络、互联网与因特网的区别 若干节点和链路互连形成网络&#xff0c;若干网络通过路由器互连形成互联网 互联网是全球范围内的网络…