NFS方式挂载rootfs的设置方法

2019-07-13 06:07发布

以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除。

1、什么是nfs?

(1)nfs(网络文件系统)是一种网络通讯协议,由服务器和客户端构成。 (2)nfs的作用
  • 利用nfs协议可以做出很多直接性应用,但这里使用nfs主要是做rootfs挂载。
  • 开发板中运行kernel作nfs客户端(在配置时要配置成支持nfs客户端)。
  • 虚拟机ubuntu中搭建nfs服务器(指定的共享目录由bootargs这个环境变量中的nfsroot路径指定)。
  • 在虚拟机ubuntu的nfs服务器的NFS共享目录下,导入文件夹形式的rootfs目录,在客户端中挂载这个文件夹形式的rootfs,进而启动系统。

2、在虚拟机上搭建nfs服务器

(1)搭建方法见环境搭建文档 (2)挂载的理解
  • 被挂载的目录,即要访问的目录,比如/root/rootfs;
  • 挂载到某目录(挂载点),该目录就是一个小窗口,通过该窗口可以访问被挂载的目录的内容。
  • 比如挂载到/opt,则可以通过opt访问/root/roots的内容。
  • 用完之后一般要卸载:umount  /opt

3、配置内核以支持nfs作为rootfs

(1)设置nfs启动方式的bootargs set bootargs root=/dev/nfs nfsroot=192.168.1.141:/root/rootfs/ ip=192.168.1.20:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200
  • 此时如果直接挂载运行,会提示错误如下,导致重新启动,因为没有配置内核以支持NFS启动方式。


(2)在内核配置阶段,即menuconfig中配置支持nfs启动方式

(3)在uboot中设置环境变量
  • set bootcmd ‘tftp 30008000 zImage;bootm 30008000’;修改完后记得save。
(4)重新启动uboot,就会到tftp服务器中下载内核,然后再到nfs服务器中下载rootfs。
  • 如果rootfs是可用的,那么就会启动成功;
  • 如果rootfs是不可用的,那么会提示下面的错误。


4、总结

(1)nfs方式启动相当于开发板上的内核远程挂载主机上的rootfs(根文件系统、内核在主机上,而不是像以前那样先烧录在开发板上) (2)nfs方式启动不用制作rootfs镜像; (3)nfs方式不适合真正的产品,一般作为产品开发阶段调试使用。