1. 安装NFS服务#

sudo apt-get install nfs-kernel-server

2. 配置NFS#

打开NFS配置文件/etc/exports,该文件中的目录会按照配置要求暴露给指定的NFS客户端。

$ sudo vim /etc/exports

在/etc/exports末尾添加如下内容:

/path/to/nfs/ *(rw,sync,no_root_squash,no_subtree_check)

参数说明:

  • 格式:<输出目录> [hostname1 (权限配置)] [hostname2 (权限配置)]

  • /path/to/nfs/ 要暴露给NFS客户端的目录

  • /* 代表所有,表示暴露给所有的NFS客户端
  • 小括号中的内容是NFS客户端的权限配置

举例:

# 将/path/to/nfs/目录暴露给NFS客户端192.168.2.100
/home/xxx/nfs 192.168.2.100/24(rw,sync,no_root_squash,no_subtree_check)

# 将/home/xxx/nfs目录暴露给任意NFS客户端
/home/xxx/nfs *(rw,sync,no_root_squash,no_subtree_check)

  • rw:读写权限
  • sync:同步模式,内存中数据时时写入磁盘
  • no_root_squash:当NFS客户端以root身份访问时,映射为NFS服务器的root用户
  • no_subtree_check:不检查父目录权限

3. 重启NFS服务#

sudo /etc/init.d/nfs-kernel-server restart

4. 查看NFS服务状态#

sudo /etc/init.d/nfs-kernel-server status

5. 开发板挂载NFS目录#

5.1 开发板启动Linux系统后,在Linux系统中挂载#

mount -t nfs -o nolock 192.168.2.200:/home/fhc/linux_driver/nfs /mnt

参数介绍:

  • mount:Linux系统中挂载文件系统的指令,卸载是umount
  • -t nfs:文件系统类型为nfs
  • -o nolock:不加锁
  • 192.168.2.200:nfs服务端IP
  • /home/book/fhc/nfs:nfs服务端暴露的文件夹
  • /mnt:nfs客户端挂载点

5.2 在linux内核启动时挂载(u-boot中设置启动参数)#

setenv bootargs root=/dev/nfs nfsroot=192.168.10.110:/home/xxx/nfs ip=192.168.10.122 init=/linuxrc console=ttySAC0,115200

5.3 u-boot中使用NFS#

早期的u-boot(2012年)默认支持NFS Version 2(据说最新的2019年是支持NFS Version 3),但是Ubuntu 18.04默认支持的是NFS Version 3和NFS Version 4。

所以为了确保u-boot能够正常的使用NFS,我们需要将Ubuntu 18.04 中的NFS设置为支持Version 2, Version 3 和Version 4。

打开NFS配置文件:

$ sudo vim /etc/default/nfs-kernel-server

在文件末尾添加如下内容:

RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"

检查是否设置成功:

rpcinfo -p localhost