news 2026/4/16 13:43:08

linux开发——tftp配置与使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
linux开发——tftp配置与使用

配置

  1. window 端
    window 端直接下载相关应用程序安装即可。

  2. linux 端

常用于传输内核、设备树、根文件系统

1. 安装 TFTP 服务
sudoaptinstalltftpd-hpa
2. 配置 TFTP
sudonano/etc/default/tftpd-hpa

修改为:

TFTP_USERNAME="tftp"TFTP_DIRECTORY="/var/lib/tftpboot"TFTP_ADDRESS="0.0.0.0:69"TFTP_OPTIONS="--secure"
3. 创建目录并设置权限
sudomkdir-p /var/lib/tftpbootsudochmod777/var/lib/tftpboot
4. 启动服务
sudosystemctl restart tftpd-hpasudosystemctlenabletftpd-hpa

开发板端使用

命令行方式(开发板Linux环境)
# 从 TFTP 服务器获取文件tftp -g -r filename192.168.0.50# 示例tftp -g -r uImage192.168.0.50
U-Boot 环境
# 在 U-Boot 命令行tftp 0x30000000 uImage

快速传文件

# Ubuntu 上复制文件到 TFTP 目录cpmyfile.bin /var/lib/tftpboot/# 开发板上获取tftp -g -r myfile.bin192.168.0.50

TFTP 使用指南


📤 Ubuntu 端:放置文件

方法1:直接复制文件到 TFTP 目录

# 复制任何文件到 TFTP 目录cp/path/to/your/file /home/forlinx/tftp/# 例如:cpmyapp /home/forlinx/tftp/cpkernel.img /home/forlinx/tftp/cprootfs.tar.gz /home/forlinx/tftp/# 查看 TFTP 目录内容ls-lh /home/forlinx/tftp/

方法2:在 TFTP 目录下编译或生成文件

# 直接在 TFTP 目录工作cd/home/forlinx/tftp/# 编译程序gcc -o myapp myapp.c# 或者直接编辑文件vimtest.txt

📥 开发板端:获取文件

基本命令格式

tftp -g -r<文件名><服务器IP>

参数说明:

  • -g: get,下载文件
  • -r: remote,指定远程文件名
  • -l: local,指定本地保存的文件名(可选)

💡 实际使用例子

例子1:传输应用程序

Ubuntu 端:

# 编译你的程序gcc -o hello hello.c# 复制到 TFTP 目录cphello /home/forlinx/tftp/

开发板端:

# 下载程序tftp -g -r hello192.168.0.50# 添加执行权限chmod+x hello# 运行程序./hello

例子2:传输内核镜像

Ubuntu 端:

# 复制内核镜像cp/path/to/uImage /home/forlinx/tftp/

开发板端(Linux 环境):

# 下载到 /tmp 目录cd/tmp tftp -g -r uImage192.168.0.50# 查看文件ls-lh uImage

开发板端(U-Boot 环境):

# 在 U-Boot 命令行tftp 0x30000000 uImage

例子3:传输配置文件

Ubuntu 端:

# 创建配置文件echo"server_ip=192.168.0.50">/home/forlinx/tftp/config.txtecho"port=8080">>/home/forlinx/tftp/config.txt

开发板端:

# 下载配置文件tftp -g -r config.txt192.168.0.50# 查看内容catconfig.txt

例子4:传输压缩包

Ubuntu 端:

# 打包文件tar-czf project.tar.gz /path/to/project/# 复制到 TFTPcpproject.tar.gz /home/forlinx/tftp/

开发板端:

# 下载tftp -g -r project.tar.gz192.168.0.50# 解压tar-xzf project.tar.gz# 查看ls-lh

🎯 高级用法

1. 指定本地文件名

# 下载后保存为不同的名字tftp -g -l my_local_name -r remote_file192.168.0.50

2. 下载到指定目录

# 先切换到目标目录cd/tmp tftp -g -r filename192.168.0.50# 或使用绝对路径tftp -g -l /tmp/filename -r filename192.168.0.50

3. 显示详细信息

# 使用 -v 参数查看传输进度tftp -v -g -r filename192.168.0.50

4. 批量下载

创建脚本download_all.sh

#!/bin/bashFILES="uImage dtb.dtb rootfs.tar.gz"forfilein$FILES;doecho"正在下载$file..."tftp -g -r$file192.168.0.50if[$?-eq0];thenecho"✓$file下载成功"elseecho"✗$file下载失败"fidone

运行:

chmod+x download_all.sh ./download_all.sh

🔧 交互式使用(不推荐,但有时候需要)

# 启动 TFTP 客户端tftp192.168.0.50# 进入交互模式tftp>get filename# 下载文件tftp>put filename# 上传文件(如果服务器允许)tftp>status# 查看状态tftp>quit# 退出

⚡ 实战流程示例

场景:开发 ARM 程序并部署到开发板

第1步:在 Ubuntu 交叉编译

# 交叉编译(假设已安装交叉工具链)arm-linux-gnueabihf-gcc -o myapp myapp.c# 查看编译结果filemyapp# 应该显示:myapp: ELF 32-bit ... ARM ...

第2步:放到 TFTP 目录

cpmyapp /home/forlinx/tftp/

第3步:开发板下载

# 在开发板上执行cd/tmp tftp -g -r myapp192.168.0.50chmod+x myapp ./myapp

第4步:修改代码后重复

# Ubuntu 上修改代码vimmyapp.c# 重新编译arm-linux-gnueabihf-gcc -o myapp myapp.c# 覆盖旧文件cpmyapp /home/forlinx/tftp/# 开发板上重新下载(会覆盖)tftp -g -r myapp192.168.0.50 ./myapp

