开发板和宿主机的TFTP&NFS配置问题

在嵌入式开发中,由于嵌入式开发板资源有限,不能进行文件编译,因此我们都是将写好都代码在宿主机(Linux虚拟机)上进行调试编译好后生成二进制文件,然后通过tftp或NFS来进行传输到开发板上运行。

但是如何来配置tftp呢?经过一番配置,我终于成功了。

硬件开发环境:TQ2440开发板

linux内核:linux2.6.25

PC系统:红帽LINUX

第一步:实现PC机、LINUX虚拟机和开发板 三者之间的网络搭建 即可互相ping通

具体做法:

注意:在此之前,先说一下我的开发板和PC机或者虚拟机的连接情况,开发板通过串口线与PC机连接,通过网线直接将开发板和PC机连接,还有通过下载线和PC机相连,PC机连接无线网络。

PC机的本地连接IP(192.168.1.140,手动设置)、无线IP(192.168.1.101)

虚拟机IP(192.168.1.102)

开发板IP(192.168.1.6)

步骤1:虚拟机一定要选择桥接(bridged)

步骤2:设置虚拟机的“Virtual Network Editor”

切记!!一定要选择PC机的本地网卡,不是虚拟网卡以及无线网卡(不要选择automatic选项,因为它有可能会选到无线网卡,因此虚拟机一定ping不通开发板)

步骤3:设置PC机、虚拟机、以及开发板的IP在同一个网段,即192.168.1.*,其他掩码、网关、DNS都设置一样

步骤4:通过以上的配置,就可以实现PC机、虚拟机、开发板直接的互相PING通。注意:此时发现PC机通过本地连接IP(192.168.1.140)可以实现与虚拟机以及开发板直接的ping通

第二步:实现PC机、虚拟机、开发板三者之间互相ping通之后,开始搭建TFTP开发环境

首先,我们需要以宿主机(Linux虚拟机)作为服务器端,因为我们是要将虚拟机上的文件下载到开发板上。

步骤1:在虚拟机上安装tftp服务

1.加载光盘

#mount /dev/cdrom /mnt

2.安装tftp服务的服务器端

# rpm -ivh  tftp-server-0.49-7.el6.i686.rpm

3.安装tftp服务的客户端

# rpm -ivh  tftp-0.49-7.el6.i686.rpm

步骤2:配置tftp服务

安装完后,开始配置tftp服务:

1.编辑vi /etc/xinetd.d/tftp,

service tftp

{

socket_type             = dgram

protocol                = udp

wait                    = yes

user                    = root

server                  = /usr/sbin/in.tftpd

server_args             = -s /tftpboot -c

disable                 = no

}

将disable改为no,保存退出。

2.建立默认的tftp根目录,要跟上面的server_args的路径一样,这里是/tftpboot,即在根目录下创建tftpboot文件夹

3,启动ttfp服务器

# /etc/rc.d/init.d/xinetd restart

停止 xinetd:                                              [  确定  ]

启动 xinetd:                                              [  确定  ]

4.在命令行中输入setup

#setup

选择<system services>选中tftp并去掉iptables选项

还得选中portmap(端口映射),如果系统中没有那个选项,还得安装相关服务,#rpm -ivh portreserver-0.0.4-9.el6.i686.rpm就OK,

5.再次运行 # /etc/rc.d/init.d/xinetd restart

这时,tftp就配置好了。

第三步:Tftp服务搭建完成,可以实现开发板(PC机)从虚拟机上下载/上传文件

 

注意:tftp功能的实现必须要以三者之间可以互相PING通为前提

 

最好先做个测试:本机测试tftp服务器功能

1.在虚拟机上启动tftp服务器

# /etc/init.d/xinetd restart

2.任意目录下在虚拟机上tftp虚拟机自身

#tftp 192.168.1.102

3. 利用get <文件>来从/tftpboot下载文件

4. 利用put <文件>将文件上传到/tftpboot

 

若能实现上述功能,则说明tftp服务可用。可继续下面的试验。

Part1. PC机作为客户端,与虚拟机文件共享

在PC机上运行 tftpd32.exe 客户端软件

选择Tftp客户端,主机填虚拟机IP,本地文件是PC机上文件,远程文件是虚拟机上/tftpboot下的文件,点击上传或下载。即可实现。

Part2 .开发板作为客户端,与虚拟机文件共享

此时客户端(开发板)就可以上传下载文件到虚拟机上的/tftpboot目录下了。

那么在客户端是如何使用tftp上传下载文件的呢。这个和在虚拟机上还是有点不一样的。

步骤1:在开发板上的终端输入

# tftp

Usage: tftp [OPTION]... HOST [PORT]

Transfer a file from/to tftp server

