本文转自迅为:http://www.topeetboard.com

学习平台:iTOP-4412开发板

本文讲解如何在 iTOP-4412 开发板上实现 NFS 网络文件系统。

我们使用的软硬件环境是:一台 PC,上面运行虚拟机 Ubuntu,iTOP-4412 开发板一块,PC 机和iTOP-4412 开发板通过网线连接到路由器上面,路由器分配的网段是 192.168.1.x 的 ip 地址,默认网关是路由器的 ip 地址,即 192.168.1.1。PC 机的 ip 地址是 192.168.1.103,iTOP-4412 开发板的 ip 地址是192.168.1.230,网段的子网掩码是 255.255.255.0。这几个 ip 地址在后面配置 iTOP-4412 开发板内核 nfs的时候会用到,大家需要根据自己使用的网络环境来设置这几个 ip 地址,设置的原则是确保 PC 的 ip 和iTOP4412 开发板的 ip 在同一个网段。

NFS 是 Network FileSystem 的缩写,是由 SUN 公司研制的 UNIX 表示层协议(pressentation layerprotocol) ,NFS 是基于 UDP/IP 协议的应用。它的最大功能就是可以通过网络让不同的机器,不通的操作系统彼此共享文件,可以通过 NFS 挂载远程主机的目录,访问该目录就像访问本地目录一样,所以也可以简单的将它看做一个文件服务器。通过 NFS 服务,我们可以实现在线调试文件系统或应用程序,而不用像传统的方式生成文件系统镜像,然后烧写到 iTOP-4412 的 eMMC 里,在启动开发板。通过 NFS 服务可以提高我们的调试效率。

实现 NFS,我们需要一个主机作为 NFS 服务器,我们选择我们的虚拟机 Ubuntu 作为主机。首先我们需要在虚拟机的 Ubuntu 上安装 Ubuntu NFS 服务,这是一个软件包,我们可以使用 apt 命令下载, (下载前请确认你的虚拟机可以上网) 。首先登录到虚拟机上,使用快捷键 Ctrl+Alt+t 组合按键打开终端如下图:

输入 su root 命令切换到 root 用户,如下图:

输入 apt-get install nfs-kernel-server 命令安装 Ubuntu NFS 服务,如下图:

在安装的过程中会提示“是否继续安装”的信息,如下图:

我们输入“Y” ,如下图:

然后按回车,会继续安装,如下图:

安装完成,如下图:

接下来需要配置/etc/exports,使用 vi 命令打开/etc/export,如下图:

在/etc/export 文件的最后一行添加:

/home/topeet/linux/ *(rw,sync,no_root_squash),如下图:

下面讲解一下上面输入的内容都代表什么意思:

/home/topeet/linux:是要共享的目录;

*:代表允许所有的网络段访问;

rw:是可读写权限;

sync:是资料同步写入内存和硬盘;

no_root_squash:是 Ubuntu nfs 客户端分享目录使用者的权限,如果客户端使用的是 root 用户,那么对于

该共享目录而言,该客户端就具有 root 权限;

其他 Ubuntu nfs 常用的参数有:

ro:只读访问

async :nfs 在写入数据前可以相应请求

secure: nfs 通过以下的安全 TCP/IP 端口发送

insecure: nfs 通过 1024 以上的端口发送

wdelay:如果多个用户要写入 NFS 目录,则归组(默认)

no_wdelay:如果多个用户要写入 NFS 目录,则立即写入,当使用 async 时,无需此设置

hide:在 nfs 共享目录中不共享妻子目录

no_hide:共享 nfs 目录的子目录

subtree_check:如果共享/usr/bin 之类的子目录时,强制 nfs 检查父目录的权限(默认

)

no_subtree_check:和上面相对,不检查父目录权限

all_squash:共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录

no_all_squash:保留共享文件的 UID 和 GID(默认)

root_squash root:用户的所有请求映射成如 anonymous 用户一样的权限(默认)

no_root_squash root:用户具有根目录的完全管理访问权限

anonuid=xxx:指定 nfs 服务器/etc/passwd 文件中匿名用户多的 UID

anongid=xxx:指定 nfs 服务器/etc/passwd 文件中匿名用户的 GID

接下来重启 portmap 服务,输入/etc/init.d/portmap restart 命令,如下图:

运行结果如下图:

然后重启 nfs 服务,输入/etc/init.d/nfs-kernel-server restart 命令,如下图:

运行结果如下图:

