CentOS如何配置PXE实现无人值守网络安装系统?

在网络管理和系统部署领域,PXE(Preboot Execution Environment,预启动执行环境)是一种极为高效的技术,它允许计算机通过网络启动,而无需依赖本地硬盘、光盘或U盘等传统介质,对于需要批量安装操作系统的场景,如数据中心、机房或实验室,基于CentOS搭建PXE服务器可以实现自动化、无人值守的部署,极大地提升了工作效率,本文将详细介绍如何在CentOS系统上构建一个完整的PXE安装环境。

CentOS如何配置PXE实现无人值守网络安装系统?

环境准备与组件解析

在开始之前,我们需要准备一台作为PXE服务器的CentOS系统,并确保其网络配置正确,整个PXE部署流程依赖于几个核心服务的协同工作,理解它们的作用至关重要。

服务名称 作用 安装包名
DHCP 为客户端分配IP地址,并告知TFTP服务器的地址和启动文件名 dhcp
TFTP 一个简单的文件传输协议,用于向客户端提供启动所需的初始文件,如引导加载程序 tftp-server
HTTP/FTP/NFS 提供完整的操作系统安装源文件(如CentOS的ISO镜像内容) httpd (本文以HTTP为例)
Kickstart 自动化应答文件,定义安装过程中的所有选择,实现无人值守安装 system-config-kickstart生成或手动编写

服务器环境要求:

  • 一台已安装CentOS 7或CentOS 8的服务器。
  • 服务器配置一个静态IP地址,168.10.10
  • 确保服务器防火墙和SELinux已正确配置或暂时关闭,以避免初期排查问题时的干扰。

第一步:安装并配置DHCP服务

DHCP是PXE流程的起点,客户端首先需要通过DHCP获取网络参数。

  1. 安装DHCP服务包:

    sudo yum install dhcp -y
  2. 配置DHCP服务:
    DHCP的主配置文件是 /etc/dhcp/dhcpd.conf,该文件默认为空,我们可以参考模板文件 /usr/share/doc/dhcp-*/dhcpd.conf.example 进行创建,以下是一个基础配置示例:

    # /etc/dhcp/dhcpd.conf
    option domain-name-servers 114.114.114.114, 8.8.8.8;
    default-lease-time 600;
    max-lease-time 7200;
    log-facility local7;
    # PXE特定配置
    subnet 192.168.10.0 netmask 255.255.255.0 {
        range 192.168.10.100 192.168.10.200; # 分配给客户端的IP地址池
        option routers 192.168.10.1;         # 网关地址
        option broadcast-address 192.168.10.255;
        next-server 192.168.10.10;          # ***关键:TFTP服务器的IP地址***
        filename "pxelinux.0";              # ***关键:PXE引导文件的名称***
    }

    next-serverfilename 是实现PXE引导的核心指令,它们明确告诉客户端从哪里获取什么文件来启动。

  3. 启动并设置开机自启:

    sudo systemctl start dhcpd
    sudo systemctl enable dhcpd

第二步:安装并配置TFTP服务

TFTP服务负责提供引导加载程序和内核文件。

  1. 安装TFTP服务包:
    TFTP服务由 xinetd 超级守护进程管理。

    sudo yum install tftp-server xinetd -y
  2. 配置TFTP服务:
    编辑 /etc/xinetd.d/tftp 文件,将 disable 的值改为 no,以启用TFTP服务。

    CentOS如何配置PXE实现无人值守网络安装系统?

    service tftp
    {
        socket_type     = dgram
        protocol        = udp
        wait            = yes
        user            = root
        server          = /usr/sbin/in.tftpd
        server_args     = -s /var/lib/tftpboot
        disable         = no  # 将 yes 改为 no
        per_source      = 11
        cps             = 100 2
        flags           = IPv4
    }

    TFTP的默认根目录是 /var/lib/tftpboot,所有需要通过网络传输的引导文件都将放置于此。

  3. 准备引导文件:
    我们需要从 syslinux 包中获取引导文件,并从CentOS安装镜像中获取内核和初始化内存盘。

    # 安装syslinux,提供引导加载程序
    sudo yum install syslinux -y
    # 复制必要的引导文件到TFTP根目录
    sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    sudo cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
    sudo cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/
    sudo cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/
    sudo cp /usr/share/syslinux/libcom32.c32 /var/lib/tftpboot/
    sudo cp /usr/share/syslinux/libutil.c32 /var/lib/tftpboot/
    # 挂载CentOS ISO镜像(假设镜像文件为 /tmp/CentOS-7-x86_64-Minimal-2009.iso)
    sudo mkdir /mnt/centos-iso
    sudo mount -o loop /tmp/CentOS-7-x86_64-Minimal-2009.iso /mnt/centos-iso
    # 复制内核和初始化内存盘
    sudo cp /mnt/centos-iso/images/pxeboot/vmlinuz /var/lib/tftpboot/
    sudo cp /mnt/centos-iso/images/pxeboot/initrd.img /var/lib/tftpboot/
  4. 创建PXE菜单配置:
    在TFTP根目录下创建 pxelinux.cfg 目录,并在其中创建一个名为 default 的文件,这是PXE启动菜单的配置文件。

    sudo mkdir /var/lib/tftpboot/pxelinux.cfg
    sudo vim /var/lib/tftpboot/pxelinux.cfg/default

    如下:

    default menu.c32
    prompt 0
    timeout 60
    MENU TITLE PXE Boot Menu
    LABEL centos7_x64_install
        MENU LABEL Install CentOS 7 x64 with Kickstart
        KERNEL vmlinuz
        APPEND initrd=initrd.img ks=http://192.168.10.10/ks.cfg

    这里的 ks=http://192.168.10.10/ks.cfg 指向了我们的Kickstart自动化应答文件。

  5. 启动并设置服务自启:

    sudo systemctl start xinetd
    sudo systemctl enable xinetd

