10.网络文件系统( NFS)使用

网络文件系统( NFS) 使用

  • NFS 优点:
    • 开发过程中不受开发板空间的限制,直接使用网络文件就像使用本地文件一样;
    • 调试过程中避免一一将编译后的应用程序和库文件复制到开发板上。
  • 在开发板中使用网络文件系统可以为开发和调试节省不少时间。下面具体介绍其使用步骤。

1. 虚拟机设置

  • 配置虚拟机,让其能够直接访问局域网内的任何主机。前面为了能够让虚拟机与宿主机进行通信,将虚拟机的网络连接设置为 NAT 方式,下面分别介绍桥接模式和 NAT 模式 :

    • 桥接模式:虚拟机相当于局域网中一台独立主机,可以访问网内任何一台机器。在这种模式下,需将虚拟机IP 地址配置成和宿主机同一网段,这样二者可以通信。如果再配置好网关和DNS 的地址,虚拟机还可以通过局域网的网关或路由器访问互联网。
    • NAT 模式:虚拟机借助 NAT(网络地址转换)功能,通过宿主机所在网络来访问互联网。 NAT 模式下的虚拟机 IP 是由 VMnet(NAT)虚拟网络的 DHCP 服务器提供的,无法手动修改,因此虚拟机和局域网中的其他真实主机无法通信。
  • 为了使虚拟机、宿主机和开发板能达到互相通信的目的,虚拟机的网络连接方式应该采用桥接方式

    1. 通过选择菜单 “虚拟机” ,然后在下拉菜单中选择 “设置” 选项,在弹出的 “虚拟机设置” 窗口中进行设置,需要注意的是,设置虚拟机网络连接时,应该在虚拟机没有启动时进行设置,否则无法设置或者设置无法生效。

    2. 启动虚拟机,查看虚拟机的 IP 地址和网络连接状态。

      • 如果虚拟机右下角的虚拟网卡标识显示已经连接上,那么在终端输入 ifconfig 查看网卡是否已设置。如果需要修改IP地址信息,则可以单击右上角的网络图标,然后在弹出的面板中,单击“网络设置”按钮,打开“网络”对话框,单击设置图标进入网卡设置对话框,在该对话框中对虚拟机 IP 地址和网关进行设置 :

        image-20240308224422230

      • 如果虚拟机右下角的虚拟网卡标识显示未连接,则有可能是安装虚拟机时少选了一项 VMware Bridge Protocol ,那么需要在宿主机上完成以下设置:

        • 打开网络连接的属性窗口,在该窗口中有本地连接 VMnet1、 VMnet8 和网络连接。右击 VMnet1 或者 VMnet8,选择 “属性” 进入“VMware Network Adapter VMnet1属性”对话框,如果没有找到“VMware Bridge Protocol ”项的话,那就需要重新安装该桥接协议。

          • 首先单击 “安装” 按钮,进入 “选择网络功能类型” 对话框后,选择 “服务” 选项,并单击 “添加” 按钮:

          image-20240308225648515

        • 在 “选择网络服务” 窗口单击 “从磁盘安装” 按钮,在虚拟机安装路径下的 VMware Workstation 目录中找到 netbridge.inf 文件,然后点击 “打开” 按钮进行安装:

          image-20240308225902699

        • 安装完成后,在 “VMware Network Adapter VMnet1 属性” 窗口出现了 VMware Bridge Protocol 项,如图所示。

          image-20240308230002621

        • 最后,重新启动计算机并且重启虚拟机,验证网络联通性。假设,主机的 IP 地址为 192.168.1.109,虚拟机的 IP 地址为 192.168.1.111,开发板的 IP 地址为 192.168.1.113。分别通过 ping ip地址命令,验证两两之间是否可以通信。正常情况下是可以互相ping 通,但是如果物理网卡没有连接网线则无法实现通信(开发板与主机采用交叉网线连接)。

2. 共享目录设置

  • 编辑文件/etc/exports,在文件末尾添加/home/nfs 192.168.1.*(rw, sync, no_root_squash)
    • /home/nfs:表示共享给其他主机的共享目录;
    • 192.168.1.*:表示 IP 地址为 192.168.1.(2~254) 的主机都能够挂载/home/nfs 目录;
    • rw:表示挂接此目录的客户机对该目录具有读写的权力;
    • sync:表示同步写入存储器;
    • no_root_squash:表示允许挂接此目录的客户机享有该主机的 root 身份。
  • 修改/etc/exports 配置文件后,应该使配置文件重新生效,执行exportfs –rv
    • -r:重新挂载 /etc/exports 中共享出来的目录;
    • -v:在 export 的时候,显示共享目录信息;
    • -a:全部 mount 或者 unmount /etc/exports 中的内容;
    • -u: 卸载目录
  • 查看共享目录: showmount -a
    • 如果出现错误: showmount: can’t get address for localhost.localdomain,则修改文件/etc/hosts,将::1 localhost.localdomain localhost 修改为 127.0.0.1 localhost.localdomain localhost

