大家好,今天我打算通过PXE和Kickstart无人值守安装Linux。
先给大家提一下什么是PXE?
PXE是一种由Intel开发的技术,允许计算机通过网络从远程服务器下载引导镜像并启动操作系统。配合Kickstart自动应答文件,我们就能让整个安装过程完全自动化,真正做到“零人工干预”。
那什么是Kickstart呢?
Kickstart是Red Hat及其衍生发行版(如CentOS、Fedora)中推出的一种自动化安装配置方案。它本质上是一个包含安装参数(如磁盘分区、语言时区、软件包选择、网络设置等)的文本应答文件,通常名为ks.cfg。在PXE引导加载安装内核后,安装程序会自动读取该文件并据此执行全流程安装,无需人工交互。结合PXE的网络引导能力,Kickstart将“无人值守”从概念落地为现实,让批量部署成百上千台服务器变得像“插电开机”一样简单高效。
整个流程可以分为几个核心步骤:
配置DHCP服务时,关键在于定义子网范围、默认网关、DNS服务器,并指定PXE引导文件为pxelinux.0。例如:
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; filename "pxelinux.0"; }
TFTP服务的配置同样重要。在/etc/xinetd.d/tftp中,需启用服务、指定根目录为/var/lib/tftpboot,并确保使用UDP协议、多线程运行。之后,将Syslinux提供的pxelinux.0、ldlinux.c32等文件复制到TFTP根目录,并创建pxelinux.cfg/default引导菜单文件,毕竟引导菜单是自动化的核心桥梁。
我通常先测试基础引导是否成功:在default文件中仅配置内核与initrd路径,不加Kickstart参数。当客户端能顺利进入安装界面,说明网络引导链路已通。此时,再添加Kickstart自动应答文件ks.cfg,其中定义语言、键盘、网络、分区、root密码、时区、软件包选择等全部参数。例如:
lang en_US.UTF-8 keyboard us network --bootproto=dhcp --onboot=yes url --url=http://192.168.1.100/centos rootpw --plaintext GaltonLai123 clearpart --all --initlabel autopart --type=lvm timezone Asia/Shanghai --isUtc bootloader --location=mbr %packages @minimal install %end reboot
最后,将CentOS镜像挂载到HTTP服务的/var/www/html/centos目录下,启动所有服务,重启客户端虚拟机——它会自动获取IP、下载引导文件、加载内核、读取Kickstart脚本,全程无需人工介入。
自动化脚本之后就开始安装了实践证明,这套方案稳定可靠。当然,过程中也踩过坑:比如忘记关闭防火墙导致TFTP超时,或Kickstart语法错误引发安装中断。
建议初学者先用单台虚拟机反复调试,确认每个环节无误后再扩展规模。