什么是 NFS 协议?
nfss的整个架构是Client-Server 架构,客户端和服务端通过 RPC 协议进行通信。
RPC协议可以简单的理解为一个基于 TCP 的应用层协议,它简化命令和数据的传输。
由于我们需要多次调试开发板文件系统内的某个应用程序,所以要多次进行编译拷贝等操作,因此我们可以直接使用ubuntu 的 nfs 目录下的文件系统进行远程调试。
做法
接线
将开发板的net2与电脑的usb口连接。
注意:接线时要接靠近红色拨码开关的网口。
设置三卡在同一个网段
三卡分别是:
1)USB 网卡(位于 Windows 主机上)
2)在ubuntu中设置的桥接网卡:他的的网络流量实际上是通过宿主机(Windows)的 USB 网卡来与开发板和 Windows 通信。
3)开发板网卡 : 位于 IMX6ULL 开发板 上。
接下来我们需要设置Windows 上 USB 网卡、Ubuntu 使用的桥接网卡、开发板的网卡,这 3 个网卡的 IP 为同一个网段。
1.win上设置 USB 网卡的 IP
当我们连接好网线,我们可以看到Windows 设备管理器-->网络适配器中会新增一个设备,我们由此可以确定usb网卡的名称。
然后打开“控制面板→网络和 Internet→网络和共享中心→更改适配器设置”,去配置 这张USB 网卡的 IP。
方法是:鼠标右键点击 USB 网卡设备,在弹出的选项中点击“属性”按钮。然后在弹出新的属性对话框内点击“Internet 协议版本 4(TCP/IPV4)”,继续在新弹出的对话框参考下图填入 IP 地址“192.168.5.10”、子网掩码 “255.255.255.0”、默认网关“192.168.5.1”,最后点击“确定”。
2.ubuntu添加桥接网卡并设置ip
如果你的 Ubuntu 虚拟机中没有桥接网卡,可以点击进入“编辑虚拟机设置”进行添加。
方法是:在开始菜单搜索“虚拟网络编辑器”,点击“以管理员身份运行”打开虚拟网络编辑器。点击“VMnet0”,选择“桥接模式”,在桥接模式下的“已桥接至”下拉框中,选中 USB 网卡(它的名字可以在设备管理器中得到),最后点击确定即可完成 vmware 配置。
注意:必须是“VMnet0”,如果没有“VMnet0”可以点击“添加网络”进行设置,
2.接着,我们在Ubuntu中配置桥接网卡的IP
在 Ubuntu 关机状态下,点击“编辑虚拟机设置”,在弹出的虚拟机设置对话框,确认有一个“网络适配器”是桥接的。
接下来启动 Ubuntu,在 Ubuntu 中设置桥接网卡的 IP 地址为静态 IP。
方法是:打开 Setting 后,在左侧找到 Network 选择栏,点击显示详细内容,可以看到有 2 个网卡:ens33、ens36。它们对应 NAT 网卡、桥接网卡。可以看到点开ens36没有ip,则其就是桥接网卡。点击它右边的“设置” 图标,在弹出的设置界面内,点击“IPV4”切换出设置页面,之后选择“Manual” 表示手工设置 IP 地址,在“Address、Netmask、Gateway”输入框分别填入:192.168.5.11、255.225.225.0、192.168.5.1。
接着:我们可以在 ubuntu 终端下输入 ifconfig 命令来查看 IP 地址是否设置正确。
3.开发板设置ip地址
IMX6ULL 有两个网卡(如下图所示),推荐使用 eth0,使用网线连接 eth0 和USB 网卡。设置开发板的 IP 有两种方法:手工设置 IP,修改配置文件设置 IP。
其中手工设置的方法很简单,但是每次启动开发板都要重新设置,在开发板串口中执行命令即可:
ifconfig eth0 192.168.5.9
设置成功后可以使用 ifconfig 命令来查看已设置的 IP 地址。
三者互ping验证
通过以以上的设置,有以下ip:
windows ip:192.168.5.10 ubuntu ip:192.168.5.11 开发板 ip:192.168.5.9
开发板ping windows
开发板pingubuntu
ubuntu ping开发板
windowsping 开发板
挂载
我们需要先确定ubuntu的桥接网卡的 IP。
使用ifconfig查看,得到为192.168.5.11。
知道ubuntu的桥接网卡ip是192.168.5.11后,我们可以使用下面命令进行挂载:
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
mount 成功之后,开发板在/mnt 目录下读写文件时,实际上就是在访问ubuntu中的/home/book/nfs_rootfs 目录。
注:mount 命令用于挂载各种支持的文件系统协议到某个目录下。
ubuntu上安装tfcp服务
接着我们需要在 Ubuntu 中安装tfcp服务。执行以下命令:
sudo apt-get install tftp-hpa tftpd-hpa
然后,创建 TFTP 服务器工作目录,并打开 TFTP 服务配置文件,如下:
mkdir -p /home/book/tftpboot sudo chmod 777 /home/book/tftpboot sudo vim /etc/default/tftpd-hpa
接着在配置文件/etc/default/tftpd-hpa 中,添加以下字段:
TFTP_DIRECTORY="/home/book/tftpboot" TFTP_OPTIONS="-l -c -s"
然后,重启 TFTP 服务:
sudo service tftpd-hpa restart
最后我们可以查看 tftp 服务是否在运行,运行如下命令,即可查看是否在后台运行。
ps -aux | grep “tftp
win上安装tfcp服务
Windows 上的 TFTP 服务由一个应用程序 tftpd64 提供,下载后双击运行,再做些设置即可。
tftpd64 的使用非常简单,运行后只需要设置 3 步:
第1步 选择目录(开发板将从这个目录读、写文件)
第2步 选择桥接用的网卡的 IP。
第3步 设置防火墙,直接关闭防火墙;或是允许 tftpsever 使用网络:
开发板通过 tftp 传输文件
ubuntu文件放到开发板
以 Ubuntu 为例,Windows 也是类似的。
首先确保 Ubuntu 或 Windows 的 tftp 服务目录内,有需要下载到板子上的文件。
因为Ubuntu 的桥接网卡 IP 是 192.168.5.11,所以我们我们可以在开发板上执行下面的命令:
tftp -g -r zImage 192.168.5.11
开发板文件放到ubuntu
比如我们现在开发板家目录下创建一个 amaidou.txt 的文本文件,然后写入 111111…. ;要想将之传到ubuntu。
可以在开发板上执行如下命令:
tftp -p -l amaidou.txt 192.168.5.11
此时我们查看 Ubuntu 服务器的 tftp 服务目录下,即可看到之前在开发板上创建的 amaidou.txt。
至此,我们就可以使用nfs在开发板和ubuntu和windows上传输数据了。
再一次的使用
接线,然后可以检查一下网卡驱动有没有被正确识别。
在开发板上设置ipifconfig eth0 192.168.5.9
然后试验一下三者是否ping得通。