还在手动装系统?试试PXE Linux批量装机真香!

admin 系统小妙招 2025-10-15 3 0

还在手动装系统?试试PXE Linux批量装机真香!

还在手动装系统?试试PXE Linux批量装机真香!

被机房支配的恐惧?PXE Linux来救场!

嗨,伙计们!还记得上次你们机房来了批新服务器,或者要给几十台办公机重装系统时,那个抱着U盘或光盘跑来跑去的崩溃时刻吗?
腿都要跑细了,时间都耗在重启-选择启动项-等待安装-再重启的循环里。别问我怎么知道的,说出来都是泪!
今天就跟大家唠一个运维和网管的“保命”技能——搭建一套属于你自己的PXE Linux启动服务器!这玩意儿搞定了,批量装系统真就是喝杯咖啡的功夫。

PXE Linux?听起来高大上,其实很实用!

简单来说,PXE Linux就是通过网络启动并安装Linux系统(当然,配合特定工具也能处理Windows)。
全称Preboot eXecution Environment,意思就是机器在启动时,网卡会找网络上的服务器要启动文件。
整套PXE Linux自动批量部署方案的核心思想,就是让客户端电脑从你准备好的服务器上获取启动镜像、安装程序和系统文件,自动完成安装。
想象一下,新机器插上网线、开机,它自己就知道从哪下载系统并安装好,全程你只需要在服务器上点点鼠标或者输条命令,这才是真·自动化运维!

手把手教你搭建PXE Linux启动环境

准备开整,这些“家伙什”不能少

搞定一个功能完善的PXE启动环境搭建,需要这几块拼图:
  • 服务器(主角):一台安装Linux(推荐CentOS/RHEL、Ubuntu Server或Debian)并固定IP的机器,作为你的“中央指挥塔”。
  • 服务软件(核心力量):
    • DHCP Server:给网络中的待装机设备自动分配IP地址,并告诉它们启动文件在哪(重要!)。
    • TFTP Server:存放“小个头”启动文件(内核、初始文件系统等),客户端启动的第一站。启动文件很小,TFTP的轻量特性很关键。
    • HTTP/NFS Server:存放“大个头”系统安装文件ISO镜像或者解压后的完整安装树。
  • 系统镜像(弹药库):你打算通过网络批量安装的Linux发行版ISO镜像文件。
  • 网络环境(高速公路):所有机器(服务器和待装机的客户端)必须在同一局域网内,交换机就行,广播要能互通。

搭建核心服务:DHCP + TFTP

1. 安装必要软件包:

假设你用CentOS/RHEL(其他系统命令稍有差异):
# 安装DHCP、TFTP服务及相关工具
sudo yum install dhcp tftp-server syslinux httpd -y

2. 配置DHCP服务器:

还在手动装系统?试试PXE Linux批量装机真香!
编辑 /etc/dhcp/dhcpd.conf (可能需要先复制一份 /usr/share/doc/dhcp*/dhcpd.conf.example)
关键配置如下(根据你的网络修改IP段和网关):
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.150 192.168.1.200;
  option routers 192.168.1.1;
  option domain-name-servers 8.8.8.8;
  next-server 192.168.1.100; # 指向TFTP服务器IP(就是你的服务器)
  filename "pxelinux.0"; # 告诉客户端要找的第一个启动文件名
}
启动DHCP并设为开机启动:
sudo systemctl start dhcpd
sudo systemctl enable dhcpd


3. 配置TFTP服务器:

编辑 /etc/xinetd.d/tftp (或 /lib/systemd/system/tftp.service 根据新版调整),确保:
service tftp
{
  socket_type       = dgram
  protocol         = udp
  wait             = yes
  user            = root
  server          = /usr/sbin/in.tftpd
  server_args      = -s /var/lib/tftpboot -v # 核心! 指定TFTP根目录,开启日志
  disable          = no # 确保这里是 no!
  per_source      = 11
  cps             = 100 2
}
创建TFTP根目录并复制必要的引导文件:
mkdir -p /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/
重启xinetd或者tftp服务使其生效:
sudo systemctl restart tftp
sudo systemctl enable tftp


部署你的Linux安装镜像!

