嵌入式开发环境搭建:NFS客户端与服务器搭建

(注:本文参考资料:朱有鹏嵌入式课程。本文为个人学习记录,如有错误,欢迎指正。)

0. NFS的作用
NFS(Network File System),网络文件系统。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

本文的目的是实现开发板远程挂载NFS服务器中的根文件系统(文件夹形式)。具体实现步骤如下:

  1)设置开发板与Ubuntu主机的网络通信;

  2)配置开发板(客户端)的NFS功能;

  3)在Ubuntu主机下,搭建NFS服务器。

1. 网络设置
搭建NFS服务器之前,必须确保开发板与Ubuntu主机可以实现网络通信。具体步骤详见:《嵌入式开发环境搭建:开发板tftp下载环境搭建》->网络设置。

2. NFS客户端的配置
(1)配置uboot的环境变量bootargs,指定需要挂载的网络文件系统的路径。配置bootargs的值为:

bootargs root=/dev/nfs nfsroot=192.168.1.100:/home/sai/rootfs-test/rootfs ip=192.168.1.200:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200

配置分析:

  • root=/dev/nfs,表示内核通过NFS服务器挂载根文件系统;
  • nfsroot=<server-ip>:<root-dir>,描述NFS服务器的路径。<server-ip>,指定网络文件系统服务端的IP地址;<root-dir>,指定网络文件系统的路径。
  • nfsaddrs=<my-ip>:<serv-ip>:<gw-ip>:<netmask>:<name>:<dev>:<auto>,设定网络通信所需的各种网络接口地址。

    <my-ip>,指定客户端的IP地址

    <serv-ip>,网络文件系统服务端的IP地址

    <gw-ip>,网关(gateway)的IP地址

    <netmask>,本地网络的网络掩码

    <name>,客户端的名称。如果空白,则使用客户端IP地址的ASCII标记值

    <dev>,网络设备名称

    <off>,关闭DHCP服务

  • init=/linuxrc,指定init进程的路径。
  • console=ttySAC2,115200,指定控制台串口设备号及其波特率参数。

(2)配置内核的NFS功能
进入内核图形配置界面menuconfig界面下,配置内核的NFS功能。

1)配置网络部分。

Networking support ---> 
Networking options ---> 
[*]TCP/IP networking
[*]IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] IP: BOOTP support


2)配置开启NFS服务

File systems --->
[*]Network File Systems --->
<*> NFS client support 
[*] NFS client support for NFS version 3 
[*] NFS client support for the NFSv3 ACL protocol extension 
[*] NFS client support for NFS version 4 (EXPERIMENTAL) 
[*] NFS client support for NFSv4.1 (DEVELOPER ONLY) 
[*] Root file system on NFS 


配置完成后,重新编译内核。
3. 搭建NFS服务器
(1)安装NFS相关软件

sudo apt-get install nfs-kernel-server
sudo apt-get install nfs-common


(2)配置/etc/exports

  • sudo vi /etc/exports,在etc/exports末尾添加如下内容:

#“/home/sai/rootfs-test/rootfs”指定NFS服务器所在路径,可以根据需要修改。

/home/sai/rootfs-test/rootfs *(rw,sync,no_root_squash,no_subtree_check)

  • chmod 777 -R /root/rootfs,更改文件夹权限。
  • sudo showmount -e,执行成功后显示“clnt-create : RPC : Program not registered”。
  • sudo exportfs -r
  • sudo showmount localhost -e,执行成功显示“Export list for 192.168.1.116 /home/sai/rootfs-test/rootfs *”

(3)重启NFS服务

重启NFS服务,上述配置即可生效。

sudo /etc/init.d/nfs-kernel-server restart ,重启 nfs 服务。
配置成功,显示如下信息:

* Stopping NFS kernel daemon [ OK ]
* Unexporting directories for NFS kernel daemon... [ OK ]
* Exporting directories for NFS kernel daemon... [ OK ]
* Starting NFS kernel daemon 


4. 挂载测试
(1)本地测试NFS

在Ubuntu主机下,将配置的/home/sai/rootfs-test/rootfs文件夹挂载至Ubuntu下的某一目录,若在该目录下可以看到该文件夹中的内容,则说明NFS服务器搭建成功。

挂载命令:

mount -t nfs -o nolock localhost:/root/rootfs /opt
(2)开发板挂载测试

完成上述配置后,启动内核。若在控制台中打印出如下信息,则说明开发板远程挂载NFS服务器中的根文件系统成功。

VFS: Mounted root (nfs filesystem) on device 0:12.

猜你喜欢

转载自www.cnblogs.com/linfeng-learning/p/9284584.html
今日推荐