【系统移植】NFS服务器环境搭建——挂载根文件系统
什么是NFS?
NFS(Network File System)即网络文件系统,其基于UDP/IP 使用NFS能够在不同计算机之间通过网络进行文件共享,能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样,文件只存在于服务器上,并没有下载到客户端,类似于百度网盘的在线阅览功能。
Ubuntu和开发板之间用NFS协议传输文件时,Ubuntu为NFS服务器,开发板为客户端 ,能够在开发板上挂载根文件系统。
NFS服务器环境搭建
1、检查自己的Ubuntu是否安装NFS,如果已安装,则无需再安装。
$ dpkg -s nfs-kernel-server
如显示如下结果,则说明已安装,无需再安装:
如显示如下结果,则说明未安装:
2、安装NFS服务器,前提是确保Ubuntu能连上外网,可以ping下百度,如果能ping通,则说明已经连上外网
$ sudo apt-get install nfs-kernel-server
3、修改NFS服务器配置文件
因为etc/目录在根目录下,需要sudo权限打开才能修改。
$ sudo vi /etc/exports
在文件末尾添加如下代码,保存并退出:
/opt/4412/rootfs是NFS服务器的工作目录(如该目录还不存在,需要在下一步创建),客户端要访问的文件要放在该目录下,*代表不限制IP,() 中是一系列参数。
4、创建服务器工作目录,并设置为最高权限
$ sudo mkdir -p /opt/4412/rootfs
$ sudo chmod -R 777 /opt
5、重启服务器,使配置生效
$ sudo service nfs-kernel-server restart
如显示如下信息,则说明重启成功:
如果使用的是Ubuntu 24.04,可能什么都不显示,也是重启成功(我的就如此):
注意:以后每次重新打开Ubuntu,要使用NFS,都要重启
6、本地测试是否安装成功
查看/opt/4412/rootfs/目录下的文件
$ ls /opt/4412/rootfs/
如果有rootfs/目录下有文件,则cd到家目录;如果没有文件,可以用touch命令创建test.txt文件,或者其他什么文件都可以,自己随意,再cd到家目录。
使NFS挂载工作目录到/mnt目录:
$ sudo mount -t nfs localhost:/opt/4412/rootfs /mnt
查看是否挂载成功:
$ ls /mnt/
如/opt/4412/rootfs/目录下的文件和目录在/mnt目录下都存在,则说明挂载成功:
如需要取消挂载:
$ sudo umount /mnt
可能遇到的问题
问题一:Ubuntu17.10之后的版本NFS默认只支持协议3和4,会导致挂载失败。
解决方法:在/etc/default/nfs-kernel-server 文件末尾加一句如下内容: RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog" 然后重启 nfs 服务。
在用下面命令查看支持的版本:
$ sudo cat /proc/fs/nfsd/versions
结果如下,则说明可以支持NFS协议2:
具体设置方法可以参考【系统移植】在开发板上加载内核和根文件系统的三种方法中设置bootargs自启动参数环境变量部分。
最后再重启NFS服务器
$ sudo service nfs-kernel-server restart
该部分参考NFS环境搭建 ,如果更多问题,可以查阅。