步骤 1:安装必要软件包
在 PXE 服务器(10.233.11.2)上执行命令,安装 PXE 服务所需的软件包:
yum install -y tftp-server dhcp httpd syslinux
注释:yum
是 CentOS 的包管理器。tftp-server
用于提供 TFTP 服务,让 PXE 客户端获取引导文件;dhcp
用于为客户端分配 IP 地址;httpd
用来提供安装镜像;syslinux
包含 PXE 引导必需的工具和文件。
步骤 2:配置 TFTP 服务
2.1 编辑 TFTP 服务配置文件
vi /etc/xinetd.d/tftp
将文件中的 disable
选项从 yes
改为 no
,修改后的内容如下:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
注释:TFTP 服务默认禁用,disable = no
开启服务。server_args
指定 /var/lib/tftpboot
为 TFTP 服务根目录,PXE 客户端将从这里获取引导文件。
2.2 启动并设置 TFTP 服务开机自启
systemctl start xinetd
systemctl enable xinetd
注释:systemctl start xinetd
立即启动 xinetd
服务(TFTP 由其管理),systemctl enable xinetd
确保系统开机时自动启动 TFTP 服务。
步骤 3:配置 DHCP 服务
3.1 编辑 DHCP 服务配置文件
vi /etc/dhcp/dhcpd.conf
在文件中添加以下内容,注意 IP 范围需与需求一致:
subnet 10.233.11.0 netmask 255.255.255.0 {
range 10.233.11.3 10.233.11.4; # 为客户端分配的IP地址范围
option routers 10.233.11.2; # PXE服务器作为网关
option domain-name-servers 8.8.8.8; # DNS服务器地址
next-server 10.233.11.2; # TFTP服务器地址
filename "pxelinux.0"; # PXE引导文件
}
注释:subnet
和 netmask
确定子网范围;range
指定客户端 IP 范围;option routers
设定网关;next-server
指明 TFTP 服务器;filename
确定引导文件。
3.2 启动并设置 DHCP 服务开机自启
systemctl start dhcpd
systemctl enable dhcpd
注释:systemctl start dhcpd
启动 DHCP 服务,systemctl enable dhcpd
使其开机自启,保证客户端能获取 IP。
步骤 4:配置 HTTP 服务
systemctl start httpd
systemctl enable httpd
注释:systemctl start httpd
启动 HTTP 服务,systemctl enable httpd
让其开机自启,用于提供 CentOS 7.9 安装镜像。
步骤 5:准备 CentOS 7.9 镜像文件
5.1 挂载 ISO 镜像
mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt
注释:mount
命令将 ISO 镜像以循环挂载方式挂载到 /mnt
目录,以便访问镜像内容。
5.2 复制镜像文件到 HTTP 服务根目录
cp -r /mnt/* /var/www/html/centos7/
注释:将 ISO 镜像所有文件复制到 /var/www/html/centos7/
,供 PXE 客户端通过 HTTP 下载安装文件。
步骤 6:配置 PXE 引导文件
6.1 复制必要文件到 TFTP 目录
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg
注释:
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
:复制 PXE 客户端启动的首个文件。cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
:复制内核和初始化文件。mkdir /var/lib/tftpboot/pxelinux.cfg
:创建存放引导菜单配置文件的目录。
6.2 创建 PXE 引导菜单配置文件
vi /var/lib/tftpboot/pxelinux.cfg/default
添加以下内容:
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
menu title ########## PXE Boot Menu ##########
label centos7
menu label ^Install CentOS 7
kernel vmlinuz
append initrd=initrd.img inst.repo=http://10.233.11.2/centos7 ks=http://10.233.11.2/centos7/ks.cfg
注释:
default menu.c32
:指定默认菜单显示程序。prompt 0
:不显示提示,直接进入菜单。timeout 300
:菜单超时时间 300 秒。label centos7
:定义菜单项,append
后指定安装源和 Kickstart 文件地址。
步骤 7:创建 Kickstart 文件
vi /var/www/html/centos7/ks.cfg
添加以下内容,特别注意密码需使用openssl passwd -6
生成真实加密密码替换占位符:
#version=DEVEL
# 配置文件版本,通常设为DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# 启用影子密码,用SHA-512算法加密密码,增强安全性
# Use CDROM installation media
cdrom
# 虽指定光盘介质,但实际从网络源安装
# Use graphical install
graphical
# 选择图形化安装界面,若需文本模式改为text
# Run the Setup Agent on first boot
firstboot --enable
# 系统首次启动运行设置向导
ignoredisk --only-use=sda
# 仅使用sda磁盘安装,忽略其他磁盘,注意确认磁盘名称正确
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# 设置美式键盘布局
# System language
lang en_US.UTF-8
# 设置系统语言为美式英语,UTF-8编码
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on --ipv6=auto --no-activate
# 用DHCP获取IP,设备为eth0,开机启用,自动配置IPv6,暂不激活连接
network --hostname=localhost.localdomain
# 设置主机名
# Root password
rootpw --iscrypted $6$your_root_password_hash
# 设置root密码,必须用openssl passwd -6生成加密密码替换占位符
# System services
services --enabled="chronyd"
# 启用chronyd服务进行时间同步
# System timezone
timezone Asia/Shanghai --isUtc
# 设置时区为亚洲/上海,使用UTC时间
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# 配置引导加载程序,安装到MBR,引导磁盘为sda
autopart --type=lvm
# 自动分区,采用LVM方式
# Partition clearing information
clearpart --all --initlabel --drives=sda
# 清除sda磁盘所有分区并初始化标签,操作前确保无重要数据
%packages
# 定义安装的软件包
@^minimal
# 安装最小化系统环境软件包组
@core
# 安装核心软件包组
chrony
# 安装chrony时间同步软件
kexec-tools
# 安装kexec工具,用于快速重启系统
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
# 启用kdump功能,自动分配内存收集内核转储信息
%end
%anaconda
# Anaconda安装程序策略配置
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
# 设置root密码策略,最小长度6,不严格检查,不允许更改,不能为空
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
# 设置普通用户密码策略,密码可为空
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
# 设置LUKS加密密码策略
%end
# 创建普通用户
user --name=your_username --password=$6$your_user_password_hash --groups=wheel
# 创建普通用户,添加到wheel组,密码必须用openssl生成加密密码替换占位符
步骤 8:客户端进行 PXE 安装
- 防火墙设置:确保 PXE 服务器防火墙开放相关端口,执行以下命令:
firewall-cmd --permanent --add-service=tftp
firewall-cmd --permanent --add-service=dhcp
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port=67/udp
firewall-cmd --permanent --add-port=68/udp
firewall-cmd --permanent --add-port=69/udp
firewall-cmd --reload