当前位置:首页 > 云服务器 > 正文

linux搭建pxe服务器

在 Linux 中,先装 dhc p、tft p 等服务,配好网络参数,放好系统镜像,就能轻松搭起 PXE

前期准备

1 硬件与网络要求

项目 说明
服务器角色 PXE Server(兼作DHCP/TFTP/HTTP/NFS服务器)
网卡配置 确保至少有一块物理网卡连接至目标客户端所在局域网
IP地址规划 预留一段未使用的静态IP池(如168.1.100~192.168.1.200)
存储空间 足够存放操作系统镜像(建议≥50GB)

2 软件依赖清单

功能模块 CentOS/RHEL对应软件包 Ubuntu/Debian对应软件包
DHCP服务 dhcp isc-dhcp-server
TFTP服务 tftp-server tftpd-hpa
引导程序 syslinux syslinux
Web服务 httpd (Apache) apache2
NFS服务 nfs-utils nfs-kernel-server


安装核心组件

1 基于CentOS/RHEL的安装命令

# 更新软件源并安装基础组件 sudo yum update -y sudo yum install -y dhcp tftp-server syslinux httpd nfs-utils rsync

2 基于Ubuntu/Debian的安装命令

# 更新软件源并安装基础组件 sudo apt update && sudo apt upgrade -y sudo apt install -y isc-dhcp-server tftpd-hpa syslinux-common apache2 nfs-kernel-server rsync


配置DHCP服务

1 主配置文件修改 (/etc/dhcp/dhcpd.conf)

# 全局通用配置 option domain-name "localdomain"; option domain-name-servers 8.8.8.8, 8.8.4.4; default-lease-time 600; max-lease-time 7200; # PXE特有配置段 subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; # IP分配池 option routers 192.168.1.1; # 默认网关 option subnet-mask 255.255.255.0; allow booting; # 允许PXE启动 next-server 192.168.1.10; # TFTP服务器IP filename "pxelinux.0"; # 引导文件名 }

2 重要参数对照表

参数 作用 示例值
next-server 指向TFTP服务器的实际IP 168.1.10
filename 指定从TFTP获取的第一个文件 pxelinux.0
allow booting 启用无盘工作站通过网络启动 必须存在


配置TFTP服务

1 初始化TFTP根目录

sudo mkdir -p /var/lib/tftpboot/pxelinux.cfg sudo chmod -R 777 /var/lib/tftpboot # 临时开放权限便于调试

2 生成默认引导配置文件

cat > /var/lib/tftpboot/pxelinux.cfg/default << EOF DEFAULT vesamenu.c32 PROMPT 0PXE Boot Menu LABEL localinstall MENU LABEL Install CentOS7 KERNEL centos7/vmlinuz INITRD centos7/initrd.img APPEND root=/dev/ram0 rhgb quiet TIMEOUT 600 EOF

3 关键目录结构说明

路径 用途 示例
/var/lib/tftpboot/ TFTP根目录 pxelinux.0, pxelinux.cfg/
/var/lib/tftpboot/centos7/ CentOS7安装镜像目录 vmlinuz, initrd.img
/var/lib/tftpboot/pxelinux.cfg/ GRUB菜单配置文件目录 default, other menu entries


部署操作系统镜像

1 挂载ISO并提取核心文件

# 创建挂载点并挂载ISO sudo mkdir -p /mnt/centos7 sudo mount -o loop CentOS-7-x86_64-Minimal-DVD.iso /mnt/centos7/ # 复制内核与初始RAM磁盘 sudo cp /mnt/centos7/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7/ # 创建符号链接(兼容旧版BIOS) sudo ln -s centos7/vmlinuz /var/lib/tftpboot/pxelinux.0

2 高级优化方案

方案 优势 实施要点
NFS挂载完整镜像 减少TFTP传输量 导出/opt/iso目录,修改APPEND参数
HTTP替代NFS 跨路由场景更稳定 修改APPEND为http://url/
Kickstart自动化 无人值守批量部署 创建ks.cfg并添加到APPEND参数


服务启动与验证

1 启动必要服务

# CentOS/RHEL sudo systemctl enable --now dhcpd tftp httpd nfs-server # Ubuntu/Debian sudo systemctl enable --now isc-dhcp-server tftpd-hpa apache2 nfs-kernel-server

2 验证测试命令

命令 预期结果 故障排查方向
systemctl status dhcpd 显示active(running) 检查dhcpd.conf语法错误
nc -zv 69 返回”succeeded” TFTP端口被防火墙拦截
ls /var/lib/tftpboot/ 看到pxelinux.0等文件 文件未正确复制或权限不足


常见问题与解答

Q1: 客户端提示”No boot filename received”怎么办?

A: 此错误表明DHCP响应中缺少filename参数,请检查:

linux搭建pxe服务器 第1张

linux搭建pxe服务器 第2张

  1. /etc/dhcp/dhcpd.conf中的filename是否指向正确的引导文件(如pxelinux.0)
  2. 客户端MAC地址是否在host声明中有特殊覆盖配置
  3. TFTP目录中确实存在指定的引导文件

Q2: 如何实现多系统选择菜单?

A: 在/var/lib/tftpboot/pxelinux.cfg/目录下创建多个.cfg文件,并在default文件中添加菜单项:

MENU SEQUENCE 1.8" LABEL WindowsPE MENU LABEL Start Windows PE KERNEL winpe/winpe.wim APPEND ... # 其他参数

注意:非Linux系统需要额外配置NTLDR或WINPE的特殊处理逻辑。


进阶配置建议

功能需求 实施方案 注意事项
安全加固 限制TFTP仅允许特定MAC访问 修改/etc/xinetd.d/tftp
日志审计 启用DHCP日志记录 配置dhcpd.conf的log-facility
高可用架构 主备PXE服务器+Keepalived 需同步TFTP目录和DHCP租约数据库

linux搭建pxe服务器 第3张

p
0