要使用PXE批量部署,必须要有DHCP,TFTP,一个可以作为镜像源传输的Web服务或者文件服务,这里使用apache做镜像源,RockyLinux9作为批量部署的镜像,拿VMware模拟环境。正常最好使用Web服务器来做镜像源传输,一个是万一出错好排查,另一个是有的可能不支持某些服务做镜像源(例如RHEL不支持NFS...比较麻烦)

题外话,我的centos7镜像很老了,同时我是使用的镜像直接挂载作为软件下载源的。如果是新一点的发行版安装的软件名称是不一样的,下面开始...


环境构建

  1. 先通过虚拟网络编辑器创建一个新的网Vmnet,设置为NAT模式,不使用DHCP


    屏幕截图 2026-05-06 154544.png

  2. 新建一个虚拟机作为服务端,硬件配置随意,网络适配器保证是刚刚创建的VMnet8,CD设置成要批量部署的镜像ISO

  3. 屏幕截图 2026-05-06 173814.png

  4. 创建另一个虚拟机作为要安装镜像的客户端,配置随意,内存最好2G以上,否则可能报错影响镜像安装

    屏幕截图 2026-05-06 174156.png




开始配置服务器

  1. 启动后镜像安装时直接下一步好了,也可以省事选择现有的直接安装好,网卡我也没有进行配置,主打的一个用命令行折磨自己。另外就是centos7的默认特权操作还挺麻烦的...一会儿就会过期要输密码,所以我会直接以root登录来部署

    屏幕截图 2026-05-06 174956.png

  2. 安装完成后先配置网卡,网卡文件在/sysconfig/networks-scripts/文件夹中,以ifcfg开头网卡设备名称结尾,我的是ens33所以是ifcfg-ens33。也可以使用nmtui、nmcli来操作更快一些,但是改文件后需要重启一下Network-Manager服务,否则配置有可能不加载,用nmcli的reload也没用

    需要修改默认的获取ip方式为静态,改为开机自启,在文件末尾两行添上地址和掩码

    屏幕截图 2026-05-07 041927.png

    改完后重启,通过ip addr看到地址变更后就ok了

    屏幕截图 2026-05-07 043839.png

  3. 删掉所有repo,手写repo以本地ISO作为下载源,镜像我提前挂载到了/mnt/cdrom下。如果你使用网络下载源请跳过该部分...


    屏幕截图 2026-05-06 201029.png

    最后yum clean all,并yum makecache即可。如果没有出现大一段文字报错那配置是没有问题的

    屏幕截图 2026-05-06 201054.png

  4. 安装DHCP服务使用httpd软件包,完成后修改/etc/dhcp/dhcpd.conf,添加DHCP配置,如下示例

    # 全局配置
    option domain-name "pxe.example.com";   # 可选,设置域名
    default-lease-time 600;     
    max-lease-time 7200;
    authoritative;          # 声明为网络中的权威 DHCP 服务器
     
    # 子网配置(客户端所在网段)
    subnet <客户端子网> netmask <子网掩码> {
      range <起始IP> <结束IP>;          # 分配给客户端的IP范围
      option routers <网关IP>;          # 可选,客户端默认网关
      option subnet-mask <子网掩码>;        # 可选,客户端默认掩码
      option domain-name-servers <DNS服务器IP>;     # 可选,客户端DNS
     
      # PXE 核心选项:告知客户端 TFTP 服务器IP和引导文件名
      next-server <PXE服务器IP>;      # TFTP服务器IP(即PXE服务器自身IP)
      filename "pxelinux.0";  # BIOS环境引导文件(UEFI需改为 grubx64.efi)
    }

    完成后用systemctl enable --now dhcpd运行服务

  5. 安装TFTP服务,TFTP用来传输PXE启动的镜像。tftp-server是以socket运行的,如果要修改配置需要改运行服务的systemd。xinted托管的tftp服务用的更多,这里安装xinetd和tftp-server软件包,配置文件位于/etc/xinetd.d/tftp,直接将disable设置为no再启动一下服务就可以了。也可以改server_args来修改tftp的文件夹,只不过多一些步骤,默认的文件夹就是后面syslinux默认安装的位置

    屏幕截图 2026-05-07 035804.png

  6. 安装syslinux,这些文件是PXE引导需要的文件。软件包名称为syslinux-tftpboot,新一些的发行版要用syslinux-common

    屏幕截图 2026-05-07 044609.png

    如果你修改了tftp默认的文件夹位置,需要手动复制文件到TFTP文件夹,下面的文件中需要menu.c32,vesamenu.c32,libutil.c32,chain.c32

    屏幕截图 2026-05-07 045010.png

  7. 在tftp文件夹下新建一个以pxelinux.cfg命名的文件夹,新建一个default名称的文件编辑如下内容

    屏幕截图 2026-05-07 075735.png

    解释一下各个参数的意思,同时append选择一种方式写就可以了,无盘启动是我在其他地方看到的一个教程所写的,顺带提一嘴,正常写用最下面那个就可以了

    DEFAULT menu.c32          # 使用菜单模块,也可以使用vesamenu.c32
    PROMPT 0                  # 不显示命令行提示符(超时后自动选择默认选项)
    TIMEOUT 300               # 超时时间(单位:1/10秒,300=30秒)
    MENU TITLE PXE install    # 菜单标题    
     
     
    # 选项 标签
    LABEL ubuntu2204                        # 选项名称,这个也和菜单标题自己随便写
      MENU LABEL ^1.rocky9 install          # ^是显示作用,这个也是标题自己随便写
      KERNEL vmlinuz                        # 内核路径(相对于 TFTP 根目录)
      INITRD initrd.img                     # 初始化路径,这个具体依据安装镜像提供的来,也可以将这个加在下一行append中
      APPEND root=/dev/nfs nfsroot=192.168.1.100:/srv/nfs/rocky9 ip=dhcp rw        # NFS 无盘启动,这个依赖内核对NFS的支持,视情况可能要改NFS版本
      APPEND inst.repo=nfs:192.168.10.1:/srv/nfs/rocky9                            # 正常的写法,不同发行版镜像有些不同,debian的开头用的是url或者其他,
  8. 安装apache,软件包为httpd,我的已经安装了,完成后在网站文件夹/var/www/html下新建一个文件夹作为镜像目录。因为旧的DVD口被用作软件镜像源了,所以新加一个DVD,挂载要部署镜像

    屏幕截图 2026-05-07 061956.png

    屏幕截图 2026-05-07 054820.png

    如果设置了已连接但是没有出现sr1可以手动让所有scsi主机扫描一下...最后将镜像挂载到之前新建的目录

    屏幕截图 2026-05-07 061516.png

  9. 再将vmlinuz和initrd文件复制到TFTP文件夹下

    屏幕截图 2026-05-07 065014.png

    别忘了关防火墙systemctl stop firewalld,到此服务端配置告一段落...




客户端启动!

  1. 如果看到下面的界面,就代表成功一大半了。这里按下Enter键,会自动加载界面,等一会儿就能进安装页面了...

    屏幕截图 2026-05-07 064617.png

  2. 加载后就和正常装linux的过程一样了

    屏幕截图 2026-05-07 075849.png

    屏幕截图 2026-05-07 081553.png



如果加载过程中出现了如下界面就将内存调大,是因为内存不足导致的问题

屏幕截图 2026-05-07 071909.png




一篇更完善的指南教程

一篇更硬的指南教程

[拓展]kickstart无人值守专讲

[拓展]带有kickstart配置解析的指南

[拓展]CentOS6下针对kickstart配置文件的解析