【北京迅为】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 实验全部完成。

 

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

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

相关文章

Spring AOP相关知识详解

难 文章目录 1.AOP介绍1.1 面向切面编程 - Aspect Oriented Programming (AOP)1.2 优点 2.AOP的概念2.1 连接点、切入点、通知、切面:2.2 注解2.2.1 通知类型2.2.1.1 通知的优先级排序 2.2.2 其他重要注解2.2.3 示例代码(四种通知) 3.Spring …

外包干了3年,技术退步明显...

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…

【阅读记录-章节4】Build a Large Language Model (From Scratch)

文章目录 4. Implementing a GPT model from scratch to generate text4.1 Coding an LLM architecture4.1.1 配置小型 GPT-2 模型4.1.2 DummyGPTModel代码示例4.1.3 准备输入数据并初始化 GPT 模型4.1.4 初始化并运行 GPT 模型 4.2 Normalizing activations with layer normal…

C7.【C++ Cont】范围for的使用和auto关键字

目录 1.知识回顾 2.范围for 格式 使用 运行结果 运行过程 范围for的本意 作用 注意 3.底层分析范围for的执行过程 反汇编代码 分析 4.auto关键字 格式 基本用法 在范围for中使用auto 1.知识回顾 for循环的使用参见25.【C语言】循环结构之for文章 2.范围for C…

【数据结构】双向链表、单向循环链表、双向循环链表、栈、链栈

目录 一、双向链表 定义类和封装函数以及测试样例如下: 注意事项: 二、循环链表 单循环列表的类和函数封装如下: 注意事项: 三、双向循环链表 结点类和双循环链表的定义部分 函数封装之判空和尾插 双循环链表遍历 双循…

ModuleNotFoundError: No module named ‘_ssl‘ centos中的Python报错

1、检查系统有没有openssl,有的话,就是python安装时没有指定openssl openssl version,有输出版本号就有,没有的话,需要手动安装 下载地址 参见https://www.openssl.org/,包括以下版本: https:/…

C语言:树

在C语言中,树(Tree)是一种常见的数据结构,用于表示分层关系或层次结构的数据集合。树在计算机科学中广泛应用,包括但不限于文件系统、解析表达式、数据压缩、决策树等。 1. 基本概念 节点(Node&#xff0…

python写的服务,用docker制作镜像并且打包

步骤1 简单写一个python服务脚本app.py,通过http访问一个端口,收到helloworld from flask import Flask, request app Flask(__name__) app.route(/, methods[GET]) # 确保包括GET方法 def hello_world(): return Hello, World! if __name__ __main…

NSSCTF web刷题

1 虽然找到了flag,但是我要怎么去改他的代码,让他直接输出flag呢? (好像是要得到他的json代码,这题不让看) 2 wllm应该就是他的密码,进入许可了 意思是服务器可以执行通过POST的请求方式传入参数为wllm的命令,那这就是典型的命令执行,当然&#xff0c…

(0基础保姆教程)-JavaEE开课啦!--11课程(初识Spring MVC + Vue2.0 + Mybatis)-实验9

一、什么是Spring MVC? Spring MVC 是一个基于 Java 的 Web 框架,遵循 MVC 设计模式,用于构建企业级应用程序。它通过控制器(Controller)处理用户请求,模型(Model)处理业务逻辑,视图(View)展示数据,实现了请…

FCBP 认证考试要点摘要

理论知识 数据处理与分析:包括数据的收集、清洗、转换、存储等基础操作,以及数据分析方法,如描述性统计分析、相关性分析、数据挖掘算法等的理解和应用 。数据可视化:涉及图表类型的选择与应用,如柱状图、折线图、饼图…

「Qt Widget中文示例指南」如何为窗口实现流程布局?(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文将展示如何为不…

智能产品综合开发 - 手势识别

1 实训选题目的 本次实训选择的题目是“基于树莓派的手势识别系统”,旨在为人们提供一种便捷的交互方式,使用户能够通过手势控制智能设备,摆脱传统的物理按键操作。通过本项目,我们希望能实现快速、灵活的手势识别,提升…

Redis【1】- 如何阅读Redis 源码

1 Redis 的简介 Redis 实际上是简称,全称为 Remote Dictionary Server (远程字典服务器),由 Salvatore Sanfilippo 写的高性能 key-value 存储系统,其完全开源免费,遵守 BSD 协议。Redis 与其他 key-value 缓存产品(如…

git的使用(简洁版)

什么是 Git? Git 是一个分布式版本控制系统 (DVCS),用于跟踪文件的更改并协调多人之间的工作。它由 Linus Torvalds 在 2005 年创建,最初是为了管理 Linux 内核的开发。Git 的主要目标是提供高效、易用的版本控制工具,使得开发者…

用于高吞吐量和低延迟的 JVM 性能调优

Java 虚拟机 (JVM) 调优是调整默认参数以满足我们的应用程序需求的过程。这包括通过选择合适的垃圾回收器来使用优化版本的 getter 来调整堆的大小等简单调整。 了解 Java 虚拟机 (JVM) 什么是 JVM? Java 虚拟机 &…

django authentication 登录注册

文章目录 前言一、django配置二、后端实现1.新建app2.编写view3.配置路由 三、前端编写1、index.html2、register.html3、 login.html 总结 前言 之前,写了django制作简易登录系统,这次利用django内置的authentication功能实现注册、登录 提示&#xff…

Python+Pytest+Yaml+Allure数据参数化(DDT)数据驱动(一)

我们在做数据之前要知道几个问题 1、在代码层面怎么来数据驱动 2、yaml文件是什么 3、怎么用yaml文件实现对应的数据驱动 我们用的是pytest框架所以相对来说是简单的,我们通过pytest框架来实现,而框架中要数据驱动用到我们装饰器就好啦pytest.mark.p…

WaveForms™ SDK 参考手册(翻译笔记与总结)

概述 WaveForms 提供了一个接口,允许用户与 Digilent Analog Design 硬件进行交互,例如 Analog DiscoveryTM、Analog Discovery 2TM、Analog Discovery ProTM、Digital DiscoveryTM、Discovery Power SupplyTM 和 Electronics ExplorerTM。虽然 WaveForm…

Python基础学习-12匿名函数lambda和map、filter

目录 1、匿名函数: lambda 2、Lambda的参数类型 3、map、 filter 4、本节总结 1、匿名函数: lambda 1)语法: lambda arg1, arg2, …, argN : expression using arg 2) lambda是一个表达式,而不是一个语…