网络引导(PXE)安装是一种高效的服务器系统部署方式,它允许计算机从网络服务器启动,而非本地硬盘或光盘,对于需要批量部署CentOS系统的场景,如数据中心或机房,掌握如何PXE安装Centos是一项极具价值的技能,它不仅简化了安装流程,更通过与Kickstart技术的结合,实现了完全自动化的“无人值守”安装,极大地提升了运维效率。
核心组件与工作原理
要实现PXE安装,我们需要搭建一个包含几个关键服务的服务器环境,客户端计算机在启动时通过网卡上的PXE芯片发起请求,整个流程如下:
- 客户端:需要安装CentOS的目标计算机,其BIOS/UEFI需支持网络启动。
- DHCP服务器:为客户端分配IP地址,并 crucially 告知客户端TFTP服务器的地址和需要下载的启动文件名。
- TFTP服务器:一个简单的文件传输协议服务器,用于向客户端提供初始引导所需的文件,如引导加载程序(
pxelinux.0
)、Linux内核(vmlinuz
)和初始内存盘(initrd.img
)。 - HTTP/FTP/NFS服务器:存放完整的CentOS安装镜像文件,客户端在获得内核后,会从此服务器下载安装过程中所需的软件包。
- Kickstart文件(可选但推荐):一个预设的配置文件,定义了安装过程中的所有选择,如分区方案、root密码、网络配置和软件包选择等,是实现自动化安装的核心。
下表清晰地展示了各组件的职责:
组件角色 | 主要职责 | 常用软件/协议 |
---|---|---|
DHCP服务器 | 分配IP,指定TFTP服务器地址和引导文件 | dhcp (ISC DHCP) |
TFTP服务器 | 提供网络启动所需的初始引导文件 | tftp-server |
文件服务器 | 提供完整的操作系统安装源 | httpd (HTTP), vsftpd (FTP), nfs-utils (NFS) |
引导加载程序 | 提供启动菜单,加载内核和内存盘 | syslinux |
自动化配置 | 定义安装参数,实现无人值守安装 | Kickstart (ks.cfg ) |
环境搭建与配置详解
以下步骤将以一台CentOS 7服务器同时充当DHCP、TFTP和HTTP服务器为例进行说明。
安装必要软件包
在服务器上安装所需的软件,执行以下命令:
yum install -y dhcp tftp-server syslinux httpd
配置DHCP服务
编辑DHCP配置文件 /etc/dhcp/dhcpd.conf
,关键在于 next-server
和 filename
两个参数。
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option domain-name-servers 8.8.8.8;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
# --- PXE Specific Options ---
next-server 192.168.1.10; # TFTP服务器的IP地址
filename "pxelinux.0"; # 引导文件名
}
配置完成后,启动并启用dhcpd服务:systemctl start dhcpd && systemctl enable dhcpd
。
配置TFTP服务
TFTP的根目录默认为 /var/lib/tftpboot
,我们需要将启动文件复制到此目录。
# 复制syslinux提供的引导文件 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/ cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/ # 挂载CentOS ISO镜像并复制内核和内存盘 mount /path/to/CentOS-7-x86_64-Minimal.iso /mnt cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/ cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
创建PXE引导菜单配置文件,首先创建目录 mkdir /var/lib/tftpboot/pxelinux.cfg
,然后在该目录下创建名为 default
的文件:
default vesamenu.c32
prompt 1
timeout 60
display boot.msg
label 1
menu label ^Install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.1.10/centos7 ks=http://192.168.1.10/ks.cfg
label 2
menu label Boot from ^local drive
localboot 0xffff
此配置定义了一个安装选项,并指定了安装源(inst.repo
)和Kickstart文件(ks
)的HTTP地址,启动tftp服务:systemctl start tftp && systemctl enable tftp
。
配置HTTP服务与安装源
将CentOS安装文件通过HTTP发布出去。
mkdir /var/www/html/centos7 cp -r /mnt/* /var/www/html/centos7/
将预先准备好的 ks.cfg
文件也放入 /var/www/html/
目录下,确保httpd服务运行:systemctl start httpd && systemctl enable httpd
。
确保防火墙允许DHCP、TFTP和HTTP服务的流量通过。
启动客户端进行安装
将目标客户端计算机的启动模式设置为“Network Boot”或“PXE Boot”,重启后,它将自动从网络获取IP,下载引导文件,显示我们配置的安装菜单,选择“Install CentOS 7”后,系统将根据 ks.cfg
文件的预设开始全自动安装,无需人工干预。
相关问答FAQs
Q1: PXE启动失败,客户端提示“PXE-E32: TFTP open timeout”,该如何排查?
A1: 这个错误通常意味着客户端无法连接到TFTP服务器或无法下载文件,请按以下步骤排查:
- 服务状态:在服务器上检查
tftp
服务是否正在运行:systemctl status tftp
。 - 防火墙:确保服务器的防火墙允许TFTP服务(UDP端口69)通过,可以执行
firewall-cmd --add-service=tftp --permanent && firewall-cmd --reload
。 - 网络连通性:从客户端使用
tftp
命令测试是否能连接到服务器的TFTP端口,或直接ping
TFTP服务器IP,确认网络无障碍。 - 文件权限:检查
/var/lib/tftpboot
目录及其内部文件的权限,确保tftp
服务进程有读取权限。
Q2: 如何实现完全无人值守安装,避免在启动菜单中选择?
A2: 要实现完全无人值守,需要修改 /var/lib/tftpboot/pxelinux.cfg/default
文件,将 prompt
的值设为 0
,并将需要默认执行的选项(如安装CentOS)设为 menu default
,这样,PXE引导将不会显示菜单,而是在倒计时结束后自动执行默认的安装命令,如果倒计时 timeout
设置为 1
,则几乎是立即执行,这样结合 ks.cfg
文件,就能实现从开机到安装完成的全过程自动化。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复