【北京迅为】iTOP-4412全能版使用手册-第二十章 搭建和测试NFS服务器
iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、陀螺仪、CAN总线、RS485总线、500万摄像头等模块,稳定运行Android 4.0.3/Android 4.4操作,系统通用Linux-3.0.15+Qt操作系统(QT支持5.7版本),Ubuntu版本:12.04,接口智能分配 方便好用。
第二十章 搭建和测试NFS服务器
除了前面介绍的 TFTP 可以通过网络在虚拟机 Ubuntu 和开发板之间传输文件,还有一种方法NFS网络共享目录。
要实现 NFS 网络文件系统,需要将安装有虚拟机 Ubuntu 的 PC 机和路由器相连,开发板也需要和路由器相连,PC 和开发板连接的路由器应该是同一台路由器,这样才能确保它们在同一个局域网,确保 PC 上虚拟机 Ubuntu 系统和开发板之间的网络是连通的。安装虚拟机Ubuntu 的 PC 机和开发板,最好能够都通过网线和路由器相连
有的用户,安装虚拟机 Ubuntu 的机器使用无线和路由器相连,或者台式机使用无线和路由器相连,作者做过多次尝试,无论怎么做,都很难实现 NFS 功能。如果条件允许,用户最好采用将安装虚拟机 Ubuntu 的机器和开发板都通过有线网和同一台路由器相连;如果开发环境实在不允许,用户又对 NFS 不熟悉,最好先在有路由器的环境实现 NFS 之后,再使用无线,您需要根据自己网络的实际情况来尝试实现 NFS。
20.1 搭建NFS服务器
完成 NFS 网络文件系统,需要在虚拟机 Ubuntu 上搭建 NFS 服务器,这一节介绍如何搭建 NFS 服务器。
搭建 NFS 服务器,需要在在虚拟机 Ubuntu 上安装 Ubuntu NFS 服务,安装 NFS 服务,需要一个软件包,软件包可以使用 apt 命令下载(当然,首先要保证虚拟机 Ubuntu 可以上网)。在 Ubuntu root 用户下输入“apt-get install nfs-kernel-server”命令安装Ubuntu NFS 服务,如下图。
在安装过程中会提示”是否继续安装”的信息,输入”y”,如下图。
然后按回车,会继续安装。安装完成,如下图。
为了确保确实可以安装成功,再次执行“apt-get install nfs-kernel-server”命令,如下图。
由上图可知,这次更新软件,说明安装已经成功。继续搭建 NFS 服务器。在/etc/export 文件的最后一行添加:
/home/minilinux/ *(rw,sync,no_root_squash)
如下图,
下面讲解一下上面输入的内容都代表什么意思:
/home/minilinux/:要共享的目录;
*:代表允许所有的网络段访问;
rw:是可读写权限;
sync:是资料同步写入内存和硬盘;
no_root_squash:是 Ubuntu nfs 客户端分享目录使用者的权限,如果客户端使用的是root 用户,那么对于该共享目录而言,该客户端就具有 root 权限;
这里需要注意的是,“/home/minilinux/”是服务器要挂载的目录,这个目录在默认的虚拟机 Ubuntu 下是没有的,需要用户手动新建。进入/home 目录,使用命令“mkdir minilinux”即可新建。用户可以选择新建其它目录,这也是允许的,但是后续的操作中会用到“/home/minilinux/”目录,如果你对 NFS 不是很熟悉,那么请务必建立“/home/minilinux/”目录。
请注意:如果使用的是Ubuntu12.04系统则执行这一步重启。
接下来重启 portmap 服务,输入“/etc/init.d/portmap restart”命令。
请注意:如果使用的是Ubuntu14.04或者Ubuntu16.02系统则执行这一步重启。
接下来重启 portmap 服务,输入“/etc/init.d/rpcbind restart”命令,作者使用的是Ubuntu12系统,运行结果如下图
然后重启 nfs 服务,输入“/etc/init.d/nfs-kernel-server restart”命令,运行结果如下图。
至此,Ubuntu nfs 服务器端的配置完成。
20.2 测试NFS服务器
完成前面的搭建服务器工作之后,可以在虚拟机 Ubuntu 本机上验证这个服务器安装和配置是否成功。本节介绍如何测试 NFS 服务器是否正常。
在虚拟机 Ubuntu 控制台输入“mount -t nfs localhost:/home/minilinux /mnt”命令,这个命令可以把/home/minilinux 挂载到/mnt 目录下。记着使用“df”命令查看是否挂载成功,如下图。
可以看到上图中最后一行就是挂载的 nfs 文件系统,这说明 Ubuntu nfs 服务器端搭建成功了。如果没有这一行,或者在使用“mount -t nfs localhost:/home/minilinux /mnt”报错,请返回到上一节检查是否有哪一步操作遗漏。
20.3 实现NFS共享目录
请注意,如果是精英版用户,无论内核使用是迅为光盘资料中提供的 zImage 镜像,还是自己编译的镜像。请确保,光盘的内容是更新之后的,在 2019 年 11 月之前购买的用户,多半需要更新光盘资料,否则本章内容无法实现!用户打开自己下载的光盘资料到“06_源码_uboot 和 kernel”,找到“iTop4412_Kernel_3.0_XXX.tar.gz”内核源码压缩包,压缩包名称中 XXX 部分表示日期,如果压缩包的日期在 20191007 之前,请务必下载最新的资料,如果压缩包的日期是 20191007 或者之后的,不用更新。
如果用户“iTop4412_Kernel_3.0_XXX.tar.gz”内核源码压缩包的 XXX 为 20180604, 只需要更两部分内容即可。更新的内容为“06_源码_uboot 和kernel/iTop4412_Kernel_3.0_20191007.tar.gz”压缩包和“04_镜像_QT 文件系统
/zImage”目录中的全部内容,以及光盘中的用户手册。
如果用户自己编译,则需要使用新的内核源码编译之后烧写到开发板;如果用户暂时想使用我们的镜像,请将“04_镜像_QT 文件系统/zImage”中的内核镜像烧写到开发板中。
如果用户使用的是全能版 V4.0 版本,用户使用目前的光盘资料就可以。
开发板网络配置
开发板网口需要使用网线和路由器相连,安装虚拟机 Ubuntu 的 PC 也需要使用和路由器相连,路由器需要是同一个,这样才能让开发板的网络和虚拟机的网络在同一网段。
除了硬件连接,软件方面也需要配置,确保配置正确。
首先查看一下 NFS 服务器的 ip,也就是虚拟机 Ubuntu 的 IP,如下图所示,使用“ifconfig”命令,可以查看到作者虚拟机 Ubuntu 的 IP 为 192.168.2.232。
接着在开发板串口控制台输入命令“ifconfig”,如下图所示。
如上图查看到作者开发板的 IP 为 192.168.2.232,虚拟机 Ubuntu 的 IP 为192.168.2.232,子网掩码都为 255.255.255.0,明显不在同一网段。要确保网络连通,除了连接同一台路由器之外,还需要根据虚拟机 Ubuntu 的网络参数,配置开发板的 IP 地址、子网掩码,确认开发板网络和虚拟机 Ubuntu 的网络是在同一网段。
开发板串口控制台使用命令“vi /etc/eth0-setting”打开网络配置文件,将其中的 IP 等参数修改之后,确保在同一网段,网络配置文件打开之后默认如下图所示。
然后修改开发板的 ip,保存网络配置文件,退出编辑。在串口控制台上使用命令“reboot”重启开发板,这样可以使网络配置更新。
系统重启之后使用“ifconfig”查看开发板 ip,如下图。
由上图可知 ip 已经修改过来了,ping 一下服务器 ip,如下图所示,使用命令“ping 192.168.2.232 -c 3”,作者虚拟机 Ubuntu 的 IP 为 192.192.2.232,所以 ping 命令加这个IP,用户根据自己虚拟机 Ubuntu 的 IP,修改 IP 参数。
由上图可知,0%的丢包率,能够确认开发板和 ubuntu 服务器之间的网络是连通的。
上面这一步,开发板和虚拟机 Ubuntu 之间一定要确保 ping 通,否则后面步骤一定通不过。如果它们之间 ping 不通,重复本小节,检查一下是哪一步有遗漏。
挂载nfs 目录
前面 2 个重要步骤:“NFS 网络服务器在虚拟机安装和测试完成”和“开发板和虚拟机Ubuntu 能够 ping 通”完成之后,可以进行后续操作。
在开发板串口控制台,使用命令“mkdir /mnt/nfs”在/mnt 目录下新建一个 nfs 目录, 然后使用命令“mount -t nfs -o nolock 192.168.2.232:/home/minilinux /mnt/nfs”命令挂载到 nfs 服务器。命令中的红色部分为 IP 地址,用户需要修改为自己 Ubuntu 的 IP。
上图中“mount -t nfs...”这个长命令如果没有报错,那么就表明开发板已经成功挂载到虚拟机的 NFS 服务器上。
NFS 共享目录的使用介绍
挂载成功之后,进入虚拟机 Ubuntu 系统中的”/home/minilinux/”目录,如下图,新建一个 test 文件,test 文件中的内容为“hello nfs”。
接下来查看开发板上/mnt/nfs 的目录,如下图。
由上图可知,开发板的/mnt/nfs 目录和虚拟机 Ubuntu 的/home/minilinux 目录,这两个目录中的内容可以保持同步,开发板和虚拟机 Ubuntu 之间要传输文件,可以通过这个目录来实现,非常方便。
至此,nfs 实验全部完成。
相关文章:

