【Linux】新唐NUC977挂载NFS实现网络文件传输

266 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

前言

   相关简介:   NFS(Network File System)即网络文件系统,是 FreeBSD 支持的文件系统 中的一种,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。在 NFS 的应 用中,NFS 的客户端应用可以透明地读写位于远端 NFS 服务器上的文件,就像访 问本地文件一样。   使用 NFS,可以很方便的将 PC 上编译好的程序或者一些其他文件复制到开发 板上调试,省去了频繁插拔 U 盘的繁琐。   要实现 NFS 文件系统,需要现在 PC 的 Ubuntu 系统搭建好 NFS 服务器,并设 置共享目录,开发板挂载该共享目录,达到文件传输的功能。 完成目标:   虚拟机编译c文件,将编译好的文件拷贝到共享目录,,开发板挂载共享目录并拷贝文件到开发板目录中运行。


一、虚拟机Ubuntu配置

Ubuntu 安装 NFS 服务

sudo apt-get install nfs-kernel-server

修改 NFS 配置文件

vim /etc/exports

在最后一行添加:

/srv/nfs4 *(insecure,rw,sync,no_subtree_check)

在这里插入图片描述

参数说明:

  • /srv/nfs4 : nfs服务器共享的目录(需要本身存在,记得创建否则会挂载失败)。
  • :代表允许所有的网段访问(也可以使用具体的IP)
  • rw:挂接此目录的客户端对该共享目录具有读写权限
  • sync:资料同步写入内存和硬盘
  • no_subtree_check:不检查父目录的权限。

重启 NSF 服务器

/etc/init.d/nfs-kernel-server restart

查看本机地址验证本机nfs服务开启是否成功 在这里插入图片描述

mount -t nfs -o nolock 192.168.190.128:/srv/nfs4 /mnt

参数说明:

  • 192.168.190.128:NSF服务器的IP地址

  • /srv/nfs4 :共享目录所在的文件夹,应与搭建服务器是设置的相同

  • /mnt :共享目录的挂载地址

在这里插入图片描述 然后我们使用交叉编译器编译一个文件先放在共享目录中,方便开发板待会儿运行使用;

#include <stdio.h>

int main()
{
    printf("hello world!\r\n");
    return 0;
}

在这里插入图片描述

二、开发板挂载

保证开发板与电脑是在同一个局域网下

ifconfig eth0 up  # 打开网卡
udhcpc -i eth0  # dhcp分配IP

电脑和虚拟机以及开发板三者互ping完成通讯表示网络配置成功,然后就可以执行下面的操作; 在这里插入图片描述 这里我也搞了好久

好不容易ping通了还是无法挂载 在这里插入图片描述 这里的原因是内核不支持nfs,解决办法是在内核图形化配置中配置下面的选项

File systems—> [*] Network File Systems —> 在这里插入图片描述

mount -t nfs -o nolock 192.168.1.6:/srv/nfs4 /mnt
cp /mnt/main ./
./main

执行效果 在这里插入图片描述 在这里插入图片描述

最后

Linux开发少不了文件的传输,挂载U盘、nfs都是传输文件的一种手段

本章需要注意的点:

  • 电脑与开发板一定是要在同一局域网下
  • 内核需要开启nfs支持
  • 编译运行文件需要使用交叉编译器编译

这里还可以设置一个开机启动自动进行上面的设置大大缩短开发的时间

vi /etc/init.d/rcS

在文件末添加

ifconfig eth0 up  # 打开网卡
udhcpc -i eth0  # dhcp分配IP
mount -t nfs -o nolock 192.168.1.6:/srv/nfs4 /mnt