【系统移植】uboot 通过 NFS 加载根文件系统(一) —— 网络环境配置

news2024/11/26 14:35:43

前面试过了SD卡烧录根文件系统,然后借助环境变量 bootargs 来加载SD卡中的根文件系统,但是实际开发需要经常对文件做增删改等操作,所以将根文件系统放在SD上不大合适。

因此,最常用的做法是把根文件系统放在NFS服务端(虚拟机上),开发板通过网络连接到NFS,这样的话,开发板和虚拟机可以共享根文件系统。


         目录

1、配置思路

2、开发板配置

查看电脑主机所在网段

修改环境变量

3、虚拟机配置

设为桥接模式

桥接到以太网网卡

 配置虚拟机IP

4、网络测试


1、配置思路

让开发板可以连接到虚拟机的关键:保证三台设备(开发板、电脑主机、虚拟机)在同一个网段

假设开发板和电脑主机之间使用网口连接(有线连接),这样的话就相当于电脑主机的以太网网卡与开发板的eth0网卡建立了连接。

虚拟机设置为桥接模式,此时虚拟机默认连接的是 VMnet0 虚拟网卡。这样很显然是无法和开发板进行通信的,发给VMnet0网卡的东西又不会转到以太网网卡。

因此,我们要在“虚拟网络编辑器”中,将虚拟机的网卡桥接到以太网网卡。

 

2、开发板配置

假设使用的 eth0 网卡,为了保证三个设备在同一个网段,我们以电脑主机的以太网网段为核心开始配置。

查看电脑主机所在网段

按 win + R,输入cmd,查询网络信息使用的命令是 ipconfig

 

从上图我们可以大致推断出,以太网所属网段是 169.254.0.0 ~ 169.254.255.255,子网掩码是 255.255.0.0。因此我们给开发板和虚拟机的IP地址暂定为:

  • 开发板
    • IP:169.254.162.163
    • 子网掩码:255.255.0.0
    • 网关:169.254.162.1
  • 虚拟机
    • IP:169.254.162.189
    • 子网掩码:255.255.0.0
    • 网关:169.254.162.1

修改环境变量

为了后续方便,开发板在配置的时候,除了自身IP外,还需要额外加入虚拟机相关的网络信息:

环境变量含义
ipaddr开发板IP
netmask子网掩码
gateway网关
serverip虚拟机IP
ethaddr虚拟机MAC地址
# -------------------------- 开发板IP -------------------------
=> setenv ipaddr 169.254.162.163
=> saveenv 
Saving Environment to MMC...
Writing to MMC(0)... done

# ----------------------- 开发板子网掩码 -----------------------
=> setenv netmask 255.255.0.0
=> saveenv 
Saving Environment to MMC...
Writing to MMC(0)... done

# ------------------------- 开发板网关--------------------------
=> setenv gateway 169.254.162.1
=> saveenv 
Saving Environment to MMC...
Writing to MMC(0)... done

# -------------------------- 虚拟机IP -------------------------
=> setenv serverip 169.254.162.189
=> saveenv 
Saving Environment to MMC...
Writing to MMC(0)... done

# -------------------------- 虚拟机MAC -------------------------
=> setenv ethaddr 00:0c:29:d2:f9:83
=> saveenv 
Saving Environment to MMC...
Writing to MMC(0)... done

 

3、虚拟机配置

最开始说到,虚拟机设为桥接模式,由于桥接模式下默认连接的是 VMnet0 网卡,所以我们要先修改“虚拟网络编辑器”,桥接到以太网网卡。

设为桥接模式

桥接到以太网网卡

点击“虚拟网络编辑器”

选择更改设置,此时我们可以看到,VMnet0 是桥接模式所使用的网卡,此时的连接状态是自动连接,即默认连接到 VMnet0 网卡。

找到你的以太网网卡, 然后点击 “应用 —— 确认 ”

 配置虚拟机IP

现在已经让你的虚拟机连接到了你的以太网网卡,剩下的就是为你的虚拟机分配IP,配置方法可以是图形化界面配置,也可以是通过配置文件配置。这里我们选择图形化界面配置。

 一切按照先前计划好的进行配置

4、网络测试

最后就是网络测试了,首先我们检查一下开发板是否可以ping通电脑主机

然后再检查一下是否可以ping 通虚拟机 

大功告成!

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

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

相关文章

Spring事务及事务传播机制

一.事务的含义:多个操作封装在一起,要么同时执行成功,一旦有一个操作执行失败,那么全部执行失败。这里给大家举个例子:比如A给B转账50元,而B没有收到这50元,此时A转账B这个操作也需要进行回滚,恢复到A给B没…

HTTP 协议的基本格式

HTTP 什么是HTTP?HTTP是应用层的一个重要协议.它定义了浏览器怎样向服务器请求文件,以及服务器怎样把文件传送给浏览器. 我们打开浏览器,手动输入一个网址:baidu.com.那么此时浏览器就会给百度的服务器发送请求.百度服务器在返回一个html的响应. 那么我们如何学习HTTP协议呢…

【系统移植】uboot 通过 NFS 加载根文件系统(二) —— 修改环境变量 bootcmd、bootargs

上一部分已经配置好了网络环境,我们要修改环境变量以保证开发板可以正常启动,uboot 环境变量中比较重要的环境变量就是 bootcmd 和 bootargs 目录 1、修改自启动命令 — bootcmd 2、修改自启动参数 —— bootargs (1) root/dev/nfs rw (2) nfsroot …

Godot引擎 4.0 文档 - 循序渐进教程 - 创建你的第一个脚本

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Creating your first script — Godot Engine (stable) documentation in English 创建你的第一个脚本 在本课中,您将编写您的第一个脚本,使用…

