Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载

简介: Linux 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为 69。


在 U-Boot 中也支持 TFTP 协议,可以通过 tftp 命令从服务端下载文件。服务端可以是 Linux,也可以是 Windows,只要支持 TFTP 服务就可以。


本文介绍如何在 Linux(虚拟机 Ubuntu 18.04) 下搭建 TFTP 服务,并实现在 U-Boot 中使用 tftp 命令下载 Linux 内核镜像文件到开发板 RAM 中。


搭建 TFTP 服务

  • 打开终端,执行命令安装 tftp-hpa 和 tftpd-hpa:
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
  • 在用户目录下新建 TFTP 工作目录,并赋予权限:
mkdir /home/alpha/tftpboot
chmod 777 /home/alpha/tftpboot

  • 新建文件 /etc/xinetd.d/tftp,填入以下内容:
server tftp
{
    socket_type = dgram
    protocol = udp
    wait = yes
    user = root
    server = /usr/sbin/in.tftpd
    server_args = -s /home/alpha/tftpboot/
    disable = no
    per_source = 11
    cps = 100 2
    flags = IPv4
}

  • 启动 tftp 服务:
sudo service tftpd-hpa start
  • 修改 /etc/default/tftpd-hpa 文件:
# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/alpha/tftpboot/"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s --secure"

  • 重启 tftp 服务:
sudo service tftpd-hpa restart

文件下载

  • 将 Linux 内核镜像文件拷贝到 TFTP 工作目录,并赋予权限:


  • 配置 U-Boot 网络相关的环境变量,注意服务端 IP 要设置正确,且开发板 IP 和服务端 IP 要在同一网段下:
setenv ipaddr 192.168.0.232      # U-Boor IP 地址
setenv ethaddr 00:aa:bb:cc:dd:ef # MAC 地址
setenv gatewayip 192.168.0.1     # 网关地址
setenv netmask 255.255.255.0     # 子网掩码
setenv serverip 192.168.0.120    # 服务器 IP 地址
saveenv                        # 保存环境变量

  • 保证开发板能够 ping 通服务端 IP:

  • 使用 tftp 命令下载文件,80800000 为 zImage 在 RAM 中的存放地址:
tftp 80800000 zImage


  • 通过终端打印的日志可以看到下载进度、传输速率等相关信息:

更多内容

  • CSDN博客:@Hello阿尔法
  • 哔哩哔哩:@Hello阿尔法
  • 知乎:@Hello阿尔法




相关文章
|
30天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
54 14
Linux 10 个“who”命令示例
|
9天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
32 8
|
18天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
104 20
|
19天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
47 7
|
2月前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
8月前
|
Linux
linux中服务管理
在Linux服务管理中,从传统的System V init到Upstart,再到广泛采用的systemd,管理方式不断发展。systemd以其强大的功能和依赖解决成为现代Linux的核心。`systemctl`是管理服务的关键命令,如启动(`start`)、停止(`stop`)、重启(`restart`)服务及设置开机启动(`enable`)或取消(`disable`)。了解和服务管理,特别是systemd和`systemctl`的使用,对系统管理员至关重要。其他如xinetd用于控制网络服务,而特定环境下有OpenRC等工具。
65 2
|
安全 Ubuntu 网络协议
Linux中的服务管理
Linux系统可以同时运行数百个任务。其中大多数都属于操作系统环境的组成部分,不过可能也会有那么一两个你不需要的**守护进程**。有3种可用于启动守护进程和服务的工具,Linux发行版支持其中任意一种。传统的SysV系统使用/etc/init.d中的脚本。较新的systemd守护进程除了使用/etc/init.d之外,还用到了systemctl调用。还有些发行版使用的是upstart,配置脚本保存在/etc/init中。systemd如今已经取代了SysVinit系统。upstart是由Ubuntu开发并采用的,但是在14.04版中,已经改成了systemd。
161 3
|
Ubuntu 关系型数据库 MySQL
【Linux进阶篇】启动流程和服务管理
【Linux进阶篇】启动流程和服务管理
221 0
|
Linux 网络安全
Linux服务管理
1.service service命令,顾名思义,就是用于管理Linux操作系统中服务的命令。 这个命令不是在所有的linux发行版本中都有。主要是在redhat、fedora、mandriva和centos中。 查看所有服务当前的运行状态:
493 0
Linux服务管理
|
存储 关系型数据库 MySQL
Linux:1.进程介绍+2.Linux父子进程+3.终止进程kill和killall+4.查看进程树pstree+5.service服务管理
Linux:1.进程介绍+2.Linux父子进程+3.终止进程kill和killall+4.查看进程树pstree+5.service服务管理
194 0
Linux:1.进程介绍+2.Linux父子进程+3.终止进程kill和killall+4.查看进程树pstree+5.service服务管理