以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。
1、什么是nfs?
(1)nfs(网络文件系统)是一种网络通讯协议,由服务器和客户端构成。
(2)nfs的作用
- 利用nfs协议可以做出很多直接性应用,但这里使用nfs主要是做rootfs挂载。
- 开发板中运行kernel作nfs客户端(在配置时要配置成支持nfs客户端),虚拟机ubuntu中搭建nfs服务器(要指定共享目录)。
- 在虚拟机ubuntu的nfs服务器的NFS共享目录下,导入文件夹形式的rootfs目录,在客户端中挂载这个文件夹形式的rootfs,进而启动系统。
2、在虚拟机上搭建nfs服务器
(1)搭建方法见环境搭建文档;
(2)挂载的理解:
- 被挂载的目录,即要访问的目录,比如/root/rootfs/rootfs;
- 挂载到某目录,该目录就是一个小窗口,通过该窗口可以访问被挂载的目录的内容。比如挂载到/opt,则可以通过opt访问/root/rootfs/roots的内容。
- 用完之后一般要卸载:umount /opt
3、配置内核以支持nfs作为rootfs
(1)设置nfs启动方式的bootargs
- 首先在uboot启动时打断自启动,.然后修改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启动方式
- set bootcmd ‘tftp 30008000 zImage;bootm 30008000’;
(4)重新启动uboot,就会到tftp服务器中下载内核,然后再到nfs服务器中下载rootfs。
- 如果rootfs是可用的,那么就会启动成功;
- 如果rootfs是不可用的,那么会提示下面的错误。
4、总结
(1)nfs方式启动相当于开发板上的内核远程挂载主机上的rootfs(根文件系统、内核在主机上,而不是像以前那样先烧录在开发板上)
(2)nfs方式启动不用制作rootfs镜像;
(3)nfs方式不适合真正的产品,一般作为产品开发阶段调试使用。