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

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 serverLoaded: loaded (/etc/init.d/tftpd-hpa; generated)Active: active (running) since Sun 2024-10-20 15:24:27 CST; 2min 23s agoDocs: 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: 63msCGroup: /system.slice/tftpd-hpa.service└─12346 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /srv/tftp10月 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.lryc.cn/news/466539.html

相关文章:

  • java基础学习:定时任务常见实现方式
  • 句柄是什么?有什么用?举例说明
  • Jenkins学习笔记
  • AI 解读软考高级操作系统顺序存取、直接存取、随机存取、相联存取的区别
  • STM32烧写准备
  • 为Windows Terminal 配置zsh + Oh-My-Zsh!
  • RNN、LSTM 与 Bi-LSTM
  • 第一性原理
  • DOM NamedNodeMap 接口详解
  • EasyExcel自定义下拉注解的三种实现方式
  • Burp Suite Professional 2024.9 for macOS x64 ARM64 - 领先的 Web 渗透测试软件
  • 使用Mock库进行依赖注入的实用指南
  • nosql课本习题
  • springboot 3.2.5集成spring security 只放行get请求,其他请求403
  • 【linux】麒麟v10安装ELKB(ARM架构)
  • 帝国CMS – AutoTitlePic 自动生成文章标题图片插件
  • Docker安装Mysql5.7,解决无法访问DockerHub问题
  • React中使用Antd开源组件Popover等部分组件原生样式改变问题
  • Linux 配置 ssh —— ubuntu
  • eCAP超声波测距-ePWM电机调速
  • 【K8s】Kubernetes 词汇表
  • 高级java每日一道面试题-2024年10月20日-数据库篇[Redis篇]-Redis为什么是单线程的?
  • SW-LIMS在化妆品行业稳定性试验中的应用
  • vue 项目i18n国际化,快速抽离中文,快速翻译
  • java--多态(详解)
  • windows DLL技术-DLL概述
  • C++ —— 实现一个日期类
  • Java全栈经典面试题剖析5】JavaSE高级 -- 集合
  • python中如何获取对象信息
  • 逐行讲解transformers中model.generate()源码