📊 查看传输状态

Ubuntu 端监控

# 实时查看 TFTP 访问日志sudotail-f /var/log/syslog|greptftp# 查看哪些文件被访问sudojournalctl -u tftpd-hpa -f

检查文件是否存在

# 列出所有可下载的文件ls-lh /home/forlinx/tftp/

❌ 常见错误及解决

错误1:文件不存在

Error code 1: File not found

解决:

# 检查文件是否在 TFTP 目录ls/home/forlinx/tftp/filename# 确认文件名大小写# TFTP 对文件名大小写敏感!

错误2:权限被拒绝

Error code 2: Access violation

解决:

# 修改文件权限sudochmod644/home/forlinx/tftp/filename# 或修改整个目录sudochmod-R755/home/forlinx/tftp/

错误3:连接超时

Transfer timed out

解决:

# 1. 检查网络连通性ping192.168.0.50# 2. 检查服务是否运行sudosystemctl status tftpd-hpa# 3. 检查防火墙sudoufw allow69/udp

🚀 快速测试命令

完整测试流程:

# === Ubuntu 端 ===# 创建测试文件echo"Hello from TFTP">/home/forlinx/tftp/test.txt# 查看文件cat/home/forlinx/tftp/test.txt# === 开发板端 ===# 下载测试文件tftp -v -g -r test.txt192.168.0.50# 验证内容cattest.txt# 应该显示:Hello from TFTP

📝 实用技巧

技巧1:创建软链接

# 不用每次都复制文件到 TFTP 目录ln-s /path/to/your/project /home/forlinx/tftp/project# 开发板直接访问tftp -g -r project/myapp192.168.0.50

技巧2:设置别名

~/.bashrc添加:

aliastftp-put='cp $1 /home/forlinx/tftp/'aliastftp-list='ls -lh /home/forlinx/tftp/'

使用:

source~/.bashrc tftp-put myapp# 快速复制到 TFTPtftp-list# 快速查看

技巧3:自动化脚本

创建deploy.sh

#!/bin/bash# 编译并部署到 TFTPecho"编译中..."arm-linux-gnueabihf-gcc -o myapp myapp.cif[$?-eq0];thenecho"编译成功,部署到 TFTP..."cpmyapp /home/forlinx/tftp/echo"✓ 可以从开发板下载了: tftp -g -r myapp 192.168.0.50"elseecho"✗ 编译失败"fi

总结:标准工作流程

# 1. Ubuntu:准备文件cpyour_file /home/forlinx/tftp/# 2. 开发板:下载文件tftp -g -r your_file192.168.0.50# 3. 开发板:使用文件chmod+x your_file# 如果是可执行文件./your_file# 运行

就是这么简单!🎉

需要其他使用场景的示例吗?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:35:44

模型版本管理:TensorFlow Model Registry设计方案

模型版本管理&#xff1a;TensorFlow Model Registry设计方案 在现代AI系统的生产实践中&#xff0c;一个常被忽视却极具破坏性的问题是——“线上跑的到底是谁训练的那个模型&#xff1f;” 这听起来像一句玩笑&#xff0c;但在多团队协作、高频迭代的环境中&#xff0c;答案往…

作者头像 李华
网站建设 2026/4/8 13:59:45

WasmEdge边缘运行时支持TensorFlow模型尝试

WasmEdge边缘运行时支持TensorFlow模型尝试 在智能制造车间的边缘网关上&#xff0c;一台摄像头每秒捕捉数百帧产品图像&#xff0c;系统需要在20毫秒内判断是否存在表面缺陷。若将数据传至云端推理&#xff0c;仅网络延迟就可能超过100毫秒——这正是传统AI部署模式在实时性要…

作者头像 李华
网站建设 2026/4/16 13:42:18

面试必问:请你设计一个自动化测试框架

一、框架设计核心理念 1.1 黄金三角原则 可维护性&#xff1a;模块化设计&#xff08;如Page Object模式&#xff09;降低维护成本 扩展性&#xff1a;插件化架构支持API/Web/移动端等多协议扩展 鲁棒性&#xff1a;智能等待机制异常熔断设计保障稳定性 1.2 效能优化矩阵 …

作者头像 李华
网站建设 2026/4/16 13:35:36

ES8.13.4数据类型简介

在Elasticsearch 8.13.4的世界里&#xff0c;如果说索引是一座宏伟的图书馆&#xff0c;那么Mapping&#xff08;映射&#xff09;就是这座图书馆的DNA&#xff0c;而数据类型则是构成DNA的碱基对。很多开发者在开发环境中习惯依赖ES的“动态映射”&#xff0c;让系统像无头苍蝇…

作者头像 李华
网站建设 2026/4/16 13:41:57

收藏!金融人跨界AI智能体开发全攻略,小白/程序员入门大模型必看

本文的主人公&#xff0c;是一位在金融领域深耕十余年的资深从业者。近两年来&#xff0c;AI技术迎来井喷式爆发&#xff0c;他所在的金融机构也顺势布局智能体研发&#xff0c;借助AI技术实现风控数据分析自动化、客户需求智能响应等核心业务升级。这场行业变革&#xff0c;让…

作者头像 李华
网站建设 2026/4/15 23:34:44

隐私保护新方案:TensorFlow.js本地推理优势分析

隐私保护新范式&#xff1a;TensorFlow.js 如何重塑前端智能 在医疗应用中上传病历图像时&#xff0c;你是否曾犹豫过&#xff1f;在使用在线语音助手时&#xff0c;有没有担心过录音被传到某个遥远的数据中心&#xff1f;这些疑虑并非空穴来风。随着 AI 渗透进日常生活的每个角…

作者头像 李华