网络文件系统( NFS ,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主机的共享分区(目录)进行操作。

在嵌入式Linux 的开发过程中,开发者需要在Linux 服务器上进行所有的软件开发,交叉编译后,通用FTP 方式将可执行文件下载到嵌入式系统运行,但这种方式不但效率低下,且无法实现在线的调试。因此,可以通过建立NFS,把Linux 服务器上的特定分区共享到待调试的嵌入式目标系统上,就可以直接在嵌入式目标系统上操作Linux 服务器,同时可以在线对程序进行调试和修改,大大的方便了软件的开发。因此,NFS 的是嵌入式Linux开发的一个重要的组成部分,本部分内容将详细说明如何配置嵌入式Linux 的NFS 开发环境。

嵌入式Linux 的NFS 开发环境的实现包括两个方面:一是Linux 服务器端的NFS 服务器支持;二是嵌入式目标系统的NFS 客户端的支持。因此,NFS 开发环境的建立需要配置Linux 服务器端和嵌入式目标系统端。

一、Linux 服务器端NFS 服务器的配置

以root 身份登陆Linux 服务器,编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等。

执行如下命令编辑文件/etc/exports:

# vi /etc/exports

在该文件里添加如下内容:

/home/work 192.168.0.*(rw,sync,no_root_squash)

然后保存退出。

添加的内容表示:允许ip 地址范围在192.168.0.*的计算机以读写的权限来访问/home/work 目录。

/home/work 也称为服务器输出共享目录。

括号内的参数意义描述如下:

rw:读/写权限,只读权限的参数为ro;

sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。 
 
   no_root_squash:NFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。

接着执行如下命令,启动端口映射:

# /etc/rc.d/init.d/portmap start

最后执行如下命令启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求:

# /etc/rc.d/init.d/NFS start

用户也可以重新启动Linux 服务器,自动启动NFS 服务。

在NFS 服务器启动后,还需要检查Linux 服务器的防火墙等设置(一般需要关闭防火墙服务),确保没有屏蔽掉NFS 使用的端口和允许通信的主机,主要是检查Linux 服务器iptables,ipchains 等选项的设置,以及/etc/hosts.deny,/etc/hosts.allow 文件。

我们首先在Linux 服务器上进行NFS 服务器的回环测试,验证共享目录是否能够被访问。在Linux 服务器上运行如下命令: 
 
   # mount –t NFS 192.168.0.20:/home/work /mnt

# ls /mnt

命令将Linux 服务器的NFS 输出共享目录挂载到/mnt 目录下,因此,如果NFS 正常工作,应该能够在/mnt 目录看到/home/work 共享目录中的内容。

二、嵌入式目标系统NFS 客户端的配置

在Linux 服务器设置好后,还需要对客户端进行相关配置。在配置内核时选择Load an Alternate Configuration File输入配置文件的路径和文件名添加内核对NFS的支持:

选中networking options-》IP:kernel level auloconfiguralion项

选中file systems-》network file systems-》下的root file system on NFS 和NFS file system support重新编译内核下载bootloader和kernel到开发板上

在嵌入式目标系统的Linux Shell 下,执行如下命令来进行NFS 共享目录挂载:

# mkdir /mnt/NFS //建立Linux 服务器输出共享目录的挂载点;

# mount –t NFS 192.168.0.20:/home/work /mnt/NFS –o nolock

# cd /mnt/NFS 
  
    # ls

此时,嵌入式目标系统端所显示的内容即为Linux 服务器的输出目录的内容,即Linux 服务器的输出目。

录/home/work 通过NFS 映射到了嵌入式目标系统的/mnt/NFS 目录。用户可以用增/删/修改文件的方式来验证实际效果。mount 命令中的192.168.0.20 为Linux 服务器的IP 地址,/home/work 为Linux 服务器端所配置的共享输出目录,/mnt/NFS 为嵌入式设备上的本地目录。

在开发过程中,来回输入命令非常烦人,我写了两个简单的脚本来完成NFS的启动,挂载。

host启动NFS:
    sNFS
    #!/bin/bash
    ifconfig eth0 192.168.0.20
    /etc/rc.d/init.d/portmap start
    /etc/rc.d/init.d/NFS start
    嵌入式目标机挂载NFS:
    mNFS:
 
    #!/bin/sh
    mount -t NFS 192.168.0.20:/home/work/NFS /mnt/NFS -o nolock
    echo “NFS ok!”

Linux下NFS(网络文件系统)的建立与配置方法相关推荐

  1. 嵌入式成长轨迹61 【智能家居项目】【ARM 飞凌ok6410】【在虚拟机Ubuntu下NFS网络文件系统建立】...

    推荐阅读顺序: 基本环境搭建: [配置]在虚拟机Ubuntu下NFS网络文件系统建立 <ok6410 Qt移植百科全书> [配置]QT&QWT&sqlite3安装配置 这中 ...

  2. tiny4412 linux+qtopia nfs网络文件系统的挂载

    1,首先确定uboot启动内核的bootargs参数 Linux-CommandLine = root=/dev/nfs nfsroot=192.168.1.131:/home/tiny4412/ro ...

  3. Linux下NFS服务器的配置

      原文出处: http://linux.chinaunix.net/techdoc/net/2006/03/09/928740.shtml     类型:System V-launched Serv ...

  4. 嵌入式成长轨迹33 【嵌入式学习阶段】【ARM环境调试】【在虚拟机下Ubuntu建立NFS网络文件系统】...

    更新版 http://www.cnblogs.com/zeedmood/archive/2012/12/08/2808376.html (以防参考资料链接无效,将所有参考文章都附后了,所以非常长;实际 ...

  5. Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统

    Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...

  6. 如何在ubuntu 14.04系统下开启nfs网络文件系统

    之前安装过ubuntu 11.04和ubuntu 12.04的系统时,分别研究过如何开启NFS网络文件系统.今天将系统更新到了ubuntu 14.04,发现之前的办法都不行了,有些步骤得更新一下,于是 ...

  7. linux通过网关挂在nfs,NFS 网络文件系统挂载在A8板子上

    我承认自己是菜鸟,没什么网络知识就来搞挂载nfs网络文件系统,花费了5天的时间才把nfs网络文件系统成功挂载在A8板子上,实现了A8板子和虚拟机的文件共享.分享一下个人经验: 以下是基于nfs已经完成 ...

  8. LinuxProbe 0x15 SAMBA文件共享服务、NFS网络文件系统、AutoFs自动挂载服务、DNS域名解析服务

    配置网络文件系统(Network File System,NFS)服务来简化Linux系统之间的文件共享工作, 通过部署NFS服务在多台Linux系统之间挂载并使用资源. 在管理设备挂载信息时,使用a ...

  9. 关于linux下的嵌入式文件系统以及flash文件系统选择(转)

    嵌入式linux下常见的文件系统 • RomFS:只读文件系统,可以放在ROM空间,也 可以在系统的RAM中,嵌入式linux中常用来作 根文件系统 • RamFS:利用VFS自身结构而形成的内存文件 ...

最新文章

  1. win7下解决Android SDK Manger慢
  2. pymysq向mysql写数据 为什么本地无法查看_从运维角度浅谈MySQL数据库优化,中小企业DBA必会...
  3. 《JavaScript高级程序设计》笔记:变量、作用域和内存问题(四)
  4. 注册表数据提取工具RegRipper
  5. Git历险记(四)——索引与提交的幕后故事
  6. 【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★
  7. 可爱妈妈对我的\情色\教育
  8. 【Java注解】自定义注解、与数据库结合使用
  9. SAP 电商云 Spartacus UI 的 slot,position 和 Component
  10. java锁_Java锁
  11. Flutter AnimatedWidget 实现动画的自动刷新
  12. ProcExp和TaskMgr的列对比
  13. n9 android模拟器,Android软件将兼容诺基亚N9
  14. 百度离线地图下载器+开发Demo(街道、路网、卫星瓦片图)
  15. Linux led子系统分析之三 led设备驱动与ledtrigger驱动实现
  16. 拒绝从网络访问这台计算机 注册表,拒绝访问的解决方法
  17. java中判断一个单词是否以a开头_查找Java中所有以'a'开头的单词
  18. Originpro绘制y轴偏移堆积图无法设置偏移量
  19. CSS(Emmet语法、复合选择器、元素显示模式、背景)
  20. 自动驾驶汽车也要驾考了,能否上路在此一举,老司机看了考试内容惊呆了!

热门文章

  1. w3wp.exe内存占用过高(网站打不开,应用程序池回收就正常)
  2. python登录验证码(基于django框架)
  3. QTreeWidgetItem和QTreeWidgetItemIterator
  4. 怎么随时获取Spring的上下文ApplicaitonContext,和Spring管理的Bean
  5. ubuntu14.04上java jdk mvn安装
  6. [Window] .MUS 0x80070422 Error
  7. (转)jQuery.fn.extend与jQuery.extend到底区别在哪?
  8. 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式
  9. 【jQuery】用jQuery给文本框添加只读属性【readOnly】
  10. android ART编译预优化