3. 启动并挂载NFS

  • 首先需要设置虚拟机防火墙,使之允许 NFS 和 RPC-bing 服务,并且启动RPC-bing 服务;

    image-20240308231323962

  • 然后,分别启动 RPC-bing 服务和 NFS 服务。注意,如果在启动过程中出现“启动 NFS 守护进程失败”等错误提示,则重新计算机后再尝试;

    service rpcbing start 		//服务启动
    service rpcbing restart 	//服务重启
    service nfs start
    service nfs restart
    
  • 在虚拟机上修改共享目录/home/nfs 的权限为 777,并确保 “虚拟机、主机及开发板” 三者可以互相ping通,最后使用 mount 命令在开发板上挂载此目录:

    chmod 777 /home/nfs
    mount –o nolock -t nfs 192.168.1.123:/home/nfs /mnt
    

4. 双网卡挂载NFS

  • 当拥有两张物理网卡时,专门用一张网卡将 ARM 板和虚拟机相连,将两者的 IP 设置在一个 IP 段内。具体过程和单网卡类似,首先做到虚拟机和 ARM 能相互 ping 通,能正常启动 NFS 服务,最后挂载网络文件系统。

  • 在搭建 NFS 时,给出一些错误情况解决的方法:

    • 当启动 NFS 服务失败时,解决的办法通常是修改/etc/exports 文件,出错的原因通常是权限引起的。
    • 当出现 RPC 等报错时,应该注意防火墙是否关闭。
    • 当挂载 NFS 时,出现 Permission denied 报错时,检查/etc/exports 文件中的权限设置,另外检查共享目录的权限设置。
  • 在挂载过程时,给出一些错误情况解决的方法:

    • mount: RPC: Timed out:该问题是由主机的防火墙引起的,关闭了虚拟机的防火墙后请注意,主机的防火墙也可能对 RPC 的包进行拦截。遇到此类问题时,请读者注意虚拟机和主机两者的防火墙是否关闭。

    • 在使用 mount -t nfs 192.168.1.123:/home/nfs /mnt 命令挂载时,提示错误:

      rpcbind: server localhost not responding, timed out
      RPC: failed to contact local rpcbind server (errno 5).
      rpcbind: server localhost not responding, timed out
      RPC: failed to contact local rpcbind server (errno 5).
      rpcbind: server localhost not responding, timed out
      RPC: failed to contact local rpcbind server (errno 5).
      
      • 需要将挂载命令修改为:mount –o nolock –t nfs 192.168.1.123:/home/nfs /mnt