Options:

-l FILE Local FILE

-r FILE Remote FILE

-g      Get file

-p      Put file

-b SIZE Transfer blocks of SIZE octets

参数说明:

-l  是local的缩写,后跟本地或下载到本地后重命名的文件名。

-r  是remote的缩写,后跟远程即PC机tftp服务器根目录中的文件名,或上传到PC机后重命名后的文件名。

-g  是get的缩写,下载文件时用,后跟PC机的IP地址

-p  是put的缩写,上传文件时用,后跟PC机的IP地址

tftp 默认占用的是69端口

步骤2:下载/上传命令

下载文件:[[email protected] /]# tftp -l hello.c -r hello.c -g 192.168.1.102 69

上传文件:[[email protected] /]# tftp -l hello.c -r hello.c -p 192.168.1.102 69

其中,192.168.1.102是虚拟机的ip

注意:下载或上传文件时,服务器和本地文件名最好相同,否则会出现得到了文件,但文件大小却是 0k 的现象。如果出现了这种现象,请多敲几次命令,因为tftp服务是基于udp协议,不能保证文件正确的传输。

安装过程中出现的问题及原因

现象一:

tftp> get test.log

Transfer timed out.

原因:tftpd服务没有启动

现象二

tftp> put test2

Error code 0: Permission denied

原因:运行命令,查看系统日志

#tail /var/log/messages

发现有如下一段文字:

Mar 24 19:05:26 localhost setroubleshoot:

SELinux is preventing /usr/sbin/in.tftpd (tftpd_t) "write" to tftpboot (tftpdir_t).

For complete SELinux messages.

run sealert -l 40a5a6bf-8ded-4bfa-ab6e-fa669a25fc6c

知道这是是由SELinux造成的,在FC3和FC3以后的FC版本中SELinux默认的都是开启的,现关掉它,

修改文件 /etc/sysconfig/selinux,设定其中的SELINUX=disabled然后重启电脑即可,或者执行命令 system-config-securitylevel 打开 “安全级别配置”对话框,将SELinux(S)选项中“强制”改为“允许”。

现象三:

tftp> put ex070416.log

Error code 1: File not found

原因:指定的文件不存在;或tftpd启动参数中没有指定-c选项,允许上传文件

现象四:

tftp> get test.log

Error code 2: Only absolute filenames allowed

原因:

在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpa

cat /etc/default/tftpd-hpa

#Defaults for tftpd-hpa

RUN_DAEMON="no"

OPTIONS="-s /home/tftpd -c -p -U 077 -u tftpd"

设置的时候只要将server_args=改为你自己设定的服务器文件夹就行了

第四步:搭建NFS开发环境  

在应用程序开发环境,NFS方式比TFTP方式的执行效率要高的多,因为它不需要将linux服务器上的程序下载到嵌入式目标系统当中去就可以调试。

NFS服务端:虚拟机当中的NFS服务器

NFS客户端:开发板

实现NFS开发环境的前提也是相互PING通

步骤1:建立NFS开发环境

在虚拟机上安装NFS软件包

一是虚拟机上的NFS服务器支持,二是开发板上的NFS客户端支持

以root身份登录,编译文件/etc/exports

#vi /etc/exports

加入语句:/nfsfile 192.168.1.*(rw,sync,no_root_squash),表示的意思是:允许IP范围在192.168.1.*段的计算机来访问共享目录/nfsfile,具体参数自查。

步骤2:启用保护机制

配置/etc/hosts.deny和/etc/hosts.allow

步骤3:启动NFS

注意,关闭防火墙

1.首先必须启动portreserve(portmap,即端口映射)服务,这是NFS本身需要的

#service portreserve restart

2.启动NFS服务器

#service nfs resatrt。此时NFS会激活守护进程,然后开始监听客户端的请求。

3.在虚拟机上进行NFS回环测试

在虚拟机上执行命令:

#mount -o nolock -t nfs 192.168.1.102:/nfsfile /nfsfile1

#ls /nfsfile1

若挂载成功,即可在nfsfile1文件夹下看到和nfsfile一样的内容

4.在开发板上执行命令

##mount -o nolock -t nfs 192.168.1.102:/nfsfile /mnt

#ls /mnt

挂载成功,可在/mnt文件夹下看到和nfsfile一样的内容,且两个文件夹内的内容的修改时同步的

时间: 2024-11-10 07:09:10

开发板和宿主机的TFTP&NFS配置问题的相关文章

开发板ping不通主机和虚拟机的看过来(转载)!

