【文档】搭建 TFTP 服务器

操作系统:RockyLinux8

实验环境:VMware® Workstation 17 Pro

流程


TFTP 服务器做什么:存储引导文件、安装文件

bash 复制代码
# 安装 TFTP 服务 + 引导文件(syslinux)
# tftp-server:TFTP 服务
# syslinux:提供 PXE 引导文件 pxelinux.0 等内容
# xinetd(可选):管理 TFTP 服务
[root@TFTP ~]# yum install -y tftp-server syslinux xinetd vsftpd

配置 | TFTP 服务项


01 传统方式 | xinetd 管理 TFPT 服务

问:为什么 xinted 可选安装?

答:xinetd 不属于 PXE 环境中的必须组件。

在过往历史中主用于管理 TFTP 服务。见下文配置文件。

主对 TFTP 服务进行简化配置。并不阻碍批量部署。 ------ 适用于老旧硬件资源有限下的部署

在多物理设备批量部署环境下,须设置配置文件启用并允许多客户端同时访问。同时设置独立的目录用于小型文件的传输。

bash 复制代码
# 配置 TFTP 服务
[root@TFTP ~]# vim /etc/xinetd.d/tftp
service tftp                                           # 服务名称
{
        socket_type    = dgram                         # TFTP 协议标准
        protocol       = udp                           # 规定要求
        wait           = no                            # 允许多客户端连接
        user           = root                          # 进程运行身份
        server         = /usr/sbin/in.tftpd            # TFTP 守护进程
        server_args    = -s /var/lib/tftpboot          # 限定可操作的目录(-s 安全模式)
        disable        = no                            # 启用服务
        per_source     = 11                            # 限制源IP连接数
        cps            = 100 2                         # 连接限制:每秒连接数,超过则暂停2秒
        flags          = IPv4                          # 仅支持 IPv4
}

[root@TFTP ~]# systemctl enable xinetd.service --now

02 现在方式 | systemd 管理 TFTP 服务
bash 复制代码
# TFTP 服务使用 systemd 的 ​​socket 激活​​机制
[root@TFTP ~]# systemctl enable tftp.socket --now

默认根目录:/var/lib/tftpboot,若需要修改:

bash 复制代码
[root@TFTP ~]# vim /usr/lib/systemd/system/tftp.service
...
[Service]
ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
...
# 重载
[root@TFTP ~]# systemctl daemon-reload

配置 | 引导内容


bash 复制代码
# 你必须确认已安装以下模块
[root@TFTP ~]# yum install -y syslinux

引导内容是系统启动时,用于指引目标操作系统所用的菜单。

bash 复制代码
# 拷贝关键文件至 TFTP服务器目录
[root@TFTP ~]# cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/      # 引导程序
[root@TFTP ~]# cp /usr/share/syslinux/menu.c32    /var/lib/tftpboot/      # 菜单模块
[root@TFTP ~]# cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/      # 依赖库

pxelinux.cfg 是一个引导类文件。意在以图形化菜单指引你怎么做。如下:

bash 复制代码
[root@TFTP ~]# mkdir /var/lib/tftpboot/pxelinux.cfg   # 配置目录
DEFAULT vesamenu.c32                        # 使用图形化菜单模块
PROMPT 0                                    # 禁止超时自动启动默认菜单项
MENU TITLE PXE Boot Menu - RHEL 8           # 设置菜单标题
TIMEOUT 100                                 # 菜单超时时间(单位:0.1秒)
ONTIMEOUT install_rhel8                     # 超时后启动的菜单项

LABEL install_rhel8                         # 启动项标签
  MENU LABEL ^Install RHEL 8                # 菜单显示名称
  KERNEL vmlinuz                            # 内核文件
  APPEND initrd=initrd.img inst.repo=ftp://TFTP-Sever/pub/rhel8 inst.ks=ftp://TFTP-Sever/pub/ks.cfg quiet # 安装启动参数

LABEL local
  MENU LABEL Boot from ^local drive
  LOCALBOOT 0

关于 APPEND 的补充描述:

  • initrd:指定 临时的根文件系统(用于启动真实操作系统的运行环境)
  • inst.repo:指定操作系统安装文件的网络位置
  • inst.ks:指定 Kickstart (无人化值守)文件。如何配置见 【文档】准备 ks.cfg 文件
  • quiet:启动时不显示详细信息

获取 | 内核 + 引导镜像

操作系统的 ISO 内包含内核和引导安装。但实际上因为系统差异,其目录命名存在差异,如下所示:

  • Ubuntu.iso:casper/initrd + casper/vmlinuz
  • RHEL.iso:imgaes/pxeboot/initrd.img + images/pxeboot/vmlinuz

以 RockyLinux 为准,路径如下:

bash 复制代码
[root@TFTP ~]# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

额外补充

inst.repo 与 inst.ks 引用 FTP 服务器。这意味者你需要额外使用 vsftpd 服务。这是因为 FTP 服务适用于大型文件传输。其首要指引是 iso 镜像文件。

相关推荐
DIY机器人工房3 个月前
在开发板tmp目录下传输文件很快的原因和注意事项:重启开发板会清空tmp文件夹,记得复制文件到其他地方命令如下(cp 文件所在路径 文件要复制到的路径—)
嵌入式硬件·嵌入式·tftp·diy机器人工房
时光飞逝的日子5 个月前
Ubuntu搭建TFTP服务器的方法
linux·ubuntu·tftp
天糊土7 个月前
Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传
nfs·tftp
三玖诶1 年前
第三弹:探索网络传输中的TFTP、UDP广播与多播技术
网络·网络协议·udp·tftp
星寂樱易李1 年前
Ubuntu中 petalinux 安装 移植linux --tftp/tftp-hpa服务的方法
linux·运维·ubuntu·tftp
赛先生.AI2 年前
网络传输(2):TFTP服务端(服务器)安装与配置
网络·tcp/ip·tftp
赛先生.AI2 年前
网络传输(1):Busybox的TFTP协议
网络·tftp·tcpip
alittlemc2 年前
网络-华为、思科交换机配置TFTP自动备份、NTP时间同步、SYSLOG日志同步功能
交换机·tftp·ntp·syslog
alittlemc2 年前
网络-华为、思科交换机配置TFTP自动备份、NTP时间同步、SYSLOG日志同步
网络工程·交换机·tftp·ntp·syslog