[学习嵌入式开发板]itop-4412实现nfs网络文件系统

topeet      2022-02-11     597

关键词:

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

 

学习平台:iTOP-4412开发板

 

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

我们使用的软硬件环境是:一台 PC,上面运行虚拟机 UbuntuiTOP-4412 开发板一块,PC 机和iTOP-4412 开发板通过网线连接到路由器上面,路由器分配的网段是 192.168.1.x 的 ip 地址,默认网关是路由器的 ip 地址,即 192.168.1.1PC 机的 ip 地址是 192.168.1.103iTOP-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.103nfd服务器的ip, 第三个ip192.168.1.1

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

是网卡设备的名称。

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

 技术分享

 

 

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

 技术分享

 

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

 

 技术分享

编译过程如下图:

 

 技术分享

 

编译完成,如下图:

 技术分享

 

 

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

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

 技术分享

嵌入式开发板学习新手在itop4412开发板无界面linux操作系统使用can模块遇到问题,求解决方法?

最近想使用迅为的iTOP4412精英版开发板做关于CAN总线相关的程序设计。遇到的问题是,将购买的CAN模块连接到开发板上时,在系统界面使用ifconfig-a命令,没有发现can的信息。看起来系统没有识别这个模块。想请教下大神们,这个... 查看详情

嵌入式开发板itop-4412开发板初学arm开发板首选!提供技术支持!

摘要:ARM开发板迅为三星Exynos嵌入式开发平台超强GPS模块iTOP-Exynos4412开发板采用Exynos4412的主芯片,具有更高的主频和更丰富外设,配置2GB双通道DDR3的内存及16GB存储,具有稳定性强、可靠性高,能适用于对性能和处理能力有更高... 查看详情

讯为itop4412嵌入式开发板学习之-------前言

...学习 Linux 程序设计和 Linux 网络编程。3、嵌入式 Linux&n 查看详情

itop-4412开发板网盘资料介绍

...盘视频资料内容如下:01-烧写、编译以及基础知识视频02-嵌入式Linux视频03-iTOP-4412开发板硬件设计指导视频04-Android应用程序视频05-Android应用教程201506-裸机程序实验文档以及工具文件07-Linux-x86-Qt5.3.2以及QtE4.7.1应用视频08-Linux驱动... 查看详情

[学习开发板怎么选]迅为4412开发板帮你入门嵌入式

  丰富选配模块 入门视频教程(购买后提供完整版高清教程)部分视频观看地址:【视频教程】iTOP-4412开发板之学习方法--致初学者http://v.youku.com/v_show/id_XNzQ5MDA4NzM2.html【视频教程】三星Exynos4412处理器开发要点http://v.y... 查看详情

嵌入式开发板丨arm开发板学习必备资料-迅为电子

摘要:ARM开发板迅为三星Exynos嵌入式开发平台超强GPS模块iTOP-Exynos4412开发板采用Exynos4412的主芯片,具有更高的主频和更丰富外设,配置2GB双通道DDR3的内存及16GB存储,具有稳定性强、可靠性高,能适用于对性能和处理能力有更高... 查看详情

开创学习的四核时代-itop-4412开发板开源硬件平台

...门的开发板。笔者最近入了一套。也推荐给初学ARM的朋友学习,4412开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具高速读取与超大容量,独家配备三星S5M8767电源管理。接口丰富。性能强劲。另外迅为专... 查看详情

学习嵌入式4412开发板-手把手配套视频_2000人群组在线交流

物联网学习开发板_迅为4412开发板_视频教程从入门到精通共享海量学习资料、学不会才是奇迹一.视频教程:免费视频教程(迅为一线研发工程师录制-不断更新)第一部分迅为电子开发板入门视频(数量:53节)第二部分iTOP-4412开发板... 查看详情

嵌入式学习笔记二烧录制作好的镜像到4412开发板中

说明:本来打算第二份笔记作开发环境搭建的,但是整个开发环境的搭建比较复杂,所以学到后面的时候再回过来系统的讲述一下如何搭建开发环境,这一节内容就讲如何烧录制作好的镜像到开发板中。一、Android4.0.3的烧写(OTG... 查看详情

嵌入式开发板迅为4412开发板搭建qt应用程序开发环境

集成开发软件qtcreator-3.2.2下载官网下载选择GPL/LGPL协议选择离线下载选择LinuxHost这里需要注意的是,如果只下载“QtCreator”,是不带运行环境的。迅为电子网盘下载“iTOP-4412开发板搭建编译环境所需要的工具包以及补丁包”“07-Q... 查看详情

itop-4412开发板-qte4.7-uvc摄像头使用例程

本文档主要介绍迅为iTOP-4412开发板QtE4.7系统下UVC摄像头的使用过程。工程文件是:“iTOP-4412-QtE4.7-UVC_V1.0”(注意版本更新)。用户可以直接运行工程文件中的“qtcamera”可执行文件。具体过程如下。1.1 运行测试通过U盘、tftp&... 查看详情

4412开发板免费视频教程

...目框架,例程及源码分析,增加部分视频教程,全面掌握嵌入式开发技术应用外扩模块包含WIFI,RFID,GPS,Zigbee,继电器LORA,USB转串等模块。   4412开发板免费视频教程观看地址(关注迅为电子B站,获得最新免费视频)iTOP... 查看详情

移植opencv2.4.9到itop4412开发板

...机器视觉方向的图像处理的开发包,眼下已经有被移植到嵌入式Linux环境上。本文介绍了OpenCV交叉编译的基本步骤。在opencv交叉编译之前要先进行依赖库的交叉编译,然后才干进行opencv库的交叉编译(由于opencv依赖于非常多库函数,... 查看详情

itop4412开发板android4.4源码编译分享

...目录网盘下载Android4.4.4对应的源码。在网盘“iTOP-4412开发板系统源码及 查看详情

分享itop4412开发板-bluetooth移植文档

【分享】iTOP4412开发板-Bluetooth移植文档      最近须要把Bluetooth移植到iTOP-4412 开发平台。查阅了相关资料,经过一段时间的研究、调试,最终成功的将蓝牙功能移植到了开发板上面。这里笔者记录移植过... 查看详情

itop-4412开发板-串口转接小板的使用文档

本文档介绍如何使用迅为iTOP-4412精英版如何使用串口转接板,串口小板如下所示。和串口转接板模块相关的资料如下:“iTOP-4412-Android-串口测试文档(升级版)_V2.X.zip”“iTOP-4412-QtE-串口uart测试程序_v1.X.rar”“iTOP-4412-驱动-关闭... 查看详情

itop-4412开发板使用第一篇-信号量的学习使用(未完待续)(代码片段)

1.本次基于itop-4412研究下Linux信号量的使用方法。2.创建信号量的函数,信号量的头文件在那个路径?编译应用程序的话,头文件有3个路径,内核源码头文件,交叉编译器头文件,ubuntu的头文件,不是很理解为啥交叉编译器也需... 查看详情

itop-4412开发板运行linuxqt系统,怎么挂接u盘

参考技术A如果是iTop-4412的android4.0系统,可以这样来实现:linuxQT系统下挂载u盘,首先用命令mknod/dev/sda1b81创建U盘的设备节点,然后使用命令mount/dev/sda1/mnt/udisk/挂载u盘即可。 查看详情