(errno 5).
```

    - 需要将挂载命令修改为:`mount –o nolock –t nfs 192.168.1.123:/home/nfs /mnt ` 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python 网络库集锦

目录 通用网络库 网络爬虫框架 1.功能齐全的爬虫 2.其他 HTML/XML解析器 1.通用 2.清理 文本处理 自然语言处理 浏览器自动化与仿真 多重处理 异步网络编程库 队列 云计算 网页内容提取 WebSocket DNS解析 计算机视觉 通用网络库 1.urllib -网络库(stdlib)。…

RabbitMQ - 03 - Work消息模型

目录 部署demo项目 什么是Work消息模型 实现Work消息模型 1.创建队列 2.生产者代码 3.消费者代码 4.配置yml 部署demo项目 通过消息队列demo项目进行练习 相关配置看此贴 http://t.csdnimg.cn/hPk2T 注意 生产者消费者的yml文件也要配置好 什么是Work消息模型 工作…

Python实现线性查找算法

Python实现线性查找算法 以下是使用 Python 实现线性查找算法的示例代码: def linear_search(arr, target):"""线性查找算法:param arr: 要搜索的数组:param target: 目标值:return: 如果找到目标值,返回其索引;否则返回 -1…

DJI RONIN 4D摄像机mov无法播放的修复方法

DJI大疆是无人机领域的一哥,最近几年大疆除了巩固无人机方面的技术实力还额外加强了其它领域产品的开发,而RONIN 4D的发布说明了大疆进军影视级的决心和实力。下边来看下DJI RONIN 4D生成的MOV文件无法播放的修复方法。 故障文件: 237.1G MOV文件 故障…

Java高频面试之并发篇

有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 Java高频面试之总纲篇 Java高频面试之集合篇 Java高频面试之异常篇 Java高频面试之并发篇 Java高频面试之SSM篇 Java高频面试之Mysql篇 Java高频面试之Redis篇 Java高频面试之消息队列与分布式篇…

实时工业控制系统的创新整合:PLC4X与CnosDB的高效数据采集与存储

在当代工业自动化系统中,实时监测和数据分析变得至关重要。本文将介绍如何通过集成Apache PLC4X与CnosDB,实现对工业控制系统中的PLC设备进行高效数据采集和存储,为工程师们提供更强大的数据分析和监测工具。 PLC的定义 PLC是可编程逻辑控制…

【前端】vscode快捷键和实用Api整理

vscode的快捷键 创建a.html 生成模板 !回车 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …

MySQl基础入门⑦

上一章知识内容 分析数据且区分数据类型 看下表分析数据的特征&#xff0c;根据其特征确定相应的数据类型。 分析以上表格特征&#xff0c;确定数据类型&#xff0c;并对数据进行分类。分析数据后按固定长度字符串、可变长度字符串、整数、固定精度小数和日期时间数据类型对数…

稀碎从零算法笔记Day14-LeetCode:同构字符串

题型&#xff1a;字符串、哈希表 链接&#xff1a;205. 同构字符串 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那…

【算法面试题】-04

执行时长 def min_execution_time(n, size, tasks):a 0ans sizei 0while i < size:tmp tasks[i]a tmpif a < n:a 0else:a - ni 1ans a // nif a % n ! 0:ans 1return ans# 读取输入 n int(input()) size int(input()) tasks list(map(int, input().split()))…

Unity使用Addressable热更新

先看热更新的gif: Addressable是Unity推出的打ab包方案。不需要手动写AB打包脚手架了&#xff0c;不需要关心依赖&#xff0c;这也简化了ab热更新的流程。Addressable打包需要先将资源放入group中&#xff0c;按group来打包&#xff0c;每个group对应一个ScriptableObject的配置…

线程-创建线程的方法、线程池

1.创建线程一共有哪几种方法&#xff1f; 继承Thread类创建线程 继承Thread类&#xff0c;重写run()方法&#xff0c;在main()函数中调用子类的strat()方法 实现Runnable接口创建线程 先创建实现Runnable接口的类&#xff0c;重写run()方法&#xff0c;创建类的实例对象&#…

(南京观海微电子)——I3C协议介绍

特点 两线制总线&#xff1a;I2C仅使用两条线——串行数据线&#xff08;SDA&#xff09;和串行时钟线&#xff08;SCL&#xff09;进行通信&#xff0c;有效降低了连接复杂性。多主多从设备支持&#xff1a;I2C支持多个主设备和多个从设备连接到同一总线上。每个设备都有唯一…

靶场:sql-less-18(HTTP头注入)

本文操作环境&#xff1a;Kali-Linux 靶场链接&#xff1a;Less-18 Header Injection- Error Based- string 输入用户名和密码以后&#xff0c;我们发现屏幕上回显了我们的IP地址和我们的User Agent 用hackbar抓取POST包&#xff0c;在用户名和密码的位置判断注入点&#xff0…

【设计模式】(四)设计模式之工厂模式

1. 工厂模式介绍 工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 工厂模式有三种实现方式&#xff1a; 简单工厂模式工厂方法模式抽象工厂模式 2. 工厂方…

自动创建word文档的exe文件,自定义文件名、保存路径

目录 一、exe 二、使用方法 三、代码 四、Python打包exe 一、exe 百度网盘: 链接&#xff1a;https://pan.baidu.com/s/1dyCo_iVv7fb369BHbwGjHg 提取码&#xff1a;2333 夸克网盘: 链接&#xff1a;https://pan.quark.cn/s/36b14a53cccd 二、使用方法 1. 下载完成后双…

排序(7)——非递归快排

前面我们已经写了快排用递归的方法实现&#xff0c;在数据量大的时候&#xff0c;有可能会栈溢出。这里我们尝试一下改为非递归。 区分&#xff1a; 数据结构的栈——利用的是内存中的堆空间内存的栈——利用就是内存中的栈空间——函数创建函数栈帧堆的空间是远远大于栈的空…

突破编程_前端_JS编程实例(目录导航)

1 开发目标 目录导航组件旨在提供一个滚动目录导航功能&#xff0c;使得用户可以方便地通过点击目录条目快速定位到对应的内容标题位置&#xff0c;同时也能够随着滚动条的移动动态显示当前位置在目录中的位置&#xff1a; 2 详细需求 2.1 标题提取与目录生成 组件需要能够自…

Transformer之多角度解读

Transformer 文章目录 Transformer  &#x1f449;引言&#x1f48e; 一、 自注意力机制 &#xff1a; 主要用于 长距离依赖捕捉和转换序列二、 Encoder&#xff1a;2.1 多头注意力机制&#xff1a;2.2 残差连接&#xff1a; 三、 Decoder&#xff1a;3.1 Decoder 多头注意力…

SMART PLC自适应低通滤波器(收放卷线速度滤波)

一阶低通滤波器更多内容请参考信号处理专栏相关文章,常用链接如下: 1、SMART PLC 低通滤波器和模拟量采集应用 https://rxxw-control.blog.csdn.net/article/details/136595982https://rxxw-control.blog.csdn.net/article/details/1365959822、SMART PLC双线性变换和后向差…