当前位置: 首页 > article >正文

Deepin V23 / 统信UOS 下安装与配置 tftp

几个月前,我将开发系统从 ubuntu 切换到 Deepin,当时写过一篇文章《使用国产操作系统作为开发系统》。几个月下来,没有感觉有什么不适应,Ubuntu 能做的事情,在 Deepin 上都能做。而且有 UOS 应用商店的加持,很多 Windows/Linux 应用程序,可以直接从应用商店安装,不需要自己去配置安装,所以总体感觉比 Ubuntu 用得更顺手一些。

昨天有个朋友在《统信UOS / Deepin系统任务栏卡死解决方法》这篇文章下留言:

我本来想用deepin v23做工作机的,结果连安装个tftp服务都要烧脑,果断换回Ubuntu 24.04.1了

当时我就回复,安装 tftp 不就是一条命令的事吗?

2305881d5c338e22f10fc3a4bc2b33d2.png

没想到,打脸了。今天有空,在家尝试了一把,使用熟知的命令:

(base) alex@alex-deepin-os:~$ sudo apt install tftpd-hpa
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成           
没有可用的软件包 tftpd-hpa,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到

E: 软件包 tftpd-hpa 没有可安装候选
(base) alex@alex-deepin-os:~$ sudo apt install tftpd
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成           
E: 无法定位软件包 tftpd
(base) alex@alex-deepin-os:~$ sudo apt install tftp-hpa
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成           
E: 无法定位软件包 tftp-hpa
(base) alex@alex-deepin-os:~$ sudo apt install tftp
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成           
E: 无法定位软件包 tftp

Deepin V23 的仓库中确实没有 tftp 相关的包,不是一个安装命令就能搞定的事。

但作为一名程序员,怎么可能止步如此呢?当然是继续找出答案啦。

在开始之前,先简单介绍一下 tftp。

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是一种简单的文件传输协议,它很轻量。大众可能更熟悉 FTP 或 SFTP,TFTP 则是程序员用得比较多,比如烧写板子的固件或操作系统。

印象中,Debian 的 packages 中有 tftp 的包,没理由 Deepin 没有。所以,我就去 deepin 的包列表网站去找是否有 deb 包。结果一查看,真的有。

43735d2d66fc5ebe30a4bdb3f0b19058.png

但这个包并没有在 Deepin V23 的仓库中,因为 Deepin V23 的官方源如下:

$ cat /etc/apt/sources.list
## Generated by deepin-installer
deb https://community-packages.deepin.com/beige/ beige main commercial community
#deb-src https://community-packages.deepin.com/beige/ beige main commercial community

为什么 tftp 的包没有放在 Deepin V23 的仓库中?我猜想的原因是 Deepin V23 开始支持 arm、龙芯、RISC-V 架构,但这个包只 build 出 x86 架构的,还没有构建出其它架构的包,所以就没有加入到 Deepin 的源中。

如果你只是在 x86 架构的 Deepin 系统上安装 tftp,接下来就简单了。

第 1 步:安装 tftpd 和 tftp

下载 tftpd-hpa_5.2+20150808-1+b1_amd64.deb、tftp-hpa_5.2+20150808-1+b1_amd64.deb 包,双击安装。

安装之后,检查 tftp 服务是否启动:

(base) alex@alex-deepin-os:~$ sudo systemctl status tftpd-hpa.service
请输入密码:
验证成功
● tftpd-hpa.service - LSB: HPA's tftp server
     Loaded: loaded (/etc/init.d/tftpd-hpa; generated)
     Active: active (running) since Sun 2024-10-20 15:24:27 CST; 2min 23s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 12333 ExecStart=/etc/init.d/tftpd-hpa start (code=exited, status=0/SUCCESS)
      Tasks: 1 (limit: 38286)
     Memory: 688.0K (peak: 1.7M)
        CPU: 63ms
     CGroup: /system.slice/tftpd-hpa.service
             └─12346 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /srv/tftp

10月 20 15:24:27 alex-deepin-os systemd[1]: Starting tftpd-hpa.service - LSB: HPA's tftp server...
10月 20 15:24:27 alex-deepin-os tftpd-hpa[12333]: Starting HPA's tftpd: in.tftpd.
10月 20 15:24:27 alex-deepin-os systemd[1]: Started tftpd-hpa.service - LSB: HPA's tftp server.

