NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
对于嵌入式Linux开发,通过NFS挂载根文件系统,根文件系统无需下载到FLASH( FLASH还需要先擦除再写入),可以直接保存在Linux主机,而且在Linux开发的驱动程序也无需下载到Linux开发板的FLASH,这使得开发十分方便快捷,下面记录了我自己通过NFS挂载根文件系统的过程。
注意: 根文件系统的配置文件中 vi etc/init.d/rcS 的ip地址一定要和后面设置u-boot环境变量中的一致
就是linux内核中配置的开发板ip地址一定要和u-boot一致
/NFS *(rw,sync,no_root_squash)
我这里写了*表示任何用户都能访问主机上的NFS文件夹 实际上可改为固定IP,只允许某一IP开放,例如
/NFS 172.215.0.128(rw,sync,no_root_squash)
或者
/mnt/rootfs_make/NFS 172.215.0.*(rw,sync,no_root_squash)
表示对1网段所有IP开放
service rpcbind restart
service nfs restart
可以看到,NFS文件夹已经被共享出去了,我的是所有用户都可访问
showmount -a 可以看哪些用户正在访问共享文件夹
可以看到,172.215.0.194的用户正在访问 NFS文件夹
首先查看防火墙状态,如下图,防火墙的active激活状态
对于centos7,执行systemctl stop firewalld 关闭防火墙
再次查看防火墙,已经被关闭了,但是这只是本次生效,重启后防火墙又会被打开。
执行systemctl disable firewalld 永久禁用
mount -t nfs localhost:/NFS/ /tmp
localhost:你的主机IP
我们将NFS挂载到本机/home文件夹,在/home也能看到NFS文件夹内容,挂载成功!
====================================================================================================================================分隔线===================================================
File systems--------
Network File Systems------------
File systems -----------
Miscellaneous filesystems------------
u-boot环境变量配置
set bootargs noinitrd root=/dev/nfs nfsroot=172.215.0.224:/NFS ip=172.215.0.194:172.215.0.224:172.215.0.1:255.255.0.0::eth0:off init=/linuxrc console=ttyS0,115200
nfsroot=服务器ip:/共享文件夹 ip=开发板ip:linux服务器ip:网关ip:子网掩码:主机名:网卡:off
root 表示使用/dev/nfs这个设备作为根文件系统。
rw 表示可读可写的。
nfsroot 表示服务器中rootfs所在路径,注意需要跟上服务器的ip地址。
192.168.1.110 是板子启动之后的ip地址。
192.168.1.100 是nfs服务器的ip地址。
192.168.1.1 是板子网关地址。
255.255.255.0 是板子子网掩码。
eth0 表示板子上的网络设备。
off 表示关闭动态获取ip地址
---------------------
注意:eh0前面有两个冒号,那是因为这里还可以填写一个板子的主机名,这里没有设置,所以为空。