ubuntu 20.04和linux开发板配置nfs服务器
ubuntu 20.04和linux开发板配置nfs服务器
1、ubuntu配置nfs服务器
1.1 安装nfs服务器
sudo apt-get install nfs-kernel-server
1.2 配置nfs
-
打开配置文件:
sudo vim /etc/exports
-
修改配置如下:
/home/nfs_test *(rw,sync,no_root_squash,no_subtree_check)
说明:/home/arkinux/nfs_test - 要挂载的目录,这里请修改为自己的目录。 * - 指定可访问 NFS 服务的客户端 IP 地址,这里 “*” 表示所有可以 ping 该主机的用户都可以访问。 rw - 读/写权限,只读权限的参数为 ro。 sync - 数据同步写入内存和硬盘,也可以使用 async,此时数据会先暂存于内存中,而不立即写入硬盘。 no_root_squash - NFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。 no_subtree_check - 不检查父目录的权限
-
修改完成之后,保存并退出。输入以下命令使配置文件生效:
sudo exportfs -r
-
重启 NFS 服务:
sudo /etc/init.d/nfs-kernel-server restart [ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.
2、开发板打开nfs客户端
2.1 开发板打开nfs客户端挂载
一些开发板的kernel会默认没打开nfs客户端,需要在编译kernel的时候执行make menuconfig里面配置下。配置项如下:
配置完保存然后编译、烧录即可。
- 开发板nfs客户端挂载ubuntu20.04服务端的共享文件夹
mount -t nfs -o nolock 192.168.31.75:/home/nfs_test /mnt
说明192.168.31.75 //是我的ubuntu20.04系统的ip地址 /home/nfs_test //是nfs服务器的共享文件夹 /mnt //是开发板挂载的文件夹
- 如果开发板通过
ifconfig
查看ip地址和ubuntu系统ip不在同一个网段,可以通过以下指令修改开发板ip地址:
ifconfig eth0 192.168.31.20
2.2 开发板打开nfs客户端取消挂载
umount /mnt
2.3 查看共享文件夹
showmount -e
2.4查询nfs服务器运行状态
sudo /etc/init.d/nfs-kernel-server status
3、nfs常见问题
3.1开发板挂载时提示协议不支持,具体错误如下:
mount: mounting 192.168.31.75:/home/why/SSD202_Project on /mnt failed: Protocol not supported
解决方法:由于ubuntu 20.04 nfs默认支持协议3和协议4,但是开发板uboot默认启动的是协议2,若想要求 nfs 支持协议2。需要在ubuntu系统
- 打开文件
vim /etc/default/nfs-kernel-server
- 在文件中末尾增加内容
RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"
- 保存重启下nfs,重启指令
sudo /etc/init.d/nfs-kernel-server restart
3.2 开发板挂载时提示超时:
rpcbind: server localhost not responding, timed out
解决办法:加上“-o nolock”参数
mount -t nfs -o nolock 192.168.31.75:/home/nfs_test /mnt
3.3 如果nfs服务器是window端,开发板挂载时提示连接超时:
切记看一下是否关闭了window的防火墙。需要全部关闭才行
3.4 如果nfs服务器是ubuntu端,开发板挂载时提示连接超时:
同样需要关闭ubuntu的防火墙
- 查看防火墙状态
sudo ufw status
- 关闭防火墙
sudo ufw disable