Datacom-HCIE 题库 02(10月26日更新)--含解析

单选题 1.[试题编号:189785] (单选题)如图所示,VTEP1上在BD20域内开启了ARP广播抑制功能,并且VTEP1通过 BGP EVPN路由学习到了PC2的ARP信息,则PC1发送的针对PC2的ARP请求,VIEP1在转发给VIEP2时…

设备采购信息管理系统

系列文章 任务14 设备采购信息管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试界面展示添加采购信息按编号查找采购信息按设备编号查找…

vue记录鼠标拖拽划过位置并将划过位置变色

首先 我们要做一个这样的基本组件 <template><div><!--循环遍历 List数组用当前下面当做key值然后定义了 onDragStart 鼠标拖动时触发定义 onDragEnd 拖动结束后触发定义 onDragOver 记录所有鼠标拖动经过的位置--><divclass"skeleton"v-f…

DAY 63 mysql的高级语句:存储过程

什么是存储过程 存储过程是一组为了完成特定功能的SQL语句集合。 存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来&#xff0c;这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时&#xff0c;只需要调用它即可…

数据结构之堆详解

目录 1.什么是堆 堆的定义 结构体定义与函数接口 堆的初始化 堆的销毁 入堆 向上调整算法 大堆 出堆 向下调整算法 返回堆顶元素 判空 堆的应用 1.什么是堆 知道以上的存储方法&#xff0c;对于完全二叉树&#xff0c;有一个叫做堆的结构&#xff0c;堆本质就是一…

内核调试工具crash使用

内核调试工具crash使用 前言初识获取vmlinuxDwarf Error: wrong version in compilation unit header (is 5, should be 2, 3, or 4) 其他 前言 在编写内核驱动的过程中&#xff0c;时不时就导致内核崩溃&#xff0c;也没啥好的调试方法&#xff0c;要么dmesg打印内核日志&…

socket | 网络套接字、网络字节序、sockaddr结构

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

量化论文学习之《基于 CNN-LSTM 混合模型的股价 预测》

主要原理 CNN-LSTM 混合模型首先使用 CNN 来提取时间序列数据的特征&#xff0c;然 后将特征输入进 LSTM 模型中来进行下一交易日股票收盘价的预测。 数据处理 使用数据 作者发现加入volume,pctChg后效果变差&#xff0c;可能原因是加入了相关性较低的特征后造成了数据冗余…

Ubuntu挂载阿里云盘

目录 所需环境安装docker安装rclone获取阿里云盘token 获取docker镜像并运行获取本机IP信息总结rclone配置挂载网盘到本地文件夹开机启动 所需环境 安装docker 使用官方脚本进行全自动安装 curl -fsSL https://test.docker.com -o test-docker.shsudo sh test-docker.sh安装r…

Spring Boot 可执行 Jar 包运行原理

Spring Boot 有一个很方便的功能就是可以将应用打成可执行的 Jar。那么大家有没想过这个 Jar 是怎么运行起来的呢&#xff1f;本篇博客就来介绍下 Spring Boot 可执行 Jar 包的运行原理。 打可执行 Jar 包 将 Spring Boot 应用打成可执行 Ja r包很容易&#xff0c;只需要在 p…

数字信号处理基础(一):常用信号产生

目录 1. 写在前面2. 连续信号和离散信号2.1连续信号2.2 离散信号 3. 常用信号的产生3.1 单位脉冲序列3.2 单位阶跃序列3.3 指数函数3.4 正弦信号和余弦信号3.5 sinc函数3.6 矩形脉冲信号 4. 信号卷积5. 完整代码 1. 写在前面 为了更好的理解通信原理系列文章&#xff0c;在此补…

28 SQL——表子查询

create table dept(id int primary key auto_increment,name varchar(15))comment 部门;insert into dept(id, name) values (1,研发部),(2,市场部),(3,财务部),(4,销售部),(5,总经办),(6,人事部);create table staff (id int primary key auto_increment commentID,name …

使用Mathtype公式编辑器生成CSDN中的数学公式

使用Mathtype公式编辑器生成CSDN中的数学公式 在CSDN中输入数学公式&#xff0c;直接使用LaTeX编辑输入公式有一些难度&#xff0c;如果你熟悉Mathtype公式编辑器&#xff0c;那么在CSDN文档中输入数学公式也变的相对容易。 下面我们举例说明使用Mathtype转换输入CSDN的公式。…

Weex工具链的奥秘

在2017年1月12日 Weex Conf 2017上&#xff0c;来自阿里的卜道依据Weex开发中的痛点介绍了Weex的打包和插件机制&#xff0c;同样来自阿里的归影介绍了Weex的调试工具Devtools&#xff0c;共同揭秘了Weex的工具链。本文是卜道和归影关于Weex工具链实践的分享整理。 Weexpack与…

MyBatis各种类型查询数据的数据绑定

文章目录 1、前言2、查询一个实体类对象字段名和属性名无法映射处理方式一&#xff1a;起别名方式二&#xff1a;使用全局配置文件配置映射规则方式三&#xff1a;自定义resultmap 3、查询一个list集合4、查询单个数据5、查询一条数据为map集合6、 查询多条数据为map集合方式一…

Python中使用Scipy模块中root函数求解非线性方程的解法举例

Python中使用Scipy模块中root函数求解非线性方程的解法举例 Python中的SciPy模块功能强大&#xff0c;下面举例说明使用该模块求解非线性方程或非线性方程组。在求解时候&#xff0c;用到scipy.optimize模块中的root函数。 1.root函数的调用格式 调用它们的格式为 from scipy…