以部署CentOS 7为例:

  1. 挂载ISO镜像到本地目录:
    sudo mount -o loop /path/to/CentOS-7-x86_64-Minimal-2009.iso /mnt/iso
  2. 复制内核(vmlinuz)和初始内存盘(initrd.img):
    sudo cp /mnt/iso/images/pxeboot/vmlinuz /var/lib/tftpboot/
    sudo cp /mnt/iso/images/pxeboot/initrd.img /var/lib/tftpboot/
  3. 准备安装源(以HTTP为例):
    • 启动HTTP服务:sudo systemctl start httpd
    • 复制ISO镜像内容(或者直接挂载点)到HTTP根目录:
      sudo mkdir -p /var/www/html/centos7
      sudo cp -r /mnt/iso/* /var/www/html/centos7/
      (或者更优方案:sudo umount /mnt/iso
      sudo mount -o loop,ro /path/to/your.iso /var/www/html/centos7
      注意修改fstab或autofs自动化)
  4. 配置启动菜单:在TFTP根目录下的pxelinux.cfg文件夹创建配置文件:
    /var/lib/tftpboot/pxelinux.cfg/default
    内容示例:
    default vesamenu.c32
    timeout 300
    menu title 我的PXE Linux安装菜单
    label install_centos7
      menu label ^1) Install CentOS 7 x86_64
      kernel vmlinuz
      append initrd=initrd.img inst.repo=http://192.168.1.100/centos7 inst.ks=http://192.168.1.100/kickstart/ks.cfg # 核心安装源地址 & Kickstart自动化!
    这里inst.ks指向一个Kickstart自动应答文件,是实现Linux自动批量部署方案的关键!它可以定义分区方案、软件包选择、用户密码、网络配置等。创建Kickstart文件需要单独学习,用system-config-kickstart(桌面环境)或手动编写。

开机启动,见证奇迹!

搞定上面配置后:
  1. 确保目标客户机(待装机设备)的BIOS/UEFI设置为网络(PXE)启动为第一启动项
  2. 将目标客户机接入同一局域网。
  3. 开机!它应该会从你的DHCP服务器获取IP,然后连接到TFTP服务器下载pxelinux.0和菜单文件。
  4. 屏幕上会出现你配置的PXE Linux启动服务器提供的启动菜单(如上面示例的CentOS安装选项)。
  5. 选择相应的安装项,回车后,客户端会下载内核和initrd启动,然后连接到你的HTTP服务(如http://192.168.1.100/centos7)获取安装文件。
  6. 如果配置了Kickstart文件,整个过程将完全自动进行!没有Kickstart,就会进入交互式安装界面,但安装源依然是通过网络。

避坑指南 & 小贴士

防火防盗防配置!

  • 防火墙!防火墙!防火墙!重要事情说三遍!
    上面配置的服务端口要开放(DHCP: 67/udp, TFTP: 69/udp, HTTP: 80/tcp)。
    CentOS/RHEL使用sudo firewall-cmd --add-service=dhcp --permanent
    sudo firewall-cmd --add-service=tftp --permanent
    sudo firewall-cmd --add-service=http --permanent
    sudo firewall-cmd --reload
  • SELinux:配置不当容易导致TFTP或HTTP读取文件失败。建议先setenforce 0调试,或根据日志配置正确的SELinux上下文。
  • BIOS vs UEFI:UEFI模式启动需要grubx64.efi之类的EFI引导文件,配置更复杂一些。确保你的PXE启动环境搭建与目标机固件类型匹配。对于混合环境的管理,Window 11/10/Server系统内置的网络策略、WDS(Windows部署服务)或第三方工具如SCCM在部署Windows设备和管理多类型启动镜像方面有其便利和集成化的优势,尤其是在管理大量异构设备时,一个统一的管理界面确实能提升效率。

性能优化和扩展

  • 缓存代理:如果部署频率极高或带宽紧张,可以在PXE Linux启动服务器和公网源之间部署缓存代理(如squid)。
  • 镜像管理:为不同系统创建独立的TFTP子目录(centos7, ubuntu2204)和HTTP/NFS目录存放不同版本的镜像。
  • 菜单优化:使用vesamenu.c32提供美观的图形菜单。
  • 日志!开启服务日志(DHCP, TFTP, HTTP)是排查问题的第一手资料。
  • 实践小技巧:
    • tftp localhost -c get pxelinux.0 在服务器上测试TFTP是否正常提供文件。
    • 使用tail -f /var/log/messages 或相关服务的日志文件实时监控调试信息。
    • 使用dnf install tcpdump 抓取目标网口上的流量包进行底层排查。

总结:PXE Linux,批量装机好帮手

花点时间搭建好这套PXE Linux启动服务器,绝对是你运维生涯里最划算的投资之一!
无论是管理机房服务器,还是给办公区几十台电脑重装系统,或者建立一个实验室环境,一个稳定高效的PXE启动环境搭建会让你彻底告别手动安装时代。
特别是当你结合Kickstart/Preseed等无人值守安装技术,Linux自动批量部署方案就成了现实。它能极大提升效率,减少人为错误。
Window系统管理虽然有其生态内的强大部署工具(WDS、SCCM、MDT等),但PXE Linux方案因其开源、免费、高度灵活的特性,在Linux运维、云计算基础设施构建以及混合环境下提供基础网络启动服务方面,拥有独特的魅力和不可替代的地位。
赶紧动手试试吧!开始可能踩几个坑,但搞通了那成就感杠杠的!有什么问题,评论区随时聊~