一、Ubuntu端配置:
-
Ubuntu下使用以下命令安装NFS服务:
sudo apt-get install nfs-kernel-server portmap
-
创建一个nfs文件夹,路径: /home/pjw/linux/nfs
mkdir /home/pjw/linux/nfs/
- 给予NFS目录可读可写可执行权限(文件或文件夹给权限后变为绿色)
sudo chmod 777 /home/pjw/linux/nfs/
如图,建立了nfs文件夹,并放入了zImage文件。
-
打开 nfs 配置文件/etc/exports
sudo vi /etc/exports
-
在配置文件中添加如下内容:
/home/pjw/linux/nfs *(rw,sync,no_root_squash)
/home/pjw/linux/nfs:NFS共享目录
*:表示允许所有的网络段访问
rw:访问者具有可读写权限
sync:表示将缓存写入设备中,即同步缓存
no_root_squash:表示访问者具有root权限。
-
重启 NFS 服务:
sudo /etc/init.d/nfs-kernel-server restart
- 查看 NFS 共享目录:
showmount -e
二、开发板端配置:
- 开发板根目录下新建 mountnfs 文件夹(/home/root/mountnfs)
mkdir mountnfs
如图,根文件目录下已建立 mountnfs 文件夹
- 先ping Ubuntu主机,确保网络通讯正常
-
将Ubuntu(IP:192.168.1.41)上的NFS目录(/home/pjw/linux/nfs)挂载在开发板的/home/root/mountnfs下
mount -t nfs -o nolock,nfsvers=3 192.168.1.41:/home/pjw/linux/nfs mountnfs/
如果不加 -onolock,nfsvers=3 ,挂载的时候会出现各种问题,所以我们要指定nfs版本为3。
Ubuntu 17.10 之后 nfs 默认就只支持协议3和协议4,但是 uboot 默认启动的是协议2 。
mount -o vers=4 192.168.1.41:/home/pjw/linux/nfs mountnfs/
- -o vers=4:表示使用 NFS 文件系统第 4 版本,若不注明版本可能会提示参数错误。
- dev:目标主机的名字,此处也可以直接使用目标主机的 IP 地址,如本例子的目标机器 IP 为 192.168.1.41。
- /home/pjw/linux/nfs:远端的主机共享目录。
- mountnfs/:本地挂载点,即要把远端共享的目录映射到本地的哪个目录。
- 挂载成功后,进入 mountnfs 文件夹,可以看到文件夹里已经有了zImage,说明开发板通过NFS服务成功访问NFS服务器。
- 查看挂载目录:(df命令)
-
卸载NFS挂载目录:(umount 命令)
问题:提示设备正忙。
解决:
1、取消挂载时,先切换到根目录~,再进行 umount 操作。如图所示,卸载成功。
2、(不建议使用)借助fuser命令找出占用目录umount 的所有进程,然后kill掉。
fuser -km /home/root/mountnfs
再运行卸载命令,成功后如图所示,已成功卸载。