news 2026/7/22 6:11:23

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/7/14 13:16:06

【神经网络基础】-深度学习框架学习指南

目录 &#x1f4da; 图标章节简介快速跳转&#x1f9e0;一、核心概念&#xff1a;什么是深度学习框架&#xff1f;解释深度学习框架的基础定义与核心作用。点击直达⚙️二、框架详解&#xff1a;四大主角登场逐一介绍TensorFlow、PyTorch、Keras及PaddlePaddle。点击直达⚔️三…

作者头像 李华
网站建设 2026/7/14 10:25:38

‌跨国产品的测试流程:兼顾全球化与本地化需求

在全球数字化浪潮下&#xff0c;跨国软件产品&#xff08;如电商平台或企业级应用&#xff09;的测试不再是简单功能验证&#xff0c;而是涉及文化、语言、法规等多维度平衡。软件测试从业者必须构建高效流程&#xff0c;确保产品在纽约、东京或孟买用户手中都无缝运行。本文从…

作者头像 李华
网站建设 2026/7/14 11:37:45

游戏行业敏捷测试流程:版本频繁交付下的质量保障

敏捷浪潮下的质量守卫战 当前游戏行业迭代周期已压缩至1-2周/版本&#xff08;数据来源&#xff1a;2025全球游戏开发白皮书&#xff09;&#xff0c;传统瀑布式测试模型崩溃率高达73%。本文针对多平台适配、玩法快速验证、线上热修复等六大核心痛点&#xff0c;构建基于风险矩…

作者头像 李华
网站建设 2026/7/18 8:50:33

低代码平台上的测试流程:机遇与限制

在数字化转型加速的2025年&#xff0c;低代码平台&#xff08;Low-Code Development Platforms, LCDPs&#xff09;已成为软件开发的主流工具&#xff0c;通过可视化界面和预置组件简化应用构建。然而&#xff0c;对于软件测试从业者而言&#xff0c;这一变革既是机遇也是挑战。…

作者头像 李华
网站建设 2026/7/17 1:08:54

自动化流水线:TensorFlow Extended (TFX) 全组件解析

TFX 全链路解析&#xff1a;如何构建工业级机器学习流水线 在现代 AI 工程实践中&#xff0c;一个模型从实验到上线的旅程远比“训练一下然后部署”复杂得多。数据是否干净&#xff1f;特征处理逻辑在训练和推理时是否一致&#xff1f;新模型真的比旧的好吗&#xff1f;这些问题…

作者头像 李华
网站建设 2026/7/14 18:03:46

小白如何快速从 0 到 1 搭建个人网络安全实验室?从零基础入门到精通,收藏这一篇就够了!

从 0 到 1 搭建个人网络安全实验室&#xff1a;适合学生和新手从业者的低成本方案 对想入门网络安全的学生和转行从业者来说&#xff0c;“缺实战环境” 是最大痛点 —— 要么担心扫真实网站违规&#xff0c;要么觉得买服务器、设备太贵。其实不用花一分钱&#xff0c;用电脑装…

作者头像 李华