Linux挂载Windows端NFS服务(实现板端Linux与PC互传文件)

1. kernel编译时打开NFS客户端服务

在宿主机打开kernel文件夹,先make clean,然后make menuconfig,进入配置界面:

windows2003R2 nfs 客户端 nfs client for windows_重启

使用/查找NFS,找到Network File Systems配置项,如图这里是3,选择进入:

windows2003R2 nfs 客户端 nfs client for windows_Windows_02

进入后选择加载NFS client support模块,下面还有NFS server support模块,如果需要让系统作为服务端也可以打开。然后保存配置到.config,再make

windows2003R2 nfs 客户端 nfs client for windows_NFS_03

make完成后,将导出的镜像烧写到板端flash。

2. Windows配置NFS服务端

下载haneWIN NFS服务器,打开输出->编辑输出表文件:

windows2003R2 nfs 客户端 nfs client for windows_Windows_04

将原来的示例注释,选择本地PC上的共享文件夹,然后修改。

# exports example

# C:\ftp -range 192.168.1.1 192.168.1.10
# c:\public -public -readonly
# c:\tools -readonly 192.168.1.4
D:\nfs -public -name:nfs

例如我这里的修改,将D:\nfs文件夹共享,并且指定所有用户可访问,对外名称为nfs。

设置完成后,如果还需要windows作为客户端,还需要去控制面板->Windows功能->NFS服务,全部勾选,如图:

windows2003R2 nfs 客户端 nfs client for windows_重启_05

然后重启NFS服务器,注意,这里必须全部重启,使用界面里的重启服务器按钮起不到该作用!!

windows2003R2 nfs 客户端 nfs client for windows_Windows_06

我们打开开始菜单所有应用,找到重启所有服务这个脚本,先打开文件位置,然后在资源管理器用管理员权限执行。如果不用管理员会报没有权限,无法重启服务。

windows2003R2 nfs 客户端 nfs client for windows_NFS_07

至此Windows端的配置就完成了。

3. Linux端进行挂载

我们回到板端系统,首先添加网关,这里的IP是Windows主机的IP:

route add default gw 192.168.XXX.XXX

添加完成后进行挂载,挂载的命令如下:

mount -t nfs -o nolock 192.168.88.20:/nfs /mnt/

正常如果挂载完成的话,就可以在挂载的目录下看到我们Windows文件夹下的内容了。

4. 设置开机挂载

因为板端没有systemctl,直接将上述mount指令添加到init.d目录下设置开机自动执行即可。

5. 常见问题

1. mount报错Device or resource busy

windows2003R2 nfs 客户端 nfs client for windows_NFS_08

因为/mnt目录被占用,需要先用umount释放

2. mount报错No such file or directory

windows2003R2 nfs 客户端 nfs client for windows_NFS_09

配置Windows端的NFS服务错误,或者没有成功重启NFS服务端。

3. mount挂载一直卡住无反应:

windows2003R2 nfs 客户端 nfs client for windows_NFS_10

a. 首先确保nolock参数添加,避免阻塞主进程

b. 然后可以尝试Windows主机和Linux板端互相ping一下IP,查看是否能ping通,如果板端ping不通主机:

windows2003R2 nfs 客户端 nfs client for windows_NFS_11

但主机端ping的通板端:

windows2003R2 nfs 客户端 nfs client for windows_重启_12

大概率是Windows防火墙的原因,进入Windows安全中心,关闭防火墙即可:

windows2003R2 nfs 客户端 nfs client for windows_嵌入式硬件_13

当然也可以选择放行端口,这样更安全,但是要麻烦点。

一般这么操作之后基本就可以了:

windows2003R2 nfs 客户端 nfs client for windows_Windows_14