【北京迅为】iTOP-4412全能版使用手册-第二十章 搭建和测试NFS服务器
iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...

【纯原生js】原生实现h5落地页面中的单选组件按钮及功能
h5端的按钮系统自带的一般都很丑,需要我们进行二次美化,比如单选按钮复选框之类的,那怎么对其进行html和css的改造? 实现效果 实现代码 <section id"tags"><h2>给景区添加标题</h2><label><…...

深入浅出:开发者如何快速上手Web3生态系统
Web3作为互联网的未来发展方向,正在逐步改变传统互联网架构,推动去中心化技术的发展。对于开发者而言,Web3代表着一个充满机遇与挑战的新领域,学习和掌握Web3的基本技术和工具,将为未来的项目开发提供强大的支持。那么…...

通过深度点图表示的隐式场实现肺树结构的高效解剖标注文献速递-生成式模型与transformer在医学影像中的应用
Title 题目 Efficient anatomical labeling of pulmonary tree structures via deeppoint-graph representation-based implicit fields 通过深度点图表示的隐式场实现肺树结构的高效解剖标注 01 文献速递介绍 近年来,肺部疾病(Decramer等ÿ…...

数据结构 (17)广义表
前言 数据结构中的广义表(Generalized List,又称列表Lists)是一种重要的数据结构,它是对线性表的一种推广,放松了对表元素的原子限制,容许它们具有其自身的结构。 一、定义与表示 定义:广义表是…...

论文笔记 SliceGPT: Compress Large Language Models By Deleting Rows And Columns
欲买桂花同载酒,终不似,少年游。 数学知识 秩: 矩阵中最大线性无关的行/列向量数。行秩与列秩相等。 线性无关:对于N个向量而言,如果任取一个向量 v \textbf{v} v,不能被剩下的N-1个向量通过线性组合的方式…...
前端工具的选择和安装
选择和安装前端工具是前端开发过程中的重要步骤。现代前端开发需要一些工具来提高效率和协作能力。以下是一些常用的前端工具及其选择和安装指南。 1. 代码编辑器 选择一个好的代码编辑器可以显著提高开发效率。以下是几款流行的代码编辑器: Visual Studio Code (…...
Fantasy中定时器得驱动原理
一、服务器框架启动 public static async FTask Start(){// 启动ProcessStartProcess().Coroutine();await FTask.CompletedTask;while (true){ThreadScheduler.Update();Thread.Sleep(1);}} 二、主线程 Fantasy.ThreadScheduler.Update internal static void Update(){MainS…...

【反转链表】力扣 445. 两数相加 II
一、题目 二、思路 加法运算是从低位开始,向高位进位,因此需要将两个链表进行反转,再进行对齐后的相加操作。力扣 2. 两数相加 三、题解 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode …...
SpringBoot 项目中使用 spring-boot-starter-amqp 依赖实现 RabbitMQ
文章目录 前言1、application.yml2、RabbitMqConfig3、MqMessage4、MqMessageItem5、DirectMode6、StateConsumer:消费者7、InfoConsumer:消费者 前言 本文是工作之余的随手记,记录在工作期间使用 RabbitMQ 的笔记。 1、application.yml 使…...

Uniapp 安装安卓、IOS模拟器并调试
一、安装Android模拟器并调试 1. 下载并安装 Android Studio 首先下载 Mac 环境下的 Android Studio 的安装包,为dmg 格式。 下载完将Android Studio 向右拖拽到Applications中,接下来等待安装完成就OK啦! 打开过程界面如下图所示…...
JavaScript 中的原型和原型链
JavaScript 中的原型和原型链也是一个相对较难理解透彻的知识点,下面结合详细例子来进行说明: 一、原型的概念 在 JavaScript 中,每个函数都有一个 prototype 属性,这个属性指向一个对象,这个对象就是所谓的 “原型对…...

数组变换(两倍)
数组变换 以最大元素为基准元素,判读其他元素能否通过 x 2 成为最大值! 那么怎么判断呢: max % arr[i] 0arr[i] * 2 ^n max int x 2 ^ n max / arr[i] 3.只需判断 这个 x 是不是 2 的 n 次放就可以了! 判断 是否为 2 的 n 次 …...

GBN协议、SR协议
1、回退N步(Go-Back-N,GBN)协议: 总结: GBN协议的特点: (1)累计确认机制:当发送方收到ACKn时,表明接收方已正确接收序号为n以及序号小于n的所有分组,发送窗…...

三维扫描检测仪3d扫描测量尺寸-自动蓝光测量
在现代工业及生产过程中,精确、高效的尺寸检测是保证产品质量、提升生产效率的关键因素。 红、蓝光测量,以其高精度、高效率和非接触式的特点,在工业及生产中发挥着越来越重要的作用。蓝光测量技术利用蓝色激光光源,通过扫描被测…...
大模型翻译能力评测
1. 背景介绍 随着自然语言处理技术的飞速发展,机器翻译已经成为一个重要的研究领域。近年来,基于大模型的语言模型在机器翻译任务上取得了显著的进展。这些大模型通常具有数亿甚至数千亿的参数,能够更好地理解和生成自然语言。 但是…...
MySQL隐式转换造成索引失效
一、什么是 MySQL 的隐式转换? MySQL 在执行查询语句时,有时候会自动帮我们进行数据类型的转换,这个过程就是隐式转换。比如说,我们在一个 INT 类型的字段上进行查询,但是传入的查询条件却是字符串类型的值,…...

SuperMap Objects组件式GIS开发技术浅析
引言 随着GIS应用领域的扩展,GIS开发工作日显重要。一般地,从平台和模式上划分,GIS二次开发主要有三种实现方式:独立开发、单纯二次开发和集成二次开发。上述的GIS应用开发方式各有利弊,其中集成二次开发既可以充分利…...
多组数输入a+b:JAVA
链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 输入描述: 输入包含多组数据,每组数据输入一行,包含两个整数 输出描述: 对于每组数据输出一行包含一个整数表示两个整数的和 代码: import java.util.Scanner; pu…...

R语言结构方程模型(SEM)在生态学领域中的应用
目录 专题一、R/Rstudio简介及入门 专题二、结构方程模型(SEM)介绍 专题三:R语言SEM分析入门:lavaan VS piecewiseSEM 专题四:SEM全局估计(lavaan)在生态学领域高阶应用 专题五࿱…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...