系统运维之PXE原理篇
PXE(Preboot eXecution Environment,预启动执行环境)是一种通过网络引导计算机的技术,允许客户端在没有本地存储设备(如硬盘、U盘)的情况下,从远程服务器加载操作系统镜像并启动。
核心原理
PXE基于客户端-服务器架构,依赖以下协议和服务:
- DHCP(动态主机配置协议):为客户端分配IP地址,并告知TFTP服务器地址和引导文件路径。
- TFTP(简单文件传输协议):传输轻量级的引导文件(如内核、初始化内存盘)。
- HTTP/NFS(可选):用于传输大型文件(如操作系统镜像)。
- PXE固件:集成在网卡ROM中的微型程序,负责发起网络引导流程。
工作流程
1. 客户端初始化PXE
a) 客户端开机时,BIOS/UEFI检测到从网络启动(PXE)后,网卡ROM中的PXE固件被激活。
b) PXE固件初始化网络栈,发送DHCP Discover广播请求(目标IP:`255.255.255.255`,端口:67)。
2. DHCP服务器响应
DHCP服务器收到请求后,返回以下关键信息:
- 客户端IP地址(`yiaddr`字段)
- TFTP服务器IP(`next-server`字段)
- 引导文件名(如 `pxelinux.0`,通过 `filename` 字段指定)
- 其他选项(如子网掩码、网关)
3. 下载引导文件(TFTP)
- 客户端通过TFTP协议连接到服务器(默认端口:69),下载指定的引导文件(如 `pxelinux.0`)。
- 引导文件通常是 PXE引导加载器(如SYSLINUX的`pxelinux.0`或GRUB的`grubnetx64.efi`)。
4. 加载配置和内核
- 引导加载器从TFTP服务器下载配置文件(如 `pxelinux.cfg/default`),决定启动菜单或自动加载的操作系统。
- 根据配置,客户端继续下载内核(`vmlinuz`)和初始化内存盘(`initrd`),通常仍通过TFTP(或HTTP/NFS)。
5. 启动操作系统
内核加载后,初始化内存盘(`initrd`)中的脚本会挂载远程文件系统(如HTTP/NFS共享的麒麟系统镜像),最终完成操作系统的启动或安装流程。
关键组件作用
- DHCP服务器:分配IP地址,指定TFTP服务器和引导文件路径(`next-server`和`filename`字段)。
- TFTP服务器:传输小文件(引导加载器、内核、`initrd`),基于UDP协议,无认证机制。
- HTTP/NFS服务器:存储大型操作系统镜像,供内核启动后挂载。
- PXE固件:集成在网卡ROM中,实现初始网络通信和文件下载。