i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT、4G模块、CAN、RS485等接口一应俱全。H264、VP8视频硬编码,H.264、H.265、VP8、VP9视频硬解码,并提供相关历程,支持8路PDM接口、5路SAI接口、2路Speaker。系统支持Android9.0(支持获取root限)Linux4.14.78+Qt5.10.1、Yocto、Ubuntu20、Debian9系统。适用于智能充电桩,物联网,工业控制,医疗,智能交通等,可用于任何通用工业和物联网应用、
【公众号】迅为电子
【粉丝群】258811263(加群获取驱动文档+例程)
第二十九章 NFS服务器的搭建和使用
本章内容对应视频讲解链接(在线观看):
nfs服务器的搭建和使用 → https://www.bilibili.com/video/BV1M7411m7wT?p=30
本章我们使用 nfs 服务器,使用 nfs 拷贝文件到开发板上。
29.1 什么是nfs
NFS是Network File System 的缩写,它可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
NFS服务器我们一般是在ubuntu上搭建的。这里的客户端我们使用的是开发板,如下图所示。
即/home/mnt下的文件和/home/nfs下的文件他们的文件是一样的。
大家可以类比之前讲的 samba :
Ubuntu安装samba 与windows 电脑共享了一个文件夹。这个文件夹win电脑可以直接访问,ubuntu也可以直接访问。windows可以直接访问这个文件夹把 ubuntu里面的文件拖出来,ubuntu也可以直接访问这个文件夹把Windows 电脑上的文件拖出来。
samba共享的文件夹可以类比成nfs共享的文件夹 /home/nfs
nfs服务器是安装在 ubuntu 上的,所以nfs 服务器可以类比成 ubuntu
ubuntu也可以访问 /home/nfs 这个目录,因为这个目录就是在 ubuntu 上,nfs客户端也就是开发板,我们可以把它类比成samba服务中的windows电脑,所以说开发板也可以直接访问 /home/nfs 这个目录,
所以使用nfs服务器就轻松实现开发板和 ubuntu 之间互传文件。
29.2 同一个网段概念
使用nfs之前,开发板、虚拟机ubuntu、windows电脑三者要互相ping 通,这就涉及到了同一个网段的概念。
概念:同一个网段是指IP地址和子网掩码相与得到的相同的网络地址。
快速判断同一个网段:
- 开发板、虚拟机ubuntu、windows子网掩码是不是相同。
- 开发板、虚拟机ubuntu、windows IP地址的前三段是不是相同。
举例:
Ubuntu:
由上图可知,ubuntu的IP为192.168.1.11,子网掩码是255.255.255.0
Windows:
由上图可知,windows电脑的IP为 192.168.1.5 ,子网掩码是 255.255.255.0
所以,ubuntu和windows 在同一个网段,因为子网掩码相同,都是255.255.255.0,IP地址前三段相同,都是 192.168.1。同理,判断开发板的网段是不是和ubuntu和windows在同一个网段下,我们也可以使用这个方法。
29.3 开发板,windows,虚拟机ubuntu三者之间的连接
- 虚拟机ubuntu要使用桥接模式,不能使用其他模式
- 开发板使用无线或者有线连接到路由器上,不能直接连接到电脑,不能连手机热点。
- windows关闭防火墙,使用有线或者无线连接到和开发板连接的同一个路由器上。
- 如果windows使用的是无线连接到路由器,那么虚拟机vm要桥接到无线网卡,反之,桥接到有线网卡。
虚拟机桥接模式是自动选择的,选择编辑,选择虚拟网络编辑器,点击一下更改设置,这个需要管理员的权限,桥接模式他这里是自动的,他下边有一个网卡,这个呢我使用的是有线,所以他是有线网卡。
- 保证虚拟机ubuntu,Windows,开发板在同一个网段。
- 使用以上连接方法极大减少ping不通的概率。如果ping不通,请检查以上5条是否全部满足。
29.4 nfs服务器的搭建
(1)在ubuntu安装nfs 服务:在管理员的身份下运行
apt-get install nfs-kernel-server
2) 在/home 下创建一个名为nfs的文件夹
3) 打开配置文件添加nfs共享目录
vi /etc/exports
在配置文件里面添加一下代码:
/home/nfs/ *(rw,sync,no_root_squash)
其中: /home/nfs/ 是 nfs 服务器要共享的目录
rw:是可读写权限
sync:是资料同步写入内存和硬盘
no_root_squash:当登录NFS主机使用共享目录的使用者是root时,其权限将被转换成为一名使用者,通常它的UID与GID 都会变成 nobody身份。
(4)重启nfs服务
/etc/init.d/nfs-kernel-server restart
显示ok就说明nfs服务器搭建成功了。
29.5 nfs服务器的使用
- 我们将开发板开发板烧写yocto文件系统,有线网口通过网线连接到路由器,系统起来后首先使用“ifconfig”查看开发板 ip。如下图所示:
(2)在Ubuntu上输入“ifconfig”,查看一下 NFS 服务器(Ubuntu)的 ip地址,如下图所示:
(3)通过查询ip地址,查看到开发板和服务器在同一网段,如果不在同一网段,则需要修改开发板的网络设置,重新设置ip地址并重启开发板使之生效。
(4)开发板上使用 ping 命令测试网络,如下图所示,开发板和 ubuntu 服务器之间的网络是连通的。
(5)挂载nfs服务器共享的目录,命令如下:
mount -t nfs -o nolock 192.168.1.45:/home/topeet/imx8mm/ /mnt
这句话代码的意思是使用nfs挂载的ubuntu(IP为192.168.1.45)中的/home/topeet/imx8mm/到开发板的mnt 文件夹下,192.168.1.45的IP为ubuntu的IP。把这个 ip改成自己ubuntu的 ip就可以了,前提是开发板必须能够 ping 通 ubuntu ,如果没有ping 通的话再检查下,复制命令,这样就挂载好了nfs服务。那么挂载好了之后要怎么用呢,我这里打开ubuntu,然后进到我们平常做实验的目录,在这个目录下有一个 hello 的可执行文件,file hello 查看下,他是在开发板上运行的,架构是arm 的,如果是借助tf卡或者U盘来拷贝会比较麻烦,我们可以直接使用 nfs ,我现在把这个可执行文件拷贝到共享目录下,也就是 /home/topeet/imx8mm/这个目录。
然后我们再进到共享目录看一下,在这个目录下有一个 helloworld.c文件,现在是在 ubuntu上操作的,然后在超级终端上看一下,这里是把共享的目录挂载到了 mnt 上,进到 /mnt目录下,ls看一下,在这里就可以看到ubuntu的helloworld.c文件了,我们来运行下,是可以运行成功的,所以说使用nfs,我们可以很方便地把 ubuntu上的文件拷贝到开发板。
cd /mnt