Ubuntu 10.10下安装TFTP的步骤 tftp-hpa版本

2023-11-19

【背景】
由于想要在tq2440板子上用tftp下载kernel,所以要在自己的PC机的Ubuntu 10.10上安装tftp服务。
所以就去网上找了些教程,但是很悲剧,按照那些教程去操作,结果还都是无法正常运行tftp服务,最后还是从一个外国人的帖子中,最后解决了此问题的。现在记录一下所了解到内容。

截至目前2011-04-04,我用的Ubuntu 10.10,Ubuntu下面关于TFTP的程序,有三种:
1.tftp和tftpd
这个是最早的,最常用的。,其中tftp是client客户端,tftpd是 server 服务器端,d应该指的是daemon。
如果你要从别人的tftp服务器端上传/下载东西,就要用到tftp;如果你为别人提供tftp服务,供别人上传/下载东西,那就要安装tftpd服务程序。
如果安装tftp和tftpd,那么根据附录2说的:“因为tftp是要inetd来控制的,而debian类的 系统,默认是没有安装inetd的,安装一下。” 所以,此处也要安装inetd,但是我这里发现Ubuntu 10.10里面,没有他们说的那个netkit-inetd:
  1. crifan@crifan-ubuntu10:~/develop$ sudo apt-get install netkit-inetd
  2. 正在读取软件包列表... 完成
  3. 正在分析软件包的依赖关系树
  4. 正在读取状态信息... 完成
  5. 软件包 netkit-inetd 是一个由下面的软件包提供的虚拟软件包:
  6. inetutils-inetd 2:1.6-3
  7. openbsd-inetd 0.20080125-4ubuntu2
  8. 请您明确地选择一个来进行安装。

  9. E: 软件包 netkit-inetd 没有可供安装的候选者
复制代码

而只有inetutils-inetd和openbsd-inetd,此处,我自己折腾tftp和tftpd的时候,装的是inetutils-inetd,但是却也一直没弄好,所以此处忽略不说。而openbsd-inetd,是我装的,可以正常使用的。具体方法下面会详细介绍。

2.加强版的tftp: atftp和atftpd
atftp即advanced tftp,加强了一些功能。这里我没用过,不多评价。

3. hpa版本的tftp:tftp-hpa和tftpd-hpa
我最后就是用的这个hpa版本的。
中间折腾过程翻来覆去弄了很多次,最后参考这里:
http://ubuntuforums.org/showthread.php?t=1483618
确定这样是可以安装成功的:

【Ubuntu 10.10下安装TFTP的步骤 tftp-hpa版本
1. 用新立得先去卸载tftp和tftpd(如果你安装的话),tftp-hpa和tftpd-pha(如果你安装的话)
系统 -> 系统管理 -> 新立得软件包管理器,即synaptic,
搜索 tftp,会找到和tftp相关的软件列表。
如果你已经装了tftp和tftpd,那么先用新立得去彻底删除他们。
如果也已经安装了tftp-pha和tftpd-hpa,那么也同样用新立得去彻底删除他们。
(注意,我之前就是用的命令行去装的tftp-hpa和tftpd-hpa,而安装他们的同时会自动卸载掉原先装过的tftp和tftpd,所以,我在新立得里面看到的是已经安装的tftp-hpa和tftpd-hpa,所以要先右键点击,选择彻底删除,然后选择 应用,就可以去彻底删除了。)
2. 用新立得去安装tftp-hpa和tftpd-pha
同上,进入新立得,右键选中tftp-hpa和tftpd-pha,然后安装。
3. 安装openbsd-inetd
(此处搞不清是不是必须要装这个了,不过是反正是装了,现在的tftp是可以工作的,如果你也不确定要不要安装,那就也安装吧。。。)
我是用的命令行去安装的:
  1. crifan@crifan-ubuntu10:~/develop$ sudo apt-get install openbsd-inetd
复制代码

4.建立TFTP根目录及设置访问属性
去建立一个根目录,然后设置对应的访问属性:
  1. mkdir /home/crifan/develop/tftpboot
  2. cd /home/crifan/develop/
  3. chmod 777 tftpboot/
复制代码


其中:
(1)/home/crifan/develop/tftpboot是我的TFTP的根目录,你根据自己情况修改为你自己的根目录。
(2)chmod是去更改tftpboot这个TFTP根目录的访问属性,因为其他tftp 用户需要使用put命令上传 文件的话,那就需要write权限的,所以这里干脆省事,直接chmod 777,添加所有权限(读+写+执行)。

