基于ubuntu10.04的tftp开发环境搭建

发布时间:2016-12-7 22:33:46 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"基于ubuntu10.04的tftp开发环境搭建",主要涉及到基于ubuntu10.04的tftp开发环境搭建方面的内容,对于基于ubuntu10.04的tftp开发环境搭建感兴趣的同学可以参考一下。

用OMAPL138这段时间以来,深深体会ARM9+DSP的强大数据采集和处理能力,难怪TI这一年也希望OMAPL138能在国内推广开来,现在我来拿国内一家做OMAPL138很到位的广州创龙电子公司的SOM-OMAPL138开发套件来说说,谈谈其基于ubuntu10.04的tftp开发环境搭建。 开发平台:广州创龙电子公司的OMAPL138开发板平台 开发环境:Ubuntu10.04(虚拟机建议采用VM7.0或以上) 首先我先说说tftp简介。 简单文件传输协议或称小型文件传输协议(英文:Trivial File Transfer Protocol,缩写tftp),是一种简化的文件传输协议,于1980年定义。 tftp是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。嵌入式Linux的tftp最常用来完成开发板和开发环境Linux系统之间的的文件传输功能,避免了频繁的U盘拷贝的过程。Linux下的tftp开发环境建立包括两个方面:一是Linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。本文将介绍基于ubuntu10.04发行版的Linux服务器端tftp-server的配置和在主机和目标机之间的tftp文件传输方法。         接下来,我给大家详细的简介TFTP开发环境的搭建步骤: 1.Linux服务器端tftp-server的配置 1.1安装tftp所需的软件 安装软件前务必保证虚拟机可以上网。虚拟机要访问网络必须在“Virtual Machine setting”菜单下选择NetworkAdapter->Network connection->NAT:Used to share the host's IP address,设置如下图: 需要安装tftp-hpa和tftpd-hpa(前者是客户端,后者是服务程序)以及xinetd。在终端下输入如下命令安装tftp-hpa、tftpd-hpa和xinetd: [email protected]:~$sudo apt-get install tftp-hpa [email protected]:~$sudo apt-get install tftpd-hpa [email protected]:~$sudo apt-get install xinetd  1.2配置相关服务文件 进入根目录下的etc文件夹(cd /etc/),首先看目录中有没有一个xinetd.conf文件,如果没有则新建一个,有的话运行“cat xinetd.conf”查看其内容,看是否与下面的一致,若不一致则运行“sudo gedit xinetd.conf”修改为相同,内容如下图: 打开配置文件tftpd-hpa命令如下: [email protected]:/etc$sudo gedit /etc/default/tftpd-hpa 将内容修改成: # /etc/default/tftpd-hpa  TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/tl/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="-l -c -s"  修改完成后如下图: TFTP_DIRECTORY="/home/tl/tftpboot":表示tftp服务器的工作目录。 保存退出,然后执行命令“mkdir –p /home/tl/tftpboot”新建tftp工作目录,并修改权限为777,命令为“sudo chmod 777 /home/tl/tftpboot”。777是最松的权限,这样不仅可以允许别的主机或者目标机下载同时允许上传文件。 然后进入/etc下面的xinetd.d文件夹(cd/etc/xinetd.d),查看是否有一个tftp文件,如果没有就运行“sudo gedit tftp”新建一个并输入以下内容,如果有的话就查看内容是否与下面的一致,不一致则修改,内容如下: service tftp         {             socket_type = dgram             wait = yes             disable = no             user = root             protocol = udp             server = /usr/sbin/in.tftpd             server_args = -s /tftpboot -c             #log_on_success += PID HOSTDURATION             #log_on_failure += HOST             per_source = 11             cps =100 2             flags =IPv4         } 其中server_args一行是配置服务器的文件存放的位置,就是进行tftp传输的时候,都是从该文件夹中搜索文件的。然后保存文件,并退出编辑。 1.3重新启动服务 执行“sudo service tftpd-hpa restart”重启tftpd-hpa,,提示如下图: 执行“sudo /etc/init.d/xinetd reload”重新加载一下xinetd进程,提示如下图: 执行“sudo /etc/init.d/xinetd restart”重启xinetd服务,提示如下图: 每次修改完配置文件后,都需要重新启动一下服务。 1.4本地tftp文件传输功能测试 首先在/home/tl/tftpboot中新建一个文件test,在其中随便输入内容,例如内容如下图: 然后进入一个不是“/home/tl/tftpboot”的目录。再在终端中输入“sudo tftplocalhost”,进入tftp命令符下,如下图: 可以在其中输入help查看命令和命令的作用,提示如下: 接着输入 “get test”再按回车,如果没有任何提示,就说明传输成功了。然后输入 q 退出tftp命令符,如下图: 在当前目录下运行“ls”就可以看到一个test文件,可以使用“cat test”命令查看其内容,可以发现是与开始新建的那个test的内容是一致的。 修改test文件后,可以在tftp命令中输入 “put test”,把修改过的test文件上传到服务器文件夹中。 2开发板文件系统和虚拟机之间tftp文件传输功能实现 开发板和Windows主机先通过直连网线插到路由器,这样Winsows主机、虚拟机、开发板就相当于在同一个局域网了。若没有路由器,也可以通过交叉网线将开发板和Windows主机互联。 2.1查看PC机Windows主机的IP地址 在Windows主机<开始>菜单栏的最下方输入“cmd”,然后按回车进入dos操作界面,再输入执行"ipconfig"查看Windows主机的IP地址,如下图所示: 在Windows主机<开始>菜单栏的最下方输入“cmd”,然后按回车进入dos操作界面,再输入执行"ipconfig"查看Windows主机的IP地址,如下图所示: 2.2修改开发板的IP地址 开发板上电,进入开发板系统后设置IP的前三个字段和Windows主机的一样,最后一个字段务必不能相同,同时设置子网掩码为一致。只有前三个在字段和子网掩码相同,Windows主机、Ubuntu虚拟机、开发板三者之间才能互相ping通。例如,针对Windows主机的IP:192.168.0.2,子网掩码:255.255.255.0,可以设置开发板的IP地址为:192.168.0.8,子网掩码:255.255.255.0,设置命令如下: [email protected]:~# ifconfigeth0 192.168.0.8 netmask 255.255.255.0          可以通过ifconfig命令查看修改后的IP和子网掩码等信息,操作如下图: 一种更简便的方法是使用“udhcpc”命令让开发板自动获取路由器给它分配的IP,如下图所示: 2.3设置Ubuntu虚拟机IP地址 在设置之前先将虚拟机和主机的网络连接方式设置为桥接,点击虚拟机"VM->Setting",弹出以下设置界面: 点击“Network Adapter->Network Connection->Bridged”选项,如下图所示: 点击OK,完成设置。、          进入虚拟机Ubuntu系统后设置IP的前三个字段和Windows主机的一样,最后一个字段务必不能相同,同时设置子网掩码为一致。只有前三个在字段和子网掩码相同,Windows主机、Ubuntu虚拟机、开发板三者之间才能互相ping通。例如,针对Windows的IP:192.168.0.2,子网掩码:255.255.255.0,可以设置虚拟机的的IP地址为:192.168.0.5,子网掩码:255.255.255.0。          执行以下命令配置IP: [email protected]:~$ sudoifconfig eth0 192.168.0.5 netmask 255.255.255.0          通过ifconfig命令查看修改后的IP和子网掩码等信息,结果如下图: 2.4Windos主机、开发板、虚拟机三者之间ping命令测试 2.4.1虚拟机ping开发板和Windows主机 在虚拟机分别执行以下两个命令,Linux系统的ping命令不会像Windows一样自动停止显示,需要执行“Ctrl+C”命令才能停止。 [email protected]:~$ ping 192.168.0.8 [email protected]:~$ ping 192.168.0.2          成功ping通提示如下图: 备注:          (1)假如虚拟机出现“From *.*.*.*icmp_seq=1 Destination Host Unreachable”的错误提示,说明了没有成功ping通,请检查网线和地址的正确性。          (2)假如通过(1)步骤还是存在错误,请运行“ifconfig”命令查看ip,有些用户会提示如下图: 可以看到网络名字不是eth0而是eth2,这个是由于用户手动设置了网络名字的原因,MAC地址被缓存了,配置网络的时候可能会出现“eth0: ERROR while gettinginterface flags: No such device。Network service start”,真正原因是MAC地址缓存了,所以eth0配置的MAC打不到,就是提示以上内容。     解决办法:在虚拟机下执行命令“sudorm /etc/udev/rules.d/70-persistent-net.rules”,然后关闭虚拟机,重启Windows系统,再开启虚拟机重新设置虚拟机IP即可。 2.4.2主机ping Ubuntu虚拟机和开发板 将开发板和主机用网线连接起来,在Windows主机<开始>菜单栏的最下方输入“cmd”,然后按回车进入dos操作界面,分别执行以下两个命令: ping 192.168.0.5(请以实际主机IP作参考) ping 192.168.0.8(请以实际主机IP作参考) 成功ping通提示如下图: 2.4.3虚拟机和Windows主机 在开发板分别执行以下两个命令,Linux系统的ping命令不会像Windows一样自动停止显示,需要执行“Ctrl+C”命令才能停止。 [email protected]:~# ping192.168.0.5 [email protected]:~# ping192.168.0.2          成功ping通提示如下图: 2.5开发板下载虚拟机tftp服务器文件 在开发板/home/tl目录下执行以下命令: [email protected]:/home/tl# tftp-g -r test 192.168.0.5 -g:代表get,下载文件 -r:代表remote,远程服务器 test:远程服务器tftpboot目录下的文件名字 192.168.0.5:远程服务器的ip地址,这里指Ubuntu虚拟机          执行命令后可以在当前目录看到test文件,使用“cat test”命令查看其内容是否和服务器tftpboot目录下的test文件内容一样,结果如下图所示: 3.tftp下载内核到内存 通过tftp在uboot中下载内核文件,可以避免频繁的U盘拷贝和FLASH烧写,特别是用于测试的内核文件。 3.1在uboot中设置加载文件系统参数 在下载内核前,先设置加载文件系统的参数,决定文件系统的加载方式,这样就在下载内核后可以直接启动文件系统。 (1)SD卡启动文件系统设置   先插上已经正常使用的SD卡,在uboot执行以下命令: U-Boot >setenv bootargs console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext3 mem=128M U-Boot >saveenv (2)NFS起根文件系统设置          此设置见《基于ubuntu10.04的nfs开发环境搭建》的“nfs起根文件系统”章节。 3.2在uboot中设置网络环境变量 开发板上电后,按任意键进入uboot命令行,输入以下命令设置虚拟机TFTP服务器的IP地址变量serverip: U-Boot > setenvserverip 192.168.0.5          输入以下命令设置开发板的IP地址变量ipaddr: U-Boot > setenvipaddr 192.168.0.8          另外一个变量ethaddr已经在uboot里面写好了,无需设置。设置会提示无法覆盖,如下图所示:          执行以下命令保存环境变量: U-Boot >saveenv          保存后重新上电就不用再次设置了,提示如下图: 执行以下命令测试网络的连通性: U-Boot > ping192.168.0.5          若提示“host *.*.*.*is alive”说明网络畅通,如下图所示: 3.3在uboot中通过tftp下载内核文件到内存 保证有测内核文件uImage在虚拟机的tftp服务器目录“/home/tl/tftpboot”,如下图所示: 在uboot中输入以下命令下载内核文件: U-Boot > tftpc0700000 uImage c0700000:指定的运行内存地址 uImage:tftp服务器中的内核镜像          成功下载图示如下: 执行“bootm c0700000”命令运行刚才下载的内核文件,结果如下图: 需要上电自动通过tftp下载uImage的客户,可以在uboot里面设置bootcmd参数,设置命令如下: U-Boot > setenvbootcmd 'tftp c0700000 uImage;bootm c0700000' U-Boot > saveenv          操作如下图所示: 重启后就自动进入SD卡或者nfs服务器的文件系统。

上一篇:找工作笔试面试那些事儿(15)---互…
下一篇:【算法】散列表及散列函数的java简单实现

相关文章

相关评论