首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux下PXE服务器搭建

Linux下PXE服务器搭建

原创
作者头像
云惑雨问
发布2025-08-26 16:34:02
发布2025-08-26 16:34:02
1620
举报
文章被收录于专栏:技术实操技术实操

传统硬盘启动如同马车运输,PXE则是信息时代的高速铁路

前言

PXE(预启动执行环境)是由Intel设计的革命性协议,它使计算机能够不依赖本地存储设备直接从网络启动操作系统。这种网络启动技术正在企业IT环境中扮演着越来越重要的角色。


一、探秘PXE

1. PXE的用途

  • 批量部署系统:同时为数十台机器安装操作系统
  • 无盘工作站:网吧、实验室等场景的理想解决方案
  • 紧急救援:当本地系统崩溃时,从网络恢复
  • 集中化管理:统一控制所有机器的启动环境

2. 工作原理

2.1 PXE启动步骤

  • DHCP分配IP:客户端发出"我是谁"的询问
  • TFTP传送引导:获取引导文件(pxelinux.0)
  • HTTP加载内核:下载操作系统的"灵魂"(vmlinuz)
  • 完成启动
代码语言:txt
复制
sequenceDiagram
    participant Client
    participant DHCP
    participant TFTP
    participant HTTP
    
    Client->>DHCP: 1. 请求IP地址
    DHCP-->>Client: 2. 分配IP
    Client->>TFTP: 3. 获取引导文件
    TFTP-->>Client: 4. 发送pxelinux.0
    Client->>HTTP: 5. 下载系统镜像
    HTTP-->>Client: 6. 完成系统安装

2.2 核心组件解析

  • DHCP服务器:IP地址分配与引导定位
  • TFTP服务器:轻量级文件传输
  • HTTP/NFS服务器:系统镜像分发
  • SYSLINUX:引导加载程序集

二、基础环境准备

1. 服务管理

代码语言:bash
复制
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld  
systemctl status firewalld

2 软件安装

代码语言:bash
复制
# 安装核心组件
yum install -y dhcp tftp-server xinetd httpd syslinux

三、服务配置详解

1. DHCP配置

代码语言:bash
复制
# 安装DHCP服务
yum install dhcp -y

# 编辑配置文件
vi /etc/dhcp/dhcpd.conf

配置文件核心内容

代码语言:bash
复制
# /etc/dhcp/dhcpd.conf 关键配置
subnet 192.168.2.0 netmask 255.255.255.0 { #定义子网网段和掩码
range 192.168.2.30 192.168.2.254; #子网IP地址范围
option domain-name-servers 8.8.8.8,8.8.4.4; #子网DNS
option domain-name "internal.example.org"; #子网域名
option routers 192.168.2.1; #子网网关
option broadcast-address 192.168.2.255; #子网广播地址
default-lease-time 3600 ; #默认租约时间,单位为s
max-lease-time 7200; #最大的租约时间,单位为s
next-server 192.168.2.11; #pxe服务器的ip
#filename "pxelinux.0"; #pxe服务器引导文件,legacy模式
filename "bootx64.efi"; #efi模式为bootx64.efi

启动服务并开机自启

代码语言:bash
复制
systemctl restart dhcpd
systemctl enable dhcpd
systemctl status dhcpd
systemctl is-enabled dhcpd

2. 配置TFTP服务

代码语言:bash
复制
# 安装必要组件
yum install -y tftp tftp-server xinetd

# 配置TFTP服务
vi /etc/xinetd.d/tftp

配置文件内容

把disable参数修改为no

代码语言:bash
复制
service tftp
{ socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /home/mike/tftpboot -c
disable =no
per_source =11
cps =100 2
flags =IPv4
}

重启tftp服务并开机自启

代码语言:bash
复制
systemctl restart tftp.socket
systemctl enable tftp.socket
systemctl status tftp.socket
systemctl is-enabled tftp.socket
代码语言:bash
复制
systemctl restart tftp.service
systemctl enable tftp.service
systemctl status tftp.service
systemctl is-enabled tftp.service
代码语言:bash
复制
systemctl restart xinetd
systemctl enable xinetd
systemctl status xinetd
systemctl is-enabled xinetd

3. 配置HTTP服务

代码语言:bash
复制
# 安装Apache
yum install -y httpd

# 创建镜像目录
mkdir /var/www/html/RHEL

# 挂载系统镜像
mount -o loop /root/rhel-server-7.8-x86_64-dvd.iso /var/www/html/RHEL

# 启动服务
systemctl start httpd

4. 配置引导文件

4.1 Legacy模式:经典启动方式

代码语言:bash
复制
# 安装Syslinux
yum install -y syslinux

# 复制引导文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /var/www/html/Rhel/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /var/www/html/Rhel/isolinux/{vesamenu.c32,boot.msg,splash.png} /var/lib/tftpboot/  
cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/

# 创建配置目录  
mkdir /var/lib/tftpboot/pxelinux.cfg

# 复制配置文件
cp /var/www/html/Rhel/isolinux/isolinux.cfg /var/li
     

修改default文件

代码语言:bash
复制
vim /var/lib/tftpboot/pxelinux.cfg/default
代码语言:bash
复制
default linux
label linux
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.2.11/Rhel7.8 devfs=nomount ip=dhcp

4.2 UEFI模式:现代启动方式

代码语言:bash
复制
# 复制核心文件
cp /var/www/html/Rhel/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /var/www/html/Rhel/isolinux/{vesamenu.c32,boot.msg,splash.png} /var/lib/tftpboot/  
cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/

# 制作EFI引导文件
yum -y install grub2-efi-modules
grub2-mkstandalone -d /usr/lib/grub/x86_64-efi/ -O x86_64-efi --modules="tftp net efinet linux part_gpt efifwsetup" -o bootx64.efi

# 复制配置文件
cp bootx64.efi /var/lib/tftpboot/
cp /var/www/html/Rhel/EFI/BOOT/grub.cfg /var/lib/tftpboot/

修改grub.cfg:

代码语言:bash
复制
vim /var/lib/tftpboot/grub.cfg
代码语言:bash
复制
Linuxefi (tftp)/vmlinuz inst.repo=http://192.168.2.11/Rhel7.8/
initrdefi (tftp)/initrd.img

四、启动验证

当一切配置完成,重启DHCP服务:

代码语言:bash
复制
systemctl restart dhcpd

现在,连接同一网络的客户端即可实现:

  • 设置BIOS/UEFI为网络启动优先
  • 自动获取IP地址
  • 加载引导菜单
  • 开始操作系统安装

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、探秘PXE
    • 1. PXE的用途
    • 2. 工作原理
      • 2.1 PXE启动步骤
      • 2.2 核心组件解析
  • 二、基础环境准备
    • 1. 服务管理
    • 2 软件安装
  • 三、服务配置详解
    • 1. DHCP配置
    • 2. 配置TFTP服务
    • 3. 配置HTTP服务
    • 4. 配置引导文件
      • 4.1 Legacy模式:经典启动方式
      • 4.2 UEFI模式:现代启动方式
  • 四、启动验证
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档