前几天在做uboot下用tftp下载文件到开发板的实验时,为了能解决开发板ping不通主机和虚拟机的问题,可谓绞尽脑汁,正所谓久病成医,虽然为了这一小问题废了我那么长时间,但我在解决问题的同时也学到了很多其他知识,算是塞公失马,焉知祸福!好了,废话不多说,如果你也ping不通,就请往下看! (以下是我解决这一问题的心得,以我开发板为例,如果你的板子跟我不一样,也没关系,道理是一样的) 一:物理设备及连接方式: 开发板:Mini2440(友善之臂): 笔记本一台(主机)(windows系统): 虚

(史上最全)开发板ping不通主机和虚拟机的看过来!

前几天在做uboot下用tftp下载文件到开发板的实验时,为了能解决开发板ping不通主机和虚拟机的问题,可谓绞尽脑汁,正所谓久病成医,虽然为了这一小问题废了我那么长时间,但我在解决问题的同时也学到了很多其他知识,算是塞公失马,焉知祸福!好了,废话不多说,如果你也ping不通,就请往下看! (以下是我解决这一问题的心得,以我开发板为例,如果你的板子跟我不一样,也没关系,道理是一样的) 一:物理设备及连接方式: 开发板:Mini2440(友善之臂): 笔记本一台(主机)(windows系统): 虚

samrt210开发板ping-系列问题(开发板ping通主机,主机ping通虚拟机,唯独~开发板ping不通虚拟机)

硬件:PC机.虚拟机(Linux).开发板(smart210) 常用模型: 注:1).有线网卡与无线网不可同连一个路由器,不可在同网段: 2).vmware选择桥接模式,虚拟网络适配器选定具体的网卡名称(有线/无线): 3).将开发板.PC机.虚拟机的IP置于同网段下: 选用模型(2)作为目标 1.确保smart210_uboot下载至开发板成功: 2.按照目标模型联通,用直连网线连接开发板.路由器.PC机: 3.#setenv gatewayip 192.168.1.1 (网关)   netm

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

本文转自迅为: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.

开发板tftp:timeout问题

想要从PC上面tftp文件的时候遇到了tftp:timeout的问题: >: tftp -gr gprsapp 192.168.1.38tftp: timeout 检查了网络,可以ping的通PC.PC的tftp服务器也已经打开了,测试从开发板上面向PC上tftp传送数据也是可以的:说明开发板上的tftp服务器时打开着的. >: tftp -pr gprsapph 192.168.1.38gprsapph 0% | | 0 - stalled -tftp: timeout 这时就怀疑到防火墙的

一句话解决Ping问题(主机,开发板,虚拟机)

PC机使用网卡A连接开发板,VMWare就要使用同一个网卡A作为桥接网卡 步骤: 1.确定网卡A 2.VMWare选择网卡A作为桥接网卡 3.设置三者IP在同一网段 a.Windows网卡A的IP b.VMWare里面Ubuntu的IP c.开发板的IP(U-Boot / Linux) 注意事项: 1.关闭电脑的防火墙, 2.关闭VMWare中Linux防火墙 3.PC有多个网卡时,多个网卡的IP不能为同一网段 4.开发板运行与U-Boot时,使用 set ipaddr xxx.xx.xxx.x

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

转自迅为讨论群:http://www.topeetboard.com 重要说明:这份笔记不是4412开发配套的,是我在网上看视频的时候下载上课老师的笔记后修改的.所以我试了一下笔记上的uboot命令,有些无法使用,可能是uboot版本问题或者文件系统问题.具体原因我目前还不是很清楚,建议第五部分uboot命令可以先不用尝试. 一切以配套视频为准. 一.为什么是uboot 1.uboot从哪里来的? (1)uboot是SourceForge上的开源项目 (2)uboot项目的作者:一个德国人最早发

关于用网线连开发板和电脑网卡问题

关于用网线连开发板和电脑网卡问题 关于用网线连接开发板和电脑网卡使用tftp下载内核问题,提供一些个人解决方案已提供需要之人. 我的情况是:用无线上网,网线连接开发板和电脑网卡,想使用tftp下载内核和根文件系统 开发板ip:192.168.111.100 电脑本地连接设置ip:192.168.111.120 Linux服务器ip:192.168.111.128 (ip根据个人所需设置同一网段即可) 1.    设置虚拟机网络连接模式 首先在VMware中的Edit下virtual networ

20150502 调试分析之 使用gdb远程调试ARM开发板

20150502 调试分析之 使用gdb远程调试ARM开发板 2015-05-02 Lover雪儿 今天我们要学习的是使用gdb和gdbserver来远程调试开发板程序. 下面是本人的一些具体步骤: 下载gdb-7.9.tar.gz地址: http://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.gz 安装gdb tar -jxvf gdb-7.9.tar.bz2 ./configure -target=arm-none-linux-gnueabi --prefix=/hom