还在手动装系统?试试PXE Linux批量装机真香!
1. 安装必要软件包:
假设你用CentOS/RHEL(其他系统命令稍有差异):sudo yum install dhcp tftp-server syslinux httpd -y
2. 配置DHCP服务器:
/etc/dhcp/dhcpd.conf
(可能需要先复制一份 /usr/share/doc/dhcp*/dhcpd.conf.example
)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
以部署CentOS 7为例:
sudo mount -o loop /path/to/CentOS-7-x86_64-Minimal-2009.iso /mnt/iso
sudo cp /mnt/iso/images/pxeboot/vmlinuz /var/lib/tftpboot/
sudo cp /mnt/iso/images/pxeboot/initrd.img /var/lib/tftpboot/
sudo systemctl start httpd
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自动化)/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
(桌面环境)或手动编写。pxelinux.0
和菜单文件。http://192.168.1.100/centos7
)获取安装文件。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
setenforce 0
调试,或根据日志配置正确的SELinux上下文。grubx64.efi
之类的EFI引导文件,配置更复杂一些。确保你的PXE启动环境搭建与目标机固件类型匹配。对于混合环境的管理,Window 11/10/Server系统内置的网络策略、WDS(Windows部署服务)或第三方工具如SCCM在部署Windows设备和管理多类型启动镜像方面有其便利和集成化的优势,尤其是在管理大量异构设备时,一个统一的管理界面确实能提升效率。centos7
, ubuntu2204
)和HTTP/NFS目录存放不同版本的镜像。vesamenu.c32
提供美观的图形菜单。tftp localhost -c get pxelinux.0
在服务器上测试TFTP是否正常提供文件。tail -f /var/log/messages
或相关服务的日志文件实时监控调试信息。dnf install tcpdump
抓取目标网口上的流量包进行底层排查。