当前位置: 首页 > news >正文

IMX6ULL学习笔记(3)——挂载NFS网络文件系统

一、简介

NFS(Network File System) 即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。开启了NFS服务后,客户端访问服务器共享的文件时如同访问本地存储器(磁盘/SD卡/NAND FLASH等)上的文件一样,对于上层应用来说没有任何差别。

在嵌入式开发中,可将在虚拟机中编译通过的程序共享到开发板中,在开发板上直接运行需要调试的程序,避免了烧录的耗时操作。

二、搭建实验环境

2.1 连接到局域网

开发板与电脑接入到同一个局域网中,然后电脑提供NFS服务,开发板通过NFS与电脑连接共享文件。电脑生成的目标板应用程序放在NFS的共享文件夹内,开发板访问该文件夹执行应用程序进行测试。

在另一方面,电脑与开发板通过串口连接,使用串口终端控制开发板。

把虚拟机的网络连接方式改成桥接模式

2.2 互ping测试

连接好网络后在电脑和开发板之间进行互ping测试,以保证网络互通。

电脑ping开发板:

开发板ping电脑:

三、Ubuntu搭建NFS服务端

2.1 安装NFS服务

sudo apt-get install nfs-kernel-server

2.2 创建NFS共享目录

sudo mkdir /home/nfs

2.3 修改配置文件/etc/exports

安装NFS服务后,会新增一个/etc/exports文件(即/etc目录下名字为exports的文件),NFS服务根 据它的配置来运行。
sudo vim /etc/exports
在/etc/exports最后一行添加:
/home/nfs *(rw,sync,no_root_squash,no_subtree_check)

*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
no_root_squash:root用户具有对根目录的完全管理访问权限
no_subtree_check:不检查子目录权限,默认配置
详细的配置参数可以查看 man 5 exports

2.4 重启NFS服务

sudo service nfs-kernel-server restart

2.5 查看NFS共享目录

确认共享的目录是否正确:
showmount -e

三、开发板搭建NFS客户端

3.1 安装NFS客户端

更新源:
sudo apt-get -y update
执行安装NFS客户端:
sudo apt install nfs-common -y

注意,如果你的板子是512M Nand版本的,并且使用的是野火带Qt的镜像。需要重新使用usb烧写纯净版系统镜像。否则会报错,提示磁盘空间不足!

USB烧写镜像教程:https://doc.embedfire.com/linux/imx6/quick_start/zh/latest/quick_start/install_debian/install_debian.html#usb

3.2 查看NFS服务器共享目录:

“showmount -e +“NFS服务器IP””命令。注意在不同网络环境下,NFS服务器IP可能不一样,以实际情况为准。

showmount -e 192.168.31.77

3.3 临时挂载NFS文件系统

使用mount命令挂载NFS服务器的共享目录到开发板/mnt目录下:

sudo mount -t nfs 192.168.31.77:/home/nfs /mnt

-t nfs:指定挂载的文件系统格式为nfs。
192.168.31.77:指定NFS服务器的IP地址。需要设置为用户实际网络环境下的NFS服务器IP。
/home/nfs:指定NFS服务器的共享目录。
/mnt:本地挂载目录,即要把NFS服务器的共享目录映射到开发板的/mnt目录下。

若挂载成功,终端不会有输出,如下图:

注意: 使用这种方式挂载目录只是临时的,开发板在重启后需要重新挂载该NFS目录才能访问。

3.4 测试NFS共享目录

挂载成功后,在NFS服务器的共享目录下,输入 sudo touch hello_world.txt 命令, 则在共享目录下创建一个hello_world.txt文件,如下图:

进入开发板的/mnt目录下,可以查看到NFS服务器的共享目录中的hello_world.txt文件。 如下图:

3.5 取消挂载

当客户机在网络上无法找到NFS共享的目录时,如电脑虚拟机关机时,在NFS的客户机的终端常常会输出一些提示,或在使用ls命令查看共享目录会导致长时间等待,这时可以对目录使用umount命令取消挂载,示例如下:

sudo umount /mnt

使用该命令时以要取消挂载的目录作为参数即可,没有输出表示执行正常。如果在当前挂载的目录进行umount操作,会提示“device is busy”。建议取消挂载时,先切换到家目录“~”,在进行umount操作。


• 由 Leung 写于 2022 年 9 月 2 日

• 参考:2. 挂载NFS网络文件系统
    IMX6ULL驱动开发实战连载-01搭建开发环境

相关文章:

  • RestTemplate使用
  • Mysql---子查询的三种查询方式( 表子查询,条件子查询,列中子查询)
  • springboot+学校运动会信息管理 毕业设计-附源码231058
  • 进行日常记账后,怎样导出表格
  • Vue3中组件数据的传递以及更改
  • geoserver2.18(8):添加CSW(网络目录服务)扩展及前端开发调用
  • DOM--页面渲染流程
  • LeetCode 85双周赛(补记)
  • Apache DolphinScheduler PMC:开源不一定也要九死一生
  • SpringMVC之拦截器
  • Linux环境Docker的安装过程
  • 第四章【ADFS集成Exchang实现OWA\ECP单点登录SSO】安装Active Directory联合身份验证服务(AD联合身份验证 ADFS)
  • 公众号查题接口
  • 基于瞬态自适应的麻雀搜索算法
  • PHP 使用 PhpSpreadsheet
  • AWS实战 - 利用IAM对S3做访问控制
  • canvas 五子棋游戏
  • HTTP--网络协议分层,http历史(二)
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript设计模式之工厂模式
  • ucore操作系统实验笔记 - 重新理解中断
  • 订阅Forge Viewer所有的事件
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 开源SQL-on-Hadoop系统一览
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 设计模式 开闭原则
  • 时间复杂度与空间复杂度分析
  • 算法之不定期更新(一)(2018-04-12)
  • 微服务框架lagom
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 因为阿里,他们成了“杭漂”
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 阿里云重庆大学大数据训练营落地分享
  • 进程与线程(三)——进程/线程间通信
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • $L^p$ 调和函数恒为零
  • (42)STM32——LCD显示屏实验笔记
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (南京观海微电子)——COF介绍
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)认识微服务
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (转载)从 Java 代码到 Java 堆
  • .apk文件,IIS不支持下载解决
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .Net Core 中间件验签
  • .Net mvc总结
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net反混淆脱壳工具de4dot的使用
  • .NET构架之我见