Linux之PXE网络安装
Linux之PXE网络安装
概述
PXE(Preboot Execution Environment,预启动执行环境)是一种通过网络启动计算机的技术。它允许客户端(目标机器)从服务器获取操作系统镜像并完成安装,而无需本地存储介质(如光盘或U盘)。PXE 常用于批量部署操作系统,特别是在数据中心和企业环境中。
- 适用场景:
- 无盘工作站(Diskless Workstation)。
- 远程安装操作系统(如批量部署服务器或桌面)。
- 系统恢复或故障诊断。
- 虚拟化环境中的快速克隆。
- 优势:
- 无需本地存储即可启动。
- 集中管理,便于批量部署和更新。
- 支持多系统选择和自动化安装。
核心组件及准备
在开始 PXE 安装之前,需要搭建一个支持 PXE 的网络环境,并配置相关的服务。
硬件准备
- 客户端:支持 PXE 的网卡(大多数现代主板都支持),且 BIOS/UEFI 支持网络引导。。
- 服务器:一台运行 DHCP、TFTP 和 HTTP/FTP/NFS 服务的服务器。
- 网络:客户端和服务器需连接在同一局域网中。
软件准备
- PXE 引导 ROM:网卡或主板的固件中内置的 PXE 启动代码,负责发起 DHCP/TFTP 请求等。
- DHCP 服务器:为客户端分配 IP 地址,并提供 PXE 引导所需的参数(如 TFTP 服务器地址和启动文件名)。
- TFTP 服务器:提供引导文件(如
pxelinux.0
、grubx64.efi
)、内核文件(vmlinuz
)、初始化镜像文件(initrd.img
)及配置文件。。 - HTTP/FTP/NFS 服务器:存储操作系统安装源文件(如 ISO 镜像、RPM/DEB 包等)和配置文件(如
ks.cfg
)。。
关键技术细节
(1) PXE 引导协议栈
- BOOTP/DHCP:用于分配 IP 和引导参数。
- TFTP:轻量级协议,仅支持
read
和write
操作,端口69
。 - HTTP/NFS/FTP:用于传输大型安装源文件。
(2) 引导程序类型
- pxelinux(Syslinux):
- 传统 BIOS 环境常用。
- 配置文件
pxelinux.cfg
支持按 MAC/IP 匹配规则。
- GRUB(UEFI):
- 支持 UEFI 系统,使用
grub.cfg
配置。 - 文件名通常为
grubx64.efi
(x86_64)或grubia32.efi
(ARM)。
- 支持 UEFI 系统,使用
(3) initrd 初始化镜像
- 作用:提供临时根文件系统,包含驱动程序和工具,用于探测硬件并挂载真实根文件系统。
- 内容:内核模块、网络工具(
ip
、wget
)、安装脚本等。
PXE 网络安装流程
步骤 1:客户端开机并启用 PXE
- 客户端(目标机器)开机后,BIOS/UEFI 会检测到支持 PXE 的网卡。
- 如果启用了 PXE 启动模式,会进入 PXE 引导模式,PXE ROM 会通过 DHCP 协议向网络中的 DHCP 服务器请求 IP 地址。
步骤 2: DHCP 分配 IP 地址
- DHCP 服务器收到客户端的请求后,分配一个 IP 地址给客户端。
- 同时,DHCP 服务器还会返回以下关键信息:
- TFTP 服务器地址:告诉客户端从哪个服务器获取引导文件,如
option 66
指定 TFTP 服务器地址。 - 引导文件名:通常是
pxelinux.0
或其他引导加载程序,如option 67
指定启动文件名。
- TFTP 服务器地址:告诉客户端从哪个服务器获取引导文件,如
- 示例 DHCP 配置(以 ISC DHCP 为例):
# 定义 PXE 引导相关选项 next-server 192.168.1.100; # TFTP 服务器地址 filename "pxelinux.0"; # 初始引导程序文件名
步骤 3: 下载引导程序并执行
- 下载引导程序:客户端通过 TFTP 协议从指定的 TFTP 服务器(
next-server
)下载filename
指定的引导文件(如pxelinux.0
)。 - 执行引导程序:下载的引导程序(如
pxelinux.0
)开始运行,接管系统控制权,显示引导菜单或执行预设配置。
- 引导文件通常是一个小型的操作系统加载程序,负责后续的引导过程。
步骤 4: 加载内核和初始化镜像
- 读取配置文件:引导程序(如
pxelinux
)从 TFTP 服务器加载配置文件(如pxelinux.cfg/default
),根据客户端 MAC 地址、IP 或其他标识选择配置。- 示例配置文件
/var/lib/tftpboot/pxelinux.cfg/default
:DEFAULT linux LABEL linux kernel vmlinuz # 内核文件名 append initrd=initrd.img root=/dev/nfs nfsroot=192.168.1.100:/path/to/install/root ip=dhcp
- 示例配置文件
- 下载内核和初始化镜像:根据配置文件,客户端通过 TFTP 下载操作系统内核(
vmlinuz
)和初始化镜像(initrd.img
,包含启动所需的临时文件系统)。
步骤 5:启动内核并初始化安装环境
客户端下载内核和初始化镜像后,会进入操作系统的预安装环境:
- 加载内核:内核启动后,挂载初始 RAM 磁盘(initrd)并初始化网络。
- 挂载安装源:客户端会根据配置文件(如
ks.cfg
或preseed.cfg
)通过网络协议(如 NFS、HTTP 或 FTP)挂载操作系统安装源。例如:- NFS:
nfsroot=192.168.1.100:/path/to/nfs/share
- HTTP:通过
wget
或curl
下载安装镜像。 - 配置文件通常包含自动化的安装选项(如分区方案、语言设置、用户密码等)。
- NFS:
- 启动安装程序:根据内核参数或用户交互,开始操作系统安装流程。
步骤 6: 系统安装与配置
- 分区与格式化:用户选择磁盘分区方案或自动化脚本(如 Kickstart)执行。
- 复制文件:将操作系统文件从网络安装源复制到本地磁盘。
- 配置系统:设置网络、用户、时区等参数。
- 安装引导程序:将 GRUB 或其他引导程序写入本地磁盘。
步骤 7: 安装完成并重启
- 操作系统安装完成后,客户端会重启。
- 此时,客户端将从本地硬盘启动,进入新安装的操作系统。
关键配置示例
DHCP 服务器配置(ISC DHCP)
# /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option routers 192.168.1.1;
next-server 192.168.1.100; # TFTP 服务器地址
filename "pxelinux.0"; # BIOS 环境引导程序
# 或者 UEFI 环境:
# filename "grubx64.efi";
}
TFTP 服务器配置示例
- 目录结构:
/var/lib/tftpboot/ # TFTP 根目录 ├── pxelinux.0 # BIOS 引导程序 ├── grubx64.efi # UEFI 引导程序 ├── pxelinux.cfg/ # BIOS 引导配置目录 │ └── default # BIOS 引导配置文件 ├── grub.cfg # UEFI 引导配置文件 ├── vmlinuz # 内核文件 ├── initrd.img # 初始化镜像 └── isolinux/ # 可选:ISO 镜像中的文件
pxelinux.cfg/default
示例:DEFAULT linux LABEL linux KERNEL vmlinuz APPEND initrd=initrd.img ks=http://192.168.1.10/ks.cfg
HTTP/FTP/NFS 服务器配置示例
配置示例(以 HTTP 为例):
- 将 ISO 文件挂载到
/var/www/html/os/
目录:mount -o loop /path/to/os.iso /var/www/html/os/
- 提供 Kickstart 配置文件(
ks.cfg
):url --url=http://192.168.1.10/os/ lang en_US keyboard us network --onboot yes --device eth0 --bootproto dhcp rootpw password firewall --disabled reboot
UEFI 环境引导配置(grub.cfg)
menuentry 'Install CentOS' { linux /vmlinuz inst.repo=http://192.168.1.100/centos8/ initrd /initrd.img }
扩展应用
- 自动化安装:通过 Kickstart(RHEL/CentOS)、Preseed(Debian/Ubuntu)脚本实现无人值守安装。
- 多系统部署:在
pxelinux.cfg
中配置多个LABEL
,支持不同操作系统或版本选择。 - UEFI 支持:使用
grubx64.efi
替代pxelinux.0
,并配置 UEFI 引导参数。 - 安全性增强:
- 使用 HTTPS 替代 HTTP 传输安装源。
- 通过 DHCP 的
class
或host
定义限制 PXE 引导权限。 - 结合 IPSec 或 SSH 加密网络流量。
自动化工具
为了简化 PXE 网络安装,可以使用以下工具:
- Cobbler:集成了 DHCP、TFTP 和 HTTP 服务,支持批量部署操作系统。
- Foreman:提供 Web 界面,支持 PXE 安装和生命周期管理。
- Kickstart(Red Hat/CentOS)或 Preseed(Debian/Ubuntu):实现无人值守安装。
总结
PXE 是一种强大的网络启动技术,通过 DHCP-TFTP-HTTP/NFS 的协作,实现无盘启动和远程系统部署。其核心在于正确配置服务器组件,并确保客户端能按顺序下载和执行引导程序、内核及安装源文件。掌握这一流程后,可高效部署大规模服务器或桌面环境。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DD'Notes!
评论