【常见问题 11】PXE 安装卡 GRUB 界面,抓包和分析工具带你找根因
对应流程:将数据包与 PXE 的 6 步流程对应,定位卡壳环节;关注协议:重点检查 DHCP(地址分配)和 TFTP(文件传输)的交互细节;验证完整性:通过文件大小、报错信息判断是否为文件缺失或传输异常。掌握这套方法,无论遇到 IP 分配失败、引导文件丢失还是网络丢包,都能快速定位问题,让 PXE 安装效率翻倍!
本期是服务器操作系统常见问题的第11篇,介绍在PXE安装系统时如何通过tcpdump分析安装过程中的网络传输交互。
【问题描述】
在 PXE(预启动执行环境)部署操作系统的过程中,常因环境配置不当导致安装出现问题。例如:系统加载阶段异常进入 GRUB 命令行界面,致使安装进程无法继续。

图1 系统安装进入grub
本文将介绍如何通过使用 tcpdump 抓包的方式,追踪并分析此类问题的根本原因。
【PXE安装流程】
在 PXE系统安装流程中,客户端的初始化与安装文件获取遵循严谨的交互机制:
- 网卡初始化:客户端经由支持 PXE 功能的网卡进行系统引导,激活网络启动流程。
- 地址与资源定位:客户端通过 DHCP 协议动态获取 IP 地址,并获取 NBP(Network Boot Program)文件的名称及存储路径,完成网络资源寻址。
- 核心程序下载:依据启动模式差异,客户端通过 TFTP 协议从服务器端下载对应 NBP 文件,Legacy 模式调用 pxelinux.0,UEFI 模式则采用 BOOTX64.EFI 或 grubx64.efi 等适配文件。
- 配置文件加载:执行 NBP 文件后,客户端再次通过 TFTP 协议下载启动配置文件,Legacy 模式使用 default 配置,UEFI 模式则调用 grub.cfg 文件进行系统启动参数配置。
- 核心组件加载:根据用户选定的操作系统版本,客户端从服务端获取对应的 vmlinuz 内核文件与 initrd 初始化镜像,完成系统内核环境搭建。
- 安装文件传输:客户端通过 NFS、FTP 或 HTTP 等协议,批量下载操作系统安装文件,正式触发系统安装流程。

图2 PXE安装流程
从上述流程可见,PXE 系统安装过程涉及从服务端获取 DHCP 地址、下载 NBP 文件、加载配置文件及传输内核与初始化镜像等关键环节。那么,如何有效验证这些文件的下载过程是否正常,数据传输是否完整呢?
接下来,将为大家详细介绍如何通过抓包方法分析PXE整个启动过程。
【抓包工具准备】
- tcpdump工具介绍
tcpdump 是一款功能强大且广泛应用的命令行网络抓包工具。该工具可实时监听指定网络接口的数据流,精准捕获 TCP、UDP、ICMP 等各类网络协议数据包,并以标准化格式呈现数据交互细节,为网络管理员构建了系统化的故障诊断与流量分析体系。
我们可以在 PXE 服务端使用 tcpdump 抓取 PXE 安装过程中的网络数据包,从而分析各文件传输过程。以下是具体的安装和使用方法:
(1)通过yum安装tcpdump软件包
# yum install tcpdump
(2)执行如下命令开始抓包
# tcpdump -i net -s0 -w pxe.cap
其中:net:提供PXE服务端提供服务的网络接口名称
-s0:捕获完整数据包,不限制长度
-w pxe.cap:将捕获到的数据保存到pxe.cap文件中
(3)当客户端通过 PXE 进行系统安装并出现问题时,可以在服务端停止 tcpdump 的抓包操作,此时生成的 pxe.cap 文件将完整记录本次 PXE 安装过程中的所有网络传输数据包,可借助 Wireshark 工具对其中的具体信息进行深度分析。 - Wireshark工具介绍
Wireshark 作为开源网络协议分析领域的标杆工具,被广泛应用于网络故障排查、安全审计及协议开发等专业场景。在 Wireshark 的主界面中,捕获的网络报文通过三个核心区域进行可视化呈现:
- 数据包列表:以时间轴顺序展示所有捕获的数据包,包含源地址、目标地址、协议类型等关键信息。
- 数据包详情:对选中数据包进行分层解析,从数据链路层到应用层展示协议字段的具体内容。
- 数据包字节流:以十六进制和 ASCII 码形式呈现数据包的原始字节数据,便于底层数据校验。

图3 wireshark界面
- 通过Wireshark解析tcpdump抓的数据包
(1)在 Windows 操作系统环境下,启动 Wireshark 工具并导入之前抓取的 pxe.cap 数据包文件。

图4 wireshark打开文件
(2)根据 PXE 系统安装流程,客户端初始化阶段需通过 DHCP 协议完成 IP 地址获取。通过 Wireshark 分析捕获的网络报文,可完整呈现这一地址分配过程的标准交互时序:
DHCP Discover ->DHCP Offer ->DHCP Request -> DHCP ACK
其中
- DHCP Discover:客户端广播寻址报文,搜索网络中的可用 DHCP 服务器
- DHCP Offer:DHCP 服务器响应客户端请求,提供可用 IP 地址及配置参数
- DHCP Request:客户端向目标服务器发送 IP 地址请求确认
- DHCP ACK:DHCP服务器确认分配,正式下发 IP 地址及相关配置信息
通过解析 DHCP ACK 报文,可获取以下关键配置参数: - 客户端 IP 地址:192.168.91.128
- Next Server 地址:192.168.91.128(指向 TFTP 服务器)
其中 Next Server 字段明确了后续 PXE 引导文件的获取目标,即 TFTP 服务的访问地址。

图5 wireshark解析TFTP服务器地址信息
(3)检查PXE安装过程中,传输的各文件包传输情况。
从数据包中看到,客户端通过 TFTP 服务器读取的NBP文件的总大小是 tsize: 955632 字节,每次传输的块大小为 blksize: 1468 字节。

图6 wireshark解析NBP文件大小
在 TFTP 协议传输过程中,可通过解析数据包中的[last]标记。该标记表明 NBP 文件数据流已完整接收,此时可通过以下步骤计算实际传输大小:
NBP 大小 = blksize × (总包数 - 1) + 末包 blksize
实际计算得出:
NBP 文件大小 = 1468 × (651 - 1) + 1432 = 955632 字节
将计算得出的实际文件大小与 TFTP 协议中声明的文件大小(tsize=955632 字节)进行比对验证:
- 若两者数值完全一致,可判定网络传输过程中未发生数据包丢失,文件完整性得到保障;
- 若计算值与声明值存在差异,则表明 NBP 文件传输不完整,需进一步排查传输过程中是否存在数据包丢失或重传异常。

图7 wireshark解析传输NBP文件最后一个包信息
当 NBP 文件加载完成后,系统将发起对 grub.cfg 配置文件的请求。对于其他文件的完整性验证,可通过数据包文件中的传输数据进行计算,以确认文件传输过程中是否存在缺失。
从捕获的数据包中可见,grub.cfg 的加载路径为 TFTP 服务中的相对路径 pxelinux 目录。

图8 wireshark解析grub.cfg信息
根据 grub.cfg 配置文件的引导规则,系统将依次发起对内核文件 vmlinuz 和初始化镜像文件 initrd 的加载请求,这两个文件用于构建启动安装程序所需的内存运行环境。

图9 wireshark解析vmlinuz信息

图10 wireshark解析initrd信息
(4)当内存系统镜像文件 initrd 传输完成后,系统将开始下载安装过程中所需的 install.img 文件及各类软件包文件。

图11 wireshark解析install.img信息
根据客户端PXE安装过程的报错信息,以及tcpdump抓到的网络数据包传输过程,可以分析PXE传输过程中,各安装配置文件的完整性,定位问题原因。
【问题分析】
回到文章开篇提及的故障场景:当客户端通过 PXE 启动时,系统未能正常进入安装界面,停滞在GRUB命令行交互状态:

图12 pxe安装系统进入grub界面
通过tcpdump抓包分析,看到客户端在从PXE服务端读取pxelinux/grubx64.efi文件时,出现了“File not found”的报错信息:

图13 wireshark解析错误原因
所以造成该问题的原因是:由于 PXE 服务端缺失 grubx64.efi 文件,客户端在 PXE 启动过程中无法获取必要的引导程序,进而致使后续安装流程无法正常启动。
【解决方法】
在 PXE 服务端,将系统镜像中的 grubx64.efi 文件复制至/var/lib/tftpboot/pxelinux目录,并为该文件设置可读权限。
【总结】
PXE 安装故障大多源于网络交互异常,用 tcpdump+Wireshark 分析时,记住三个关键点:
- 对应流程:将数据包与 PXE 的 6 步流程对应,定位卡壳环节;
- 关注协议:重点检查 DHCP(地址分配)和 TFTP(文件传输)的交互细节;
- 验证完整性:通过文件大小、报错信息判断是否为文件缺失或传输异常。
掌握这套方法,无论遇到 IP 分配失败、引导文件丢失还是网络丢包,都能快速定位问题,让 PXE 安装效率翻倍!
更多推荐
所有评论(0)