5. 更改配置文件/etc/default/tftpd-hpa
sudo gedit /etc/default/tftpd-hpa
去修改配置文件,修改好后,内容如下:
  1. # /etc/default/tftpd-hpa
  2. RUN_DAEMON="yes"
  3. OPTIONS="-l -s -c /home/crifan/develop/tftpboot"
  4. TFTP_USERNAME="crifan"
  5. TFTP_DIRECTORY="/home/crifan/develop/tftpboot"
  6. TFTP_ADDRESS="0.0.0.0:69"
  7. TFTP_OPTIONS="--secure"
复制代码

其中:
(1)
OPTIONS="-l -s -c /home/crifan/develop/tftpboot"
中的参数含义为:
-l Run the server in standalone (listen) mode, rather than run from inetd. In listen mode, the -t option is ignored, and the -a option can be used to  specify a specific local address or port to listen to.

-a [address][:port]
Specify a specific address and port to listen to when called with the -l option. The default is to listen to the tftp port specified in /etc/services on all local addresses.

-c Allow new files to be created. By default, tftpd will only allow upload of files that already exist. Files are created with default permissions allowing anyone to read or write them, unless the -p or -U options are specified.

-s (决定tftp根目录)Change root directory on startup. This means the remote host does not need to pass along the directory as part of the trans-fer, and may add security. When -s is specified, exactly one directory should be specified on the command line. The use of this option is recommended for security as well as compatibility with some boot ROMs which cannot be easily made to include a directory name in its request.

注意其中的-c, "-c为可创建新文件,若无此参数,put命令则可能出现错误提示,此时只能覆盖原有文件不能创建新文件;"

OPTIONS参数后面跟的是你的TFTP的根目录。
TFTP_USERNAME是用户名,我这里的是"crifan",你根据自己情况修改。
TFTP_DIRECTORY后面也是同样的根目录 "/home/crifan/develop/tftpboot",你根据自己情况修改。

(2)ubuntu10.04下的tftp-hpa配置文件和之前不一样,之前的是类似这种:
  1. #Defaults for tftpd-hpa
  2. RUN_DAEMON="yes"
  3. OPTIONS="-l -c -s /tftpboot"
复制代码

Ubuntu 10.10中安装之后的是这种:
  1. # /etc/default/tftpd-hpa
  2. TFTP_USERNAME="tftp"
  3. TFTP_DIRECTORY="/tftpboot"
  4. TFTP_ADDRESS="0.0.0.0:69"
  5. TFTP_OPTIONS="-l -c -s /tftpboot"
复制代码

而此处上面所用的配置,既有新的也有旧的,具体为何是这样,偶也不太清楚,只是参考上面那人的帖子而已。其他人有兴趣可以自己测试,删除旧的配置后是否同样可以工作。

6.重启tftp服务
  1. crifan@crifan-ubuntu10:~/develop$ sudo service tftpd-hpa restart
  2. tftpd-hpa start/running, process 3907
复制代码
其中:
(1)关于重启 某个服务,之前的Linux(Ubuntu是10.10之前)都是这样操作的:
sudo /etc/init.d/XXX reload
对于inetd来说,就是:
sudo /etc/init.d/inetd reload
现在新的LUbuntu 10.10中,是统一成调用service来操作了:
sudo service XXX restart
其中,启动和停止对应的是start和stop。
(2)记得不要少了sudo,否则“stop: Rejected send message”的错误。
(3)【确认tftp服务是否已经开启】
查看tftp相关进程:
  1. crifan@crifan-ubuntu10:~/develop$ ps aux |grep tftp
  2. root 3826 0.0 0.0 2352 120 ? Ss 14:27 0:00 /usr/sbin/in.tftpd --listen --user crifan --address 0.0.0.0:69 --secure /home/crifan/develop/tftpboot
  3. crifan 3828 0.0 0.0 5628 768 pts/0 S+ 14:27 0:00 grep --color=auto tftp
复制代码

如果能看到像上面的 /usr/sbin/in.tftpd已经启动,就说明tftp服务已经开启了。
此处可以看到:
--listen就是对应的配置文件中的参数 -l
--user crifan就是对应配置文件中的参数 TFTP_USERNAME="crifan"
/home/crifan/develop/tftpboot就是对应的配置文件中的参数 TFTP_DIRECTORY=" /home/crifan/develop/tftpboot"

7.验证tftp是否生效
  1. crifan@crifan-ubuntu10:~/develop$ tftp 192.168.1.101
  2. tftp>get u-boot.bin
  3. tftp>quit
复制代码