第 2 步:配置 TFTP 服务器

安装完成后,需要配置位于 /etc/default/tftpd-hpa 的 TFTP 服务器主配置文件。

sudo vi /etc/default/tftpd-hpa 在编辑器中,修改 TFTP_DIRECTORY 的值,指定 tftp 服务器存放文件的目录,比如指定为 /var/lib/tftpboot:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

第 3 步:创建 tftp 文件目录

配置完成后,创建共享目录并设置允许用户访问所需的权限。

sudo mkdir -p /var/lib/tftpboot
sudo chown -R nobody:nogroup /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot

为了避免权限问题,这里给了完全的读写权限。在实际工作中,可能只是用作固件下载,可以给只读权限,这个取决于需求。

然后重启 tftp 服务器:

sudo systemctl restart tftpd-hpa

第 4 步:测试 tftp 服务

前面安装的 tftp-hpa_5.2+20150808-1+b1_amd64.deb 实际上是 tftp 的客户端。所以,可以在命令行中使用 tftp 命令连接到服务器,后面跟服务器的 IP 地址:

tftp 192.168.3.202

连接成功后显示 tftp> 提示符。可以输入 tftp 命令,比如 status、get、put 等。

(base) alex@alex-deepin-os:~/Downloads$ tftp 192.168.3.202
tftp> status
Connected to 192.168.3.202.
Mode: netascii Verbose: off Tracing: off Literal: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds

下载文件用 get 命令,比如:

tftp> get tecmint.info
Error code 1: File not found
tftp> get 2.png
tftp>

上传文件使用 put 命令:

tftp> put tecmint.txt

tftp 设计得相当简单,没有很大的提示。如果你在烧写固件中碰到错误,可以尝试一下将配置文件中的

TFTP_OPTIONS="--secure"

改成空试试。

小结

由于 Deepin V23 仓库中没有包含 tftp 相关包,所以在安装上会有点小麻烦。但这点小麻烦在程序员眼里不知一提。在下载了安装包后,后面的安装配置就相当简单。

Deepin V23 仓库中没有 tftp 的包,可能是由于缺少多架构支持,加上 tftp 确实比较使用的人很少,所以没有包含在官方仓库中。希望在后面的更新中可以包含进来。


http://www.kler.cn/news/366247.html

相关文章:

  • Segugio:一款针对恶意软件的进程执行跟踪与安全分析工具
  • 算法的学习笔记—数组中只出现一次的数字(牛客JZ56)
  • 企业数字化转型建设方案(数据中台、业务中台、AI中台)
  • 基于Python+SQL Server2008实现(GUI)快递管理系统
  • 艾默生Ovation伺服驱动器电子模块(1C31199G03)
  • 【AI服务器】全国产PCIe 5.0 Switch SerDes 测试和分析,以11槽PCIe GPU底板(PCIe 4.0/5.0)为例(二)
  • 小米商城全栈项目
  • 自学Python不知道看什么书?10本Python经典好书(附pdf),看完少走一半弯路
  • Nginx处理跨域请求(CORS)
  • 从 Web2 到 Web3:区块链技术的演进与未来趋势
  • PostgreSQL两节点用keepalived实现主备的高可用架构
  • 最新版本jdbcutils集成log4j做详细sql日志、自动释放连接...等
  • PyTorch model.train()和model.eval()介绍
  • 如何使用的是github提供的Azure OpenAI服务
  • C++20 STL CookBook读书笔记1
  • 安全见闻(7)
  • C++ Qt 使用openCV库将图片文件互转YUV文件
  • 关于在vue2中接受后端返回的二进制流并进行本地下载
  • Vue 3 中,ref 和 reactive 的区别和使用
  • NumPy包(上) python笔记扩展
  • C#从零开始学习(继承)(6)
  • 达梦数据库使用笔记,备份还原,迁移
  • 从零开始实现 C++ 双向链表:深入理解链表底层原理
  • 教育平台的创新实现:Spring Boot技术
  • Android token JJWT
  • echarts:导入excel生成桑葚图