现在 Ubuntu nfs 服务器端的配置就完成了,下面我们可以在虚拟机 Ubuntu 本机上验证一下,例如我们把

/home/topeet/linux/app/system 挂载到/mnt 目录下,需要输入 mount -t nfs

localhost:/home/topeet/linux/app/system /mnt 命令,如下图:

执行完上面的命令,可以使用 df 命令查看是否挂载成功,如下图:

我们可以看到上图中高亮的那一行就是我们挂载的 nfs 文件系统,这说明我们的 Ubuntu nfs 服务器端搭建成

功了。

本章节我们用前面章节制作的做小 linux 系统为例,通过 nfs 来挂载它。我们把 linux 最小文件系统放到虚拟

机 Ubuntu 的/home/topeet/linux/app 目录下,如下图:

实现 nfs 文件系统我们需要修改 linux 最小文件系统的 etc/init.d/ifconfig-eth0 文件,如下图:

使用 vi 命令修改第八行,修改为:if grep -q nfs /proc/mounts ; then,修改后如下图:

修改完成后保存并退出。

下面我们开始配置 iTOP-4412 开发板的内核。要实现 nfs 功能,需要修改内核配置来支持,打开内核源

码,输入 cp config_for_linux .config 命令生成支持 linux 最小文件系统的内核配置文件,如下图:

然后输入 make menuconfig 命令进入 linux 配置界面,如下图:

选中“Networking support” ,如下图:

然后按回车进入 Networking support 配置界面,如下图:

选中“Networking options”选项,如上图所示,然后按回车进入 Networking options 配置界面,如下图:

在 Networking options 配置界面,选中“IP: kernel level autoconfiguration” ,如下图:

然后返回到 make menuconfig 的初始界面,如下图:

然后选择“File systems”选项,如下图:

然后输入回车,进入 File systems 配置界面,如下图:

选中“Network 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” , “NFS client support for NFSv4.1” ,

“Root file system on NFS” ,如下图:

然后返回到 make menuconfig 的初始配置界面,如下图:

然后在初始配置界面选中“Boot options” ,如下图:

按回车进入 Boot options 配置界面,然后再 Default kernel command 里面输入:

root=/dev/nfs rw nfsroot=192.168.1.103:/home/topeet/linux/app/system

ip=192.168.1.230:192.168.1.103:192.168.1.1:255.255.255.0:iTOP:eth0:off rootfstype=ext4

init=/linuxrc console=ttySAC2,115200",如下图:

下面讲解一下上面输入命令的命令里面的几个参数:

root=/dev/nfs rw nfsroot=192.168.1.103:/home/topeet/linux/app/system 表示挂载的 nfs 服务器 ip 是

192.168.1.103,挂载的目录是/home/topeet/linux/app/system, (注意:/home/topeet/linux/是前面我

们搭建 nfs 服务器设置的) ;

ip=192.168.1.230:192.168.1.103:192.168.1.1:255.255.255.0:iTOP:eth0:off 这里面,第一个

ip192.168.1.230是我们开发板的ip地址, 第二个ip192.168.1.103是nfd服务器的ip, 第三个ip192.168.1.1

是开发板的网关, 255.255.255.0 是子网掩码, iTOP 是开发主机的名字 (一般无关紧要, 可以随便填写) , eth0

是网卡设备的名称。

至此,linux 内核的配置就完成了,退出 make menuconfig 配置,会弹出保存窗口,如下图:

使用键盘的左右方向键,选中上图的”Yes“,然后输入回车,退出保存配置,如下图:

然后输入 make 命令开始编译内核,如下图:

编译过程如下图:

编译完成,如下图:

至此,linux 内核支持 nfs 制作完成了,大家可以把编译生成的 zImage 烧写到 iTOP-4412 开发板上看下运行

结果。我们可以在串口上看到内核启动挂载 nfs 文件系统的 log,如下图:

[学习嵌入式开发板]iTOP-4412实现NFS网络文件系统的更多相关文章

  1. 学习嵌入式开发板的Android平台体系结构和源码结构

    本文转自迅为论坛资料:http://www.topeetboard.com 推荐学习嵌入式开发板平台:iTOP-4412开发板 下面这张图出自Google官方,展示了Android系统的主要组成部分. ...

  2. 嵌入式开发板使用网口和nfs进行文件共享

    如果你的开发板有网口,类似于这玩意. 那么,你可以去买根网线,类似于这玩意. 然后你就可以将你的电脑和开发板用网线连起来,通过nfs(网络文件系统)来进行文件夹共享,文件夹共享就相当于挂载,nfs是利 ...

  3. 【4412嵌入式开发板学习笔记】认识uboot

    转自迅为讨论群:http://www.topeetboard.com 重要说明:这份笔记不是4412开发配套的,是我在网上看视频的时候下载上课老师的笔记后修改的.所以我试了一下笔记上的uboot命令, ...

  4. 嵌入式开发板iTOP4412学习开发板

    网站:http://www.topeetboard.com 淘宝:https://item.taobao.com/item.htm?_u=okcahs0f42a&id=38712193806 ...

  5. ARM嵌入式开发板

    iTOP-4412 ARM嵌入式开发板----主要特点 iTOP-4412开发平台是北京迅为电子研发设计的嵌入式开发板平台,核心板配备64位双通道2GB DDR3,16GBEMMC存储,三星原厂S5M ...

  6. CLion远程调试嵌入式开发板程序

    CLion远程调试嵌入式开发板程序 目录 CLion远程调试嵌入式开发板程序 1. 目的 2. 前提条件 3. CLion设置 3.1 设置一个Deployment 3.2 上传需要的目录到目标板子 ...

  7. Linux基础学习-NFS网络文件系统实时文件共享

    NFS网络文件系统 如果大家觉得Samba服务程序的配置太麻烦了,那么你共享文件的主机都是Linux系统,那么推荐大家在客户端部署nfs服务来共享文件.nfs(网络文件系统)服务可以将远程Linux系 ...

  8. NFS 网络文件系统挂载在A8板子上

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

  9. 三者互ping,PC,虚拟机,uboot,nfs网络文件系统搭建

    要想实现三者互ping,韦老师虽然专门出了视频说明,但是在自己配置过程还是出现了问题,这里记录一下解决办法,虽然我也不知道原因,但是解决了出现的问题也实现了三者互ping. 首先,我的硬件设备是PC通 ...

随机推荐

  1. 推荐使用C++ 11

    如果你的代码工作正常并且表现良好,你可能会想知道为什么还要使用C++ 11.当然了,使用用最新的技术感觉很好,但是事实上它是否值得呢? 在我看来,答案毫无疑问是肯定的.我在下面给出了9个理由,它们分为 ...

  2. Oracle级联查询

    在ORACLE 数据库中有一种方法可以实现级联查询   select  *                //要查询的字段 from table              //具有子接点ID与父接点I ...

  3. XmlNodeList循环读取节点值

    foreach (XmlNode item in XmlNodeList) { string oid = item.SelectSingleNode("oid").InnerTex ...

  4. 重新想象 Windows 8 Store Apps (59) - 锁屏

    [源码下载] 重新想象 Windows 8 Store Apps (59) - 锁屏 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 锁屏 登录锁屏,获取当前程序的锁 ...

  5. IIS在默认情况并不支持对PUT和DELETE请求的支持

    IIS在默认情况并不支持对PUT和DELETE请求的支持: IIS拒绝PUT和DELETE请求是由默认注册的一个名为:“WebDAVModule”的自定义HttpModule导致的.WebDAV的全称 ...

  6. HTML CSS样式表布局

    一.position:fixed 锁定位置(相对于浏览器的位置),例如有些网站的右下角的弹出窗口. 示例: 二.position:absolute 1.外层没有position:absolute(或r ...

  7. Math对象常用方法汇总

    前几天翻阅<JavaScript权威指南>,看到了Math对象,于是汇总了一下. Math对象不同于其他的对象,它可以说是一个公共数学类,里面有很多数学方法,用于各种数学运算,但是Math ...

  8. JavaScript的prototype(原型)

    JavaScript的每一个对象都有prototype属性哦 对象方法.类方法.原型方法 1.对象方法:理解就很简单了,主要是如果类生成一个实例,那么该实例就能使用该方法2.类方法:不需要通过生成实例 ...

  9. Displaying SharePoint Lists or Libraries in other sites 显示其他站点的List

    Child objects within SharePoint, like a list in a Site, share an inherent connection with that Paren ...

  10. Python基础(9)--正则表达式

    正则表达式是一个很有用的工具,可处理复杂的字符匹配和替换工作.在Python中内置了一个re模块以支持正则表达式. 正则表达式有两种基本的操作,分别是匹配和替换. 匹配就是在一个文本字符串中搜索匹配一 ...