其中:
(1)192.168.1.101是我的机子的ip,可以通过ifconfig查得。你此处要改为你自己的机子的IP。当然你也可以直接写127.0.0.1,这个地址始终代表了你的本机IP。
(2)get是tftp的命令,即从tftp服务器中下载获得文件。你可以输入?查看其他命令。常见的命令有get下载文件,put上传文件等等。u-boot.bin是我已经存在在tftp根目录下面的文件。
(3)quit是退出tftp。

【总结】
看着步骤很复杂,实际归纳起来很简单,那就是用新立得synaptic去安装tftp-pha和tftpd-hpa,然后改一下配置,重启一下服务,然后验证一下tftp是否工作即可。
【后续】
经过验证tftp已经生效,然后回到 开发板上就可以用tftp下载文件了:
  1. EmbedSky> tftp 0x30010000 u-boot.bin
  2. dm9000 i/o: 0x20000300, id: 0x90000a46
  3. MAC: 0a:1b:2c:3d:4e:5f
  4. TFTP from server 192.168.1.101; our IP address is 192.168.1.120
  5. Filename 'u-boot.bin'.
  6. Load address: 0x30010000
  7. Loading: T ###############
  8. done
  9. Bytes transferred = 207396 (32a24 hex)
复制代码


【另外】
关于Linux下的图形界面GUI版本的TFTP,网上找到了这个:
tftpgui
http://code.google.com/p/tftpgui/
暂未试用,有机会试试。

【引用】
1. TFTP will not start (command returns a "rejected send message")
http://ubuntuforums.org/showthread.php?t=1483618
2.ubuntu中配置tftp服务
http://hi.baidu.com/wangy0919/blog/item/3808eaa1388bd389471064c2.html
3.Tftpd-hpa
http://wiki.ubuntu.org.cn/Tftpd-hpa
4.ubuntu10.04下的tftp-hpa配置文件不一样了,如何修改阿?
http://forum.ubuntu.org.cn/viewtopic.php?t=265239

