NFS挂载的2种方式

NFS挂载的2种方式在第一期视频 第 0 课第 7 节 刚接触开发板之制作根文件系统及初试驱动 wmv 因为要测试驱动 所以必须要把驱动程序弄到开发板里才行 于是韦老师介绍了两种方式 1 仅用 flash 上的根文件系统启动后 手工 MOUNTNFS 使用 NFS 作为根文件系统来启动视频中只介绍了开发板这端 uboot 参数的设置 并未介绍 Ubuntu 端 NFS 服务器的设置 这就导致很多学员学习时遇到难以逾越的问题 NFS 挂载


版本 日期 作者 说明
V1 2020 韦东山 摘自《嵌入式Linux应用开发完全手册》

视频中只介绍了开发板这端uboot参数的设置,并未介绍Ubuntu端 NFS服务器的设置,这就导致很多学员学习时遇到难以逾越的问题:NFS挂载,从而影响学习进度和热情。此帖就是解决NFS相关的问题,希望对初学者有所帮助。先介绍:1 仅用flash上的根文件系统启动后,手工MOUNT NFS, 前提条件:

  1. 开发板上要烧写好文件系统
  2. 能正常开机进入Linux系统
    3.uboot中启动参数类似这种 bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0

NFS是什么?
NFS:Network File System(网络文件系统),NFS只是一种文件系统,本身并没有传输功能,是基于RPC协议实现的,为C/S架构。也就是说,NFS也只是文件系统而已,与jffs2,yaffs,ext4等是一类东西。但是NFS的特殊之处在于,它可以通过网络来挂载,而不用烧写到设备上。这就跟网吧里使用PXE启动来搭建无盘系统一样:每台电脑并没有安装硬盘,而是直接通过PXE启动服务器上的系统,看起来每台电脑都有硬盘,其实都是挂载服务器上的硬盘。

NFS怎么用?
前边已经介绍过,NFS是C/S架构,也就是说,使用NFS需要搭建服务器和客户端。客户端很简单,自带的uboot已经添加了对NFS客户端的支持,我们只需要管NFS服务器。这个服务器其实跟TFTP、Samba服务器、Ftp服务器也是一类的东西,直接在Ubuntu上使用命令安装即可,
先下载NFS服务器,演示如下:
sudo apt-get install nfs-kernel-server
这里写图片描述
很显然,我已经安装过了,在提供的Ubuntu9.10里也安装过了,继续往下走——–配置NFS服务器
sudo vi /etc/exports
这里写图片描述
默认状态下是没有配置的,可以参考给出的例子或者百度来决定配置信息
例如,可以配置成这样:
这里写图片描述
就是在文件里添加了






















/work/nfs *(rw,sync,no_root_squash) /var/lib/tftpboot *(rw,sync,no_root_squash) 

然后保存,重启NFS服务器或者Ubuntu(如果不重启,配置不会生效),命令如下:

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

这里写图片描述

  •  :允许所有IP的主机挂载该目录 
  1. 查看开发板和Ubuntu的IP,设置开发板IP并ping通NFS服务器
    这里写图片描述

  2. 把你想拷贝到开发板上的文件都复制到刚才设置的目录里,例如拷贝到 /work/nfs,然后在开发板上执行挂载命令
    mount -t nfs -o nolock,vers=2 10.0.0.147:/work/nfs /mnt

    解释一下:
    mount :挂载命令
    nfs :使用的协议
    nolock :不阻塞
    vers : 使用的NFS版本号
    IP : NFS服务器的IP(NFS服务器运行在哪个系统上,就是哪个系统的IP)
    /work/nfs: 要挂载的目录(Ubuntu的目录)
    /mnt : 要挂载到的目录(开发板上的目录,注意挂载成功后,/mnt下原有数据将会被隐藏,无法找到)




















  3. 现在进入开发板上的/mnt目录,就可以看到Ubuntu上要传输的文件了
    这里写图片描述

  4. 测试驱动,测试应用程序都可以在/mnt目录下进行,并且这个/mnt目录也不会占用开发板的Flash空间,很方便。

这里写图片描述
解决方法:

视频一开始就教大家怎么重烧整个系统,怎么编译uboot,怎么编译内核都讲了,就是没有讲怎么制作文件系统。制作文件系统属于进阶内容,被放到了第11节。但是视频中又提前的介绍了NFS启动,这就导致很多紧跟视频操作不敢有丝毫遗漏的同学陷入深深的苦恼当中,无法在自己的开发板上复现视频中的现象是不可容忍的,有些同学甚至因此放弃了嵌入式的学习,这对一个过来人来说感觉是相当可惜的。现在我就慢慢引入为什么需要NFS启动吧。

大家都知道,开发板要想运行应用程序,文件系统是必不可少的,在光盘里有提供文件系统

参考视频的烧写方法,很容易能够烧写成功。但是这个文件系统是怎么制作出来的?只能看第11节的视频了,会发现步骤非常多。为了避免出错,需要时时看制作的效果。如果每做一步都用mkyaffs2image制作一个文件系统fs.yaffs2烧写到开发板上显然效率太低,此时NFS启动的优势就很明显了—–可以通过NFS启动的方式来实时看效果。

  1. 将制作的文件系统放到/work/nfs/jz2440目录下
  2. 参考上一个帖子的方式,添加路径 /work/nfs/jz2440 到文件 /etc/exports 中,以保证开发板有挂载这个目录的权限
  3. 重启nfs服务器
  4. 再次确认刚才设置的目录是否生效
  5. 查看Ubuntu的IP和开发板的IP,等会设置uboot启动参数时会用到
  6. 设置uboot启动参数
    set bootargs noinitrd root=/dev/nfs nfsroot=10.0.0.147:/work/nfs/jz2440 ip=10.0.0.10:10.0.0.147:10.0.0.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
    save




常见问题

  1. 如果你的文件系统制作的没有问题,那么重启开发板后应当能够进入Linux系统。如果挂载失败,就用光盘里提供的文件系统试试

    注意:光盘提供的文件系统中etc/init.d/rcS文件中已经默认添加了设置开发板IP的命令,如果你不需要这个IP或者跟你的网段不同,可以修改以符合自己的需要。光盘里提供的文件系统都是用arm-linux-gcc(3.4.5版本制作的),因此你必须使用2.6.22.6的内核来启动,否则无法挂载文件系统。




  2. 使用NFS启动你会发现一个问题,如果开发板跟Ubuntu之间的网络不通,那么你的开发板就启动不了。想想也很正常,客户端跟服务器网络不通是无法登陆的。如果你制作的文件系统经过测试没有任何问题,那就可以制作成yaffs2文件系统烧写到开发板上,不用每次都得打开Ubuntu,插上网线,再启动开发板了。
    在第一期视频第0课第7节03:40处有演示,

其实就是将NFS文件系统使用mkyaffs2image工具制作生成yaffs2格式的文件系统。至此,NFS全部挂载方式分析完毕。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217760.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:49
下一篇 2026年3月18日 上午8:50


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号