网络文件系统( NFS) 使用
- NFS 优点:
- 开发过程中不受开发板空间的限制,直接使用网络文件就像使用本地文件一样;
- 调试过程中避免一一将编译后的应用程序和库文件复制到开发板上。
- 在开发板中使用网络文件系统可以为开发和调试节省不少时间。下面具体介绍其使用步骤。
1. 虚拟机设置
-
配置虚拟机,让其能够直接访问局域网内的任何主机。前面为了能够让虚拟机与宿主机进行通信,将虚拟机的网络连接设置为 NAT 方式,下面分别介绍桥接模式和 NAT 模式 :
- 桥接模式:虚拟机相当于局域网中一台独立主机,可以访问网内任何一台机器。在这种模式下,需将虚拟机IP 地址配置成和宿主机同一网段,这样二者可以通信。如果再配置好网关和DNS 的地址,虚拟机还可以通过局域网的网关或路由器访问互联网。
- NAT 模式:虚拟机借助 NAT(网络地址转换)功能,通过宿主机所在网络来访问互联网。 NAT 模式下的虚拟机 IP 是由 VMnet(NAT)虚拟网络的 DHCP 服务器提供的,无法手动修改,因此虚拟机和局域网中的其他真实主机无法通信。
-
为了使虚拟机、宿主机和开发板能达到互相通信的目的,虚拟机的网络连接方式应该采用桥接方式。
-
通过选择菜单 “虚拟机” ,然后在下拉菜单中选择 “设置” 选项,在弹出的 “虚拟机设置” 窗口中进行设置,需要注意的是,设置虚拟机网络连接时,应该在虚拟机没有启动时进行设置,否则无法设置或者设置无法生效。
-
启动虚拟机,查看虚拟机的 IP 地址和网络连接状态。
-
如果虚拟机右下角的虚拟网卡标识显示已经连接上,那么在终端输入
ifconfig
查看网卡是否已设置。如果需要修改IP地址信息,则可以单击右上角的网络图标,然后在弹出的面板中,单击“网络设置”按钮,打开“网络”对话框,单击设置图标进入网卡设置对话框,在该对话框中对虚拟机 IP 地址和网关进行设置 : -
如果虚拟机右下角的虚拟网卡标识显示未连接,则有可能是安装虚拟机时少选了一项 VMware Bridge Protocol ,那么需要在宿主机上完成以下设置:
-
打开网络连接的属性窗口,在该窗口中有本地连接 VMnet1、 VMnet8 和网络连接。右击 VMnet1 或者 VMnet8,选择 “属性” 进入“VMware Network Adapter VMnet1属性”对话框,如果没有找到“VMware Bridge Protocol ”项的话,那就需要重新安装该桥接协议。
- 首先单击 “安装” 按钮,进入 “选择网络功能类型” 对话框后,选择 “服务” 选项,并单击 “添加” 按钮:
-
在 “选择网络服务” 窗口单击 “从磁盘安装” 按钮,在虚拟机安装路径下的 VMware Workstation 目录中找到
netbridge.inf
文件,然后点击 “打开” 按钮进行安装: -
安装完成后,在 “VMware Network Adapter VMnet1 属性” 窗口出现了 VMware Bridge Protocol 项,如图所示。
-
最后,重新启动计算机并且重启虚拟机,验证网络联通性。假设,主机的 IP 地址为 192.168.1.109,虚拟机的 IP 地址为 192.168.1.111,开发板的 IP 地址为 192.168.1.113。分别通过
ping ip地址
命令,验证两两之间是否可以通信。正常情况下是可以互相ping 通,但是如果物理网卡没有连接网线则无法实现通信(开发板与主机采用交叉网线连接)。
-
-
-
2. 共享目录设置
- 编辑文件
/etc/exports
,在文件末尾添加/home/nfs 192.168.1.*(rw, sync, no_root_squash)
- /home/nfs:表示共享给其他主机的共享目录;
- 192.168.1.*:表示 IP 地址为 192.168.1.(2~254) 的主机都能够挂载/home/nfs 目录;
- rw:表示挂接此目录的客户机对该目录具有读写的权力;
- sync:表示同步写入存储器;
- no_root_squash:表示允许挂接此目录的客户机享有该主机的 root 身份。
- 修改/etc/exports 配置文件后,应该使配置文件重新生效,执行
exportfs –rv
- -r:重新挂载 /etc/exports 中共享出来的目录;
- -v:在 export 的时候,显示共享目录信息;
- -a:全部 mount 或者 unmount /etc/exports 中的内容;
- -u: 卸载目录
- 查看共享目录:
showmount -a
- 如果出现错误: showmount: can’t get address for localhost.localdomain,则修改文件
/etc/hosts
,将::1 localhost.localdomain localhost
修改为127.0.0.1 localhost.localdomain localhost
- 如果出现错误: showmount: can’t get address for localhost.localdomain,则修改文件
3. 启动并挂载NFS
-
首先需要设置虚拟机防火墙,使之允许 NFS 和 RPC-bing 服务,并且启动RPC-bing 服务;
-
然后,分别启动 RPC-bing 服务和 NFS 服务。注意,如果在启动过程中出现“启动 NFS 守护进程失败”等错误提示,则重新计算机后再尝试;
service rpcbing start //服务启动 service rpcbing restart //服务重启 service nfs start service nfs restart
-
在虚拟机上修改共享目录/home/nfs 的权限为 777,并确保 “虚拟机、主机及开发板” 三者可以互相ping通,最后使用
mount
命令在开发板上挂载此目录:chmod 777 /home/nfs mount –o nolock -t nfs 192.168.1.123:/home/nfs /mnt
4. 双网卡挂载NFS
-
当拥有两张物理网卡时,专门用一张网卡将 ARM 板和虚拟机相连,将两者的 IP 设置在一个 IP 段内。具体过程和单网卡类似,首先做到虚拟机和 ARM 能相互 ping 通,能正常启动 NFS 服务,最后挂载网络文件系统。
-
在搭建 NFS 时,给出一些错误情况解决的方法:
- 当启动 NFS 服务失败时,解决的办法通常是修改/etc/exports 文件,出错的原因通常是权限引起的。
- 当出现 RPC 等报错时,应该注意防火墙是否关闭。
- 当挂载 NFS 时,出现 Permission denied 报错时,检查/etc/exports 文件中的权限设置,另外检查共享目录的权限设置。
-
在挂载过程时,给出一些错误情况解决的方法:
-
mount: RPC: Timed out:该问题是由主机的防火墙引起的,关闭了虚拟机的防火墙后请注意,主机的防火墙也可能对 RPC 的包进行拦截。遇到此类问题时,请读者注意虚拟机和主机两者的防火墙是否关闭。
-
在使用
mount -t nfs 192.168.1.123:/home/nfs /mnt
命令挂载时,提示错误:rpcbind: server localhost not responding, timed out RPC: failed to contact local rpcbind server (errno 5). rpcbind: server localhost not responding, timed out RPC: failed to contact local rpcbind server (errno 5). rpcbind: server localhost not responding, timed out RPC: failed to contact local rpcbind server (errno 5).
- 需要将挂载命令修改为:
mount –o nolock –t nfs 192.168.1.123:/home/nfs /mnt
- 需要将挂载命令修改为:
-
(errno 5).
```
- 需要将挂载命令修改为:`mount –o nolock –t nfs 192.168.1.123:/home/nfs /mnt `