转载于:https://blog.51cto.com/tonghuix/1165813

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu 10.10下安装TFTP的步骤 tftp-hpa版本 的相关文章

  • 使用 try {} catch {} 与 if {} else {} 相比有何优势

    我正在从 php 中的普通 mysql 切换到 PDO 并且我注意到测试错误的常见方法是使用 try catch 组合而不是 if else 组合 该方法的优点是什么 我可以使用一个 try catch 块而不是多个嵌套的 if else
  • 将文件从 Dropbox 下载到服务器

    我想从 Dropbox 下载文件 并需要代表 Dropbox 用户将其保留在我的服务器中 我尝试使用curl 和file get contents 但未能成功 我需要使用 dropbox 的任何 api 方法吗 我可以从浏览器下载该文件 但
  • 阅读 Google 文档电子表格

    是否可以使用 PHP 从 Google Docs 电子表格中提取行 在 SQL 中我会使用类似的东西 SELECT FROM table WHERE field value LIMIT 1 有没有办法做到这一点 我听说你应该使用 Zend
  • 从 PHP SoapServer 返回 PHP 数组

    我对 Soap 的 创建服务端 还比较陌生 所以提前对我正在思考的任何术语表示歉意 是否可以从使用 PHP 的 SoapServer 类设置的远程过程 Soap 服务返回 PHP 数组 我有一个 WSDL 通过盲目遵循教程构建 部分看起来像
  • 如何在购物车中显示自定义属性(Magento)

    我尝试了很多东西 但没有一个起作用 我想我可以在产品页面上获取自定义属性 但我想知道 如何在购物车页面中获取它们 属性只是简单的文字 item gt getProduct gt load 将从数据库重新加载所有产品数据 虽然这可行 但请记住
  • PHP 邮件结果错误:“标头丢失”

    我已经使用 php 邮件表单有一段时间了 现在它无法在新网站上运行 出现以下错误结果 PHP 警告 mail function mail sendmail from 未在 php ini 中设置 或第 16 行 E home mypagef
  • 在 Woocommerce 存档页面中显示产品星级评定和价格下方的计数 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在 woocommerce 存档页面中 我想将评级移至价格下方 那可能吗 我怎样才能做到呢 这是我想要的 任何帮助表示赞赏 My 网站
  • PHP - 从动态添加的 html 表格行获取输入

    我在这里设置了以下小提琴Fiddle https jsfiddle net fqugd7vL 7 如您所见 我可以通过单击 添加行 按钮来添加输入 添加的所有输入都有唯一的 ID 和名称 问题是 我不能只做类似的事情 actionInput
  • 使用 MySQL 的 CURDATE() 或 PHP 的 date() 更快?

    使用mysql查询是不是更快 SELECT CURDATE as today 或 PHP 语句 curdate date Y m d 同样的答案是否适用于使用date VS MySQL 的NOW and CURTIME 如果您只是执行查询以
  • 逗号分隔的字符串到数组

    我正在寻找采用单个变量的最简单方法 例如 variable left middle right 并将其写入array 在逗号处分开 array explode variable
  • 如何使用 Codeigniter 从另一个视图中加载视图文件,而无需通过控制器?

    我正在努力寻找此问题的解决方案 我需要从另一个视图中加载视图 我知道 通常我只需要这样做 但这一次 文件路径被传递到数据文件标记的属性 我有 a href 实际上 这是由 JavaScript 函数用来自行加载视图的 因此 当这样做时 它会
  • 如何获取laravel 5.4中的所有头信息

    当我打印时 echo pre print r getallheaders 它给出输出 Host gt abc com User Agent gt Mozilla 5 0 Macintosh Intel Mac OS X 10 12 rv 5
  • 使用 Symfony 3 / Doctrine 进行属性形式的一对多对一

    问题是这样的 我有一个包含 3 个类的模型 person 人员 工作 job 一个人可以有多个工作 任何工作与人的关系都可以有 date start 属性 date end 和 comment 因此 我使用持有这些属性的可连接 person
  • 节省页面加载时间的提示[重复]

    这个问题在这里已经有答案了 我的问题 削减那些不必要的 kb 并使页面加载速度更快的最佳方法是什么 全部是什么优化实践 编码实践 在js php中 如果执行可以使您的页面更轻 为什么我问这个 我读了这篇关于 jquery js 与 jque
  • 如何在PHP中创建后台进程

    我想在 PHP 中创建后台进程 我正在尝试在客户端使用 AJAX 调用并在服务器端使用 PHP 来尝试所有这些 实际上我正在废弃很多网址 为此 我在文本区域中列出了所有剪贴簿网址 并使用 POST 方法提交表单 表单操作将捕获 POST 数
  • 回显并打印声明

    假设有以下代码
  • 按正确的顺序在字符串数组中查找常见字符

    我花了几天时间研究一个函数 以正确的顺序获取字符串数组中的常见字符 以创建通配符 这是一个解释我的问题的例子 我做了大约3个函数 但是当每个字母的绝对位置不同时 我总是遇到一个错误 我们假设 是 通配符 Array 0 gt 48ca135
  • 使用 Laravel 和 Eloquent 从表中选择全部

    我正在使用 Laravel 4 设置我的第一个模型 以从名为的表中提取所有行posts 在标准 MySQL 中我会使用 SELECT FROM posts 如何在 Laravel 4 模型中实现这一目标 我的完整模型源代码如下
  • 在 PHP 数组定义中显示重复键警告

    下面的代码是否可以得到警告 error reporting E ALL s array a gt 1 a gt 1 var export s 你唯一的希望 除了count 你自己 是你的编辑足够聪明 可以突出显示拼写错误 此屏幕截图来自 P
  • 如何配置 nginx 重写规则以使 CakePHP 在 CentOS 上运行?

    大家好 请帮帮我 我正在尝试在运行 Nginx 和 Fact CGI 的 Centos 服务器上设置 cakephp 环境 我已经在服务器上运行了一个 WordPress 站点和一个 phpmyadmin 站点 因此我已经正确配置了 PHP

随机推荐

  • 深度学习要学多久?半年能入门深度学习吗?

    深度学习的学习时间因个人背景 目标和学习方法而异 不同人可能需要不同的时间来掌握深度学习 深度学习要学多久 通常情况下 入门深度学习可能需要几个月的时间 如果你已经有相关背景知识 学习进度可能会更快 以下是一些因素 可以影响学习深度学习所需
  • 解一元二次方程-Java语言实现

    前言 高考完的那个暑假我就开始自学C语言 那时候通过看视频和 C primer plus 写了一个解一元二次方程的程序 从此走上了吊打大学同班同学的路 但是那次是用C语言写的 如今白云苍狗 我已经不是曾经的那个我了 但我还是一如既往的废物
  • Java的内省技术

    什么是内省 在计算机科学中 内省是指计算机程序在运行时 Run time 检查对象 Object 类型的一种能力 通常也可以称作运行时类型检查 不应该将内省和反射混淆 相对于内省 反射更进一步 是指计算机程序在运行时 Run time 可以
  • 大数据面试-03-大数据工程师面试题

    2 13 简述hadoop的调度器 FIFO schedular 默认 先进先出的原则 Capacity schedular 计算能力调度器 选择占用最小 优先级高的先执行 依此类推 Fair schedular 公平调度 所有的job具有
  • 三十三.二叉树的创建、后序遍历、深度统计。

    include
  • 【视频编码学习】VTM15.0编译运行

    VTM版本 15 0 操作系统 Win10 x64位 IDE Visual Studio 2019 编译器 cmake 利用VS2019运行VTM15 0 前言 一 下载VTM15 0 二 下载安装cmake 1 下载cmake并安装 2
  • Java中的IO流如何理解——精简

    目录 引言 缓冲流 字节缓冲流 字符缓冲流 转换流 字符输入转换流 字符输出转换流 序列化和反序列化 对象序列化 对象反序列化 打印流 Properties 引言 通过前面的简单学习 我们已经能够大致了解了关于文件的操作 但是能够明显感受到
  • mybatis中pagehelper分页、排序

    原文链接 https blog csdn net liuyuanjiang109 article details 78955881 在springboot 结合mybatis 时用到pagehelper 分页工具 并进行分页 排序 其git
  • 安装 mysqldb for python

    1 安装 ssetuptools wget http pypi python org packages 2 6 s setuptools setuptools 0 6c9 py2 6 egg md5 ca37b1ff16fa2ede6e19
  • 常用GIT命令速览,现学也能登堂入室

    系列文章目录 手把手教你安装Git 萌新迈向专业的必备一步 GIT命令只会抄却不理解 看完原理才能事半功倍 常用GIT命令速览 现学也能登堂入室 系列文章目录 一 GIT HELP 1 命令文档 2 简要说明 二 配置 config 1 配
  • minio上传文件报错io.minio.errors.InvalidResponseException: Non-XML response from server

    上传文件报错io minio errors InvalidResponseException Non XML response from server 开发中上传文件到minio遇到问题 上传小于1M的文件成功 上传大于1M的文件失败 检查
  • 《算法图解》第九章动态规划学习心得

    1 背包问题 动态规划先解决子问题 再逐步解决大问题 每个动态规划都从一个网格开始 背包问题的网格如下 网格最初是空的 动态规划就是逐步将网格填满 吉他行 第一个单元格表示背包的容量为1磅 吉他的重量也是1磅 这意味着它能装入背包 因此这个
  • list类型的用法(含列表合并)

    编程中对于链表的处理通常都是比较麻烦的 C 的STL库中提供了list类型 大大方便了我们对链表的处理 不熟悉的小伙伴们快来了解 一定能为你的编程带来益处 list是双向带头循环链表 不同于之前讲过的vector 它不支持随机访问 即下标访
  • python提取两个引号中的内容,怎样用 Python 提取不在双引号的内容?

    三叔2016 11 11 13 30 281楼 import re a Peter d 13tsddgjlsv gt gt bgeghg n desfegeivm x wb rhwrohjow dddeuvb n dwegjosnngwei
  • C语言中的静态函数

    关于C中的static类型的函数是与extern类型相对的 也就是说函数的调用方式并没有改变 只通过这个关键字影响了linker的行为 下面在具体说说他们的区别 extern都知道 是指该函数在整个工程中可见 而static是指只在当前文件
  • STL : vector 矢量容器

    目录 Vector Capacity Elements access Modifiers Allocator Non member Notice overloads Template specializations Vector inclu
  • 业务流程图怎么画?3步+8张案例,5分钟教你快速上手!

    业务流程图能很好地帮助我们梳理业务 高效表达需求 尤其是产品经理在梳理业务时 经常会用到业务流程图 业务流程图会在产品经理画原型图前 帮助梳理产品业务流程 避免做无用功 今天从业务历程图的基本介绍 常用场景和绘制方法三方面介绍 让大家对业务
  • C11头文件声明了创建和管理线程,信号,条件变量的函数

    作者Danny Kalev 是通过以色列系统分析师协会认证的系统分析师 并且是专攻C 的软件工程师 Kalev 写了多本C 的书籍 同时给不同的软件开发者站点投搞C 文章 他是C 标准委员会的成员 还获得了通用语言学的硕士学位 原始鏈接 h
  • TypeError: can only concatenate list (not "str") to list

    类型错误 只能将list类型和list类型联系起来 而不是str类型 出现上述类型错误 判断一下需要连接的两个变量的类型 如果是将str类型加入list用append添加 如果是移除用pop或remove
  • Ubuntu 10.10下安装TFTP的步骤 tftp-hpa版本

    背景 由于想要在tq2440板子上用tftp下载kernel 所以要在自己的PC机的Ubuntu 10 10上安装tftp服务 所以就去网上找了些教程 但是很悲剧 按照那些教程去操作 结果还都是无法正常运行tftp服务 最后还是从一个外国人