NFS 是 Network File System 的缩写, 它可以通过网络, 让不同的机器、 不同的操作系统可以共享彼此的文件。NFS 服务器可以让 PC 将网络中的 NFS 服务器共享的目录挂载到本地端的文件系统中, 而在本地端的系统中来看, 那个远程主机的目录就好像是自己的一个磁盘分区一样, 在使用上相当便利;NFS 服务器我们一般是在 ubuntu 上搭建的。 这里的客户端我们使用的是开发板, 我们可以使用开发板A, 挂载开发板 B, 挂载开发板 C, 我们可以挂载好几个客户端。 框图只给大家画出来了一个。

即/home/mnt 下的文件和/home/nfs 下的文件他们的文件是一样的。
同一个网段概念
使用 nfs 之前, 开发板、 虚拟机 ubuntu、 windows 电脑三者要互相 ping 通, 这就涉及到了同一个网段的概念。
概念: 同一个网段是指 IP 地址和子网掩码相与得到的相同的网络地址。
快速判断同一个网段:
(1) 开发板、 虚拟机 ubuntu、 windows 子网掩码是不是相同。
(2) 开发板、 虚拟机 ubuntu、 windows IP 地址的前三段是不是相同。
举例:Ubuntu:
 

由上图可知, ubuntu 的 IP 为 192.168.1.11, 子网掩码是 255.255.255.0
Windows:

由上图可知, windows 电脑的 IP 为 192.168.1.5 ,子网掩码是 255.255.255.0
所以, ubuntu 和 windows 在同一个网段, 因为子网掩码相同, 都是 255.255.255.0, IP 地址前三段相同,都是 192.168.1。 同理, 判断开发板的网段是不是和 ubuntu 和 windows 在同一个网段下, 我们也可以使用这个方法。
开发板, windows, 虚拟机 ubuntu 三者之间的连接
(1) 虚拟机 ubuntu 要使用桥接模式, 不能使用其他模式
(2) 开发板使用无线或者有线连接到路由器上, 不能直接连接到电脑, 不能连手机热点。
(3) windows 关闭防火墙, 使用有线或者无线连接到和开发板连接的同一个路由器上。
(4) 如果 windows 使用的是无线连接到路由器, 那么虚拟机 vm 要桥接到无线网卡, 反之, 桥接到有线网卡。
虚拟机桥接模式是自动选择的, 选择编辑, 选择虚拟网络编辑器, 点击一下更改设置, 这个需要管理员的权限, 桥接模式他这里是自动的, 他下边有一个网卡, 这个呢我使用的是有线, 所以他是有线网卡,所以大家不能把有线连接到路由器, 也不能把无线连接到路由器, 这两个不能同时连, 如果说你要同时连的话, 那么就不知道自动连接到哪个网卡了, 那么你就 ping 不通了。
(5) 保证虚拟机 ubuntu,Windows, 开发板在同一个网段。
(6) 使用以上连接方法极大减少 ping 不通的概率。 如果 ping 不通, 请检查以上 5 条是否全部满足。
nfs 服务器的搭建
(1)在 ubuntu 安装 nfs 服务: 在管理员的身份下运行
apt-get install nfs-kernel-server

 (2) 在/home 下创建一个名为 nfs 的文件夹
 

(3) 打开配置文件添加 nfs 共享目录
vi /etc/exports
在配置文件里面添加一下代码:
/home/nfs/ *(rw,sync,no_root_squash)
其中: /home/nfs/ 是 nfs 服务器要共享的目录
rw:是可读写权限
sync:是资料同步写入内存和硬盘
no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时, 其权限将被转换成为一名使用者,通常它的 UID 与 GID 都会变成 nobody 身份。
 (4) 重启 nfs 服务
/etc/init.d/nfs-kernel-server restart

显示 ok 就说明 nfs 服务器搭建成功了。
nfs 服务器的使用
(1) 我们将开发板开发板烧写 yocto 文件系统, 有线网口通过网线连接到路由器, 系统起来后首先使用“ifconfig”查看开发板 ip。 如下图所示:
 

( 2) 在 Ubuntu 上输入“ ifconfig” , 查看一下 NFS 服务器( Ubuntu) 的 ip 地址, 如下图所示:
( 3) 通过查询 ip 地址, 查看到开发板和服务器在同一网段, 如果不在同一网段, 则需要修改开发板的网络设置, 重新设置 ip 地址并重启开发板使之生效。
( 4) 开发板上使用 ping 命令测试网络, 如下图所示, 开发板和 ubuntu 服务器之间的网络是连通的。
 

(5) 挂载 nfs 服务器共享的目录, 命令如下:
mount -t nfs -o nolock,nfsvers=3,vers=192.168.1.9:/home/nfs /mnt/
这句话代码的意思是使用 nfs3 版本挂载 IP 为 192.168.1.9 中的 /home/nfs 到 mnt 文件夹下, IP 为ubuntu 的 IP.把这个 ip 改成自己 ubuntu 的 ip 就可以了, 前提是开发板必须能够 ping 通 ubuntu , 如果没有 ping 通的话再检查下, 复制命令, 这样就挂载好了 nfs 服务。 那么挂载好了之后要怎么用呢, 我这里打开 ubuntu, 然后进到我们平常做实验的目录, 在这个目录下有一个 hello 的可执行文件, file hello 查看下,他是在开发板上运行的, 架构是 arm 的, 如果是借助 tf 卡或者 U 盘来拷贝会比较麻烦, 我们可以直接使用nfs , 我现在把这个可执行文件拷贝到共享目录下, 也就是 home/nfs 这个目录,
cp hello /home/nfs
然后我们再进到共享目录看一下, 在这个目录下有一个 hello 的可执行文件, 现在我们是在 ubuntu 上操作的, 然后我们在超级终端上看一下, 我们这里是把共享的目录挂载到了 mnt 上, 我们进到 /mnt 目录下, ls 看一下, 在这里就可以看到 ubuntu 的 hello 文件了, 我们来运行下, 我们是可以运行成功的, 所以说我们使用 nfs, 我们可以很方便的把我们 ubuntu 上的文件拷贝到开发板, 同理也可以把开发板上的文件拷贝到 ubuntu, 比如说我在这个挂载的路径下, 我创建一个 .c 文件,touch nihao.c

然后打开 ubuntu , 同样在这个路径下, 就可以看到 nihao.c , 我们可以直接把这个拷贝到 ubuntu 上,我直接拷贝到 test 目录下,cp nihao.c /home/topeet/test
或者直接考到 samba 上
cp nihao.c /home/samba
然后我们在打开电脑的 samba , 我们在 samba 上也可以看到这个 nihao.c ,然后我就把 nihao.c 拖到windows 上, 这样就实现了开发板上的文件传到 windows 电脑上, 非常的方便, 就不用了 U 盘一个个拷了,我们开发板没有和任何一个设备连接, 我们没有连接 U 盘或者其他的设备, 只是我们无线上网了, 我们就可以共享我们的文件, 所以说他不仅神奇也非常的方便。
 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