Linux挂载Windows端NFS服务(实现板端Linux与PC互传文件)
1. kernel编译时打开NFS客户端服务
在宿主机打开kernel文件夹,先make clean
,然后make menuconfig
,进入配置界面:
使用/
查找NFS
,找到Network File Systems
配置项,如图这里是3,选择进入:
进入后选择加载NFS client support
模块,下面还有NFS server support
模块,如果需要让系统作为服务端也可以打开。然后保存配置到.config
,再make
。
make
完成后,将导出的镜像烧写到板端flash。
2. Windows配置NFS服务端
下载haneWIN NFS服务器
,打开输出->编辑输出表文件:
将原来的示例注释,选择本地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服务,全部勾选,如图:
然后重启NFS服务器,注意,这里必须全部重启,使用界面里的重启服务器按钮起不到该作用!!
我们打开开始菜单所有应用,找到重启所有服务这个脚本,先打开文件位置,然后在资源管理器用管理员权限执行。如果不用管理员会报没有权限,无法重启服务。
至此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
:
因为/mnt目录被占用,需要先用umount释放
2. mount报错No such file or directory
:
配置Windows端的NFS服务错误,或者没有成功重启NFS服务端。
3. mount挂载一直卡住无反应:
a. 首先确保nolock
参数添加,避免阻塞主进程
b. 然后可以尝试Windows主机和Linux板端互相ping一下IP,查看是否能ping通,如果板端ping不通主机:
但主机端ping的通板端:
大概率是Windows防火墙的原因,进入Windows安全中心,关闭防火墙即可:
当然也可以选择放行端口,这样更安全,但是要麻烦点。
一般这么操作之后基本就可以了: