完美体育·(中国)手机网页版科技提醒您:您的浏览器版本过低或者使用了兼容模式,为了获得更好的浏览体验,建议使用IE10以上的浏览器或使用极速模式。 请升级浏览器以获得更好的体验!

完美体育·(中国)手机网页版 > 评测报告 > 【完美体育·(中国)手机网页版王牌产品MYD-Y6ULX-V2开发板】挂载NFS网络文件系统

【完美体育·(中国)手机网页版王牌产品MYD-Y6ULX-V2开发板】挂载NFS网络文件系统

文章来源: 发布日期:2023.1.7 浏览次数:1065 次

由评测者“华仔stm32”提供。

挂载SATA硬盘时,看了一下我的开发板的硬盘,只剩下1.2G了,所以就想起挂载nfs网络文件系统,这样就不会出现硬盘空间不足了。

网络文件系统,常被称为NFS(Network File System),它是一种非常便 捷的在服务器与客户端通过网络共享文件的方式,具体见下图。

image.png
开启了NFS服务后,客户端访问服务器共享的文件时如同访问本 地存储器(磁盘/SD卡/NAND FLASH等)上的文件一样,对于上层应用来说没有 任何差别,在嵌入式开发时,我们常常利用这个特性在主机上共享文件,主要应用场景如下:


  • 在NFS服务器上编译应用软件,客户端(开发板)通过NFS访问并运行应用程序进行测试。
  • 把NFS作为根文件系统来启动

我们常常通过NFS给开发板共享开发主机编写的应 用程序,在本节内容将介绍如何在开发板和开发主机之间共享目录。我们要构 建的使用NFS文件系统的实验环境架构如下图所示。

image.png

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

搭建NFS环境

如何利用NFS搭建NFS环境。主要包含连接网络、主机开启NFS服务 以及开发板挂载文件系统三个步骤。
在虚拟机上创建共享目录:/home/developer/linux/nfs
开发板的挂载目录:/mnt

在开发主机开启NFS服务

Ubuntu系统默认没有安装NFS服务,需要使用如下命令安装NFS服务端软件:

#以下命令在主机上运行 
sudo apt install nfs-kernel-server 


安装NFS服务后,会新增一个/etc/exports文件(即/etc目录下名字为exports的文件),NFS服务根 据它的配置来运行,其默认内容可通过命令cat /etc/exports查看,它默认包含了一些配置 的范例,内容如所示。

在/etc/exports文件末尾添加如下语句并保存, 注意如下语句写到/etc/exports文件是在同一行 "/home/developer/linux/nfs"为主机共享目录的绝对地址
/home/developer/linux/nfs *(rw,sync,no_root_squash)
image.png
修改完/etc/exports文件并保存后,可使用exportfs命令更新配置:

#以下命令在主机上运行 
sudo exportfs -arv 


该命令的参数说明如下:

  • -a:全部mount或umount文件/etc/exports中的内容。
  • -r:重新mount文件/etc/exports中的共享内容。
  • -u:umount目录。
  • -v:在exportfs的时候,将详细的信息输出到屏幕上。

若配置正常,该命令执行后会列出共享的目录项,本示例的执行结果见下图。
image.png

使用showmount –e 可查看当前NFS服务器的加载情况,具体见下图。

#以下命令在主机上运行
developer@EASY-EAI-Develop:~/linux/nfs$ showmount -e
Export list for EASY-EAI-Develop: /home/developer/linux/nfs *


开发板上的固件已经安装好了nfs客户端了。如果没有,则sudo apt install nfs-common -y就可以

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

root@myd-y6ull14x14:~# showmount -e 192.168.3.186 
Export list for 192.168.3.186: 
/home/developer/linux/nfs * 


临时挂载NFS文件系统

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

注意:需要把下面的192.168.3.186设置为用户实际网络环境下的NFS服务器IP

#以下命令在开发板上运行 
/mntmyd-y6ull14x14:~# sudo mount -t nfs 192.168.3.186:/home/developer/linux/nfs 


以上命令使用的各个参数如下:

  • -t nfs:指定挂载的文件系统格式为nfs。
  • 192.168.3.186:指定NFS服务器的IP地址。
  • /home/embedfire/workdir:指定NFS服务器的共享目录。
  • /mnt:本地挂载目录,即要把NFS服务器的共享目录映射到开发板的/mnt目录下。

若挂载成功,终端不会有输出,Linux的哲学思想是“没有消息便是好消息

测试NFS共享目录

root@myd-y6ull14x14:~# cd /mnt 
root@myd-y6ull14x14:/mnt# ls 
root@myd-y6ull14x14:/mnt# sudo touch test.txt 
root@myd-y6ull14x14:/mnt# ls test.txt 

在主机界面上看:

developer@EASY-EAI-Develop:~/linux/nfs$ ls

test.txt 

说明nfs服务挂载成功。

取消挂载

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

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


最后感谢野火、原子哥的网站提供详细的教程。