新闻动态
当前位置:首页 > 新闻动态

常见问题11: PXE 安装卡 GRUB 界面,抓包和分析工具带你找根因

2025-10-11

本期为“服务器操作系统常见问题解析”系列报道第十一期,介绍在PXE安装系统时如何通过tcpdump分析安装过程中的网络传输交互。

问题描述

在PXE(预启动执行环境)部署操作系统的过程中,常因环境配置不当导致安装出现问题。例如:系统加载阶段异常进入GRUB命令行界面,致使安装进程无法继续。

1.png

图1:系统安装进入grub

本文将介绍如何通过使用tcpdump抓包的方式,追踪并分析此类问题的根本原因。

PXE安装流程

在PXE系统安装流程中,客户端的初始化与安装文件获取遵循严谨的交互机制:

(1)网卡初始化:客户端经由支持PXE功能的网卡进行系统引导,激活网络启动流程。

(2)地址与资源定位:客户端通过DHCP协议动态获取IP地址,并获取NBP(Network Boot Program)文件的名称及存储路径,完成网络资源寻址。

(3)核心程序下载:依据启动模式差异,客户端通过TFTP协议从服务器端下载对应NBP文件,Legacy模式调用pxelinux.0,UEFI模式则采用BOOTX64.EFI或grubx64.efi等适配文件。

(4)配置文件加载:执行NBP文件后,客户端再次通过TFTP协议下载启动配置文件,Legacy模式使用default配置,UEFI模式则调用grub.cfg文件进行系统启动参数配置。

(5)核心组件加载:根据用户选定的操作系统版本,客户端从服务端获取对应的vmlinuz内核文件与initrd初始化镜像,完成系统内核环境搭建。

(6)安装文件传输:客户端通过NFS、FTP或HTTP等协议,批量下载操作系统安装文件,正式触发系统安装流程。

2.png

图2: PXE安装流程

从上述流程可见,PXE系统安装过程涉及从服务端获取DHCP地址、下载NBP文件、加载配置文件及传输内核与初始化镜像等关键环节。那么,如何有效验证这些文件的下载过程是否正常,数据传输是否完整呢?

接下来,将为大家详细介绍如何通过抓包方法分析PXE整个启动过程。

抓包工具准备

1.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工具对其中的具体信息进行深度分析。

2.Wireshark工具介绍

Wireshark作为开源网络协议分析领域的标杆工具,被广泛应用于网络故障排查、安全审计及协议开发等专业场景。在Wireshark的主界面中,捕获的网络报文通过三个核心区域进行可视化呈现:

  • 数据包列表

    以时间轴顺序展示所有捕获的数据包,包含源地址、目标地址、协议类型等关键信息。

  • 数据包详情

    对选中数据包进行分层解析,从数据链路层到应用层展示协议字段的具体内容。

  • 数据包字节流

    以十六进制和ASCII码形式呈现数据包的原始字节数据,便于底层数据校验。

3.png

图3: wireshark界面

3.通过Wireshark解析tcpdump抓的数据包

(1)在Windows操作系统环境下,启动Wireshark工具并导入之前抓取的pxe.cap数据包文件。

4.png

图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.png

图5: wireshark解析TFTP服务器地址信息

(3)检查PXE安装过程中,传输的各文件包传输情况。

从数据包中看到,客户端通过TFTP服务器读取的NBP文件的总大小是tsize: 955632字节,每次传输的块大小为blksize: 1468字节。

6.png

图6: wireshark解析NBP文件大小

在TFTP协议传输过程中,可通过解析数据包中的[last]标记。该标记表明NBP文件数据流已完整接收,此时可通过以下步骤计算实际传输大小:

NBP大小= blksize × (总包数- 1) +末包blksize

实际计算得出:

NBP文件大小= 1468 × (651 - 1) + 1432 = 955632字节

将计算得出的实际文件大小与TFTP协议中声明的文件大小(tsize=955632字节)进行比对验证:

  • 若两者数值完全一致,可判定网络传输过程中未发生数据包丢失,文件完整性得到保障;

  • 若计算值与声明值存在差异,则表明NBP文件传输不完整,需进一步排查传输过程中是否存在数据包丢失或重传异常。


7.png

图7: wireshark解析传输NBP文件最后一个包信息

当NBP文件加载完成后,系统将发起对grub.cfg配置文件的请求。对于其他文件的完整性验证,可通过数据包文件中的传输数据进行计算,以确认文件传输过程中是否存在缺失。

从捕获的数据包中可见,grub.cfg的加载路径为TFTP服务中的相对路径pxelinux目录。

8.png

图8: wireshark解析grub.cfg信息

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

9.png

图9: wireshark解析vmlinuz信息

10.png

图10: wireshark解析initrd信息

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

11.png

图11: wireshark解析install.img信息

根据客户端PXE安装过程的报错信息,以及tcpdump抓到的网络数据包传输过程,可以分析PXE传输过程中,各安装配置文件的完整性,定位问题原因。

问题分析

回到文章开篇提及的故障场景:当客户端通过PXE启动时,系统未能正常进入安装界面,停滞在GRUB命令行交互状态:

12.png

图12:pxe安装系统进入grub界面

通过tcpdump抓包分析,看到客户端在从PXE服务端读取pxelinux/grubx64.efi文件时,出现了“File not found”的报错信息:

13.png

图13:wireshark解析错误原因

所以造成该问题的原因是:由于PXE服务端缺失grubx64.efi文件,客户端在PXE启动过程中无法获取必要的引导程序,进而致使后续安装流程无法正常启动。

解决方法

在PXE服务端,将系统镜像中的grubx64.efi文件复制至/var/lib/tftpboot/pxelinux目录,并为该文件设置可读权限。

总结

PXE安装故障大多源于网络交互异常,用tcpdump+Wireshark分析时,记住三个关键点:

(1)对应流程:将数据包与PXE的6步流程对应,定位卡壳环节;

(2)关注协议:重点检查DHCP(地址分配)和TFTP(文件传输)的交互细节;

(3)验证完整性:通过文件大小、报错信息判断是否为文件缺失或传输异常。

掌握这套方法,无论遇到IP分配失败、引导文件丢失还是网络丢包,都能快速定位问题,让PXE安装效率翻倍!

关注我们

Copyright © 2024 浪潮信息 鲁ICP备13028953号-12

售前咨询

售后服务

回到顶部

回到顶部

售前咨询
售后服务