第三步:配置HTTP服务与Kickstart文件

HTTP服务用于提供安装源和Kickstart文件。

  1. 安装并启动HTTP服务:

    sudo yum install httpd -y
    sudo systemctl start httpd
    sudo systemctl enable httpd
  2. 发布安装源:
    将CentOS ISO镜像中的所有内容复制到Apache的默认根目录。

    sudo cp -r /mnt/centos-iso/* /var/www/html/

    可以通过 http://192.168.10.10/ 访问到安装源。

    CentOS如何配置PXE实现无人值守网络安装系统?

  3. 创建Kickstart文件:
    Kickstart文件定义了安装的所有细节,我们可以从已安装好的CentOS系统中复制 /root/anaconda-ks.cfg 作为模板,然后进行修改,在PXE服务器上创建 /var/www/html/ks.cfg 文件。

    sudo vim /var/www/html/ks.cfg

    一个简化的 ks.cfg 示例:

    #version=RHEL7
    install
    url --url="http://192.168.10.10/"
    lang en_US.UTF-8
    keyboard us
    network --bootproto=dhcp --device=eth0 --onboot=yes
    rootpw --plaintext your_password
    firewall --disabled
    selinux --disabled
    timezone Asia/Shanghai
    bootloader --location=mbr
    clearpart --all --initlabel
    part /boot --fstype="xfs" --size=500
    part swap --size=2048
    part / --fstype="xfs" --grow --size=1
    %packages
    @core
    %end

    请务必修改 rootpwurl 等关键参数。

第四步:防火墙配置与测试

确保防火墙允许相关服务的流量。

sudo firewall-cmd --permanent --add-service=dhcp
sudo firewall-cmd --permanent --add-service=tftp
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

至此,PXE服务器已全部配置完成,将一台客户端计算机的BIOS启动项设置为网络启动(PXE Boot),它将自动从DHCP获取IP,然后显示我们配置的PXE菜单,选择 “Install CentOS 7 x64 with Kickstart” 后,系统将自动完成整个安装过程,无需任何人工干预。


相关问答FAQs

问1:客户端启动后,提示 “PXE-E53: No boot filename received” 或 “TFTP open timeout” 是什么原因?
答: 这个错误通常意味着客户端成功从DHCP服务器获取了IP地址,但没有收到 filenamenext-server 参数,或者无法连接到TFTP服务器,请按以下步骤排查:

  1. 检查DHCP配置: 确认 /etc/dhcp/dhcpd.conf 文件中的 next-server 地址是PXE服务器的正确IP,filename 是 “pxelinux.0″。
  2. 检查TFTP服务状态: 运行 systemctl status xinetd 确保服务正在运行。
  3. 检查防火墙: 确保PXE服务器的防火墙已放行UDP 69端口(TFTP)和UDP 67/68端口(DHCP),可以使用 sudo firewall-cmd --list-all 查看。
  4. 检查文件权限: 确认 /var/lib/tftpboot 目录及其内部文件的权限允许其他用户读取。sudo chmod -R 755 /var/lib/tftpboot 通常可以解决问题。

问2:安装程序启动后,提示无法找到安装源,或者进入了手动选择安装源的界面,这是为什么?
答: 这个问题表明Kickstart文件没有被正确读取,或者文件中指定的安装源URL不正确,排查方法如下:

  1. 检查Kickstart文件URL: 确认PXE菜单配置文件 default 中的 ks=... 参数指向的URL是正确的,http://192.168.10.10/ks.cfg
  2. 验证HTTP服务: 在PXE服务器上,使用 curl http://192.168.10.10/ks.cfg 命令,看是否能正常下载到文件内容,如果不能,请检查 httpd 服务状态和防火墙设置。
  3. 检查Kickstart文件内容: 打开 ks.cfg 文件,核对 url --url="..." 这一行,确保其地址指向了正确的HTTP安装源根目录,http://192.168.10.10/,URL末尾的斜杠很重要,不要遗漏。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-03 15:26
下一篇 2025-10-03 15:28

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信