部署PXE远程安装
PXE(预启动执行环境,Preboot eXecution Environment)是由Intel公司开发的网络引导技术,它工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或整个操作系统。
PXE远程安装概述
定义:PXE技术允许计算机在操作系统启动之前,通过网络接口(如网卡)从远程服务器下载并运行引导程序,进而加载操作系统安装文件或进行系统配置。
优点:
- 规模化:可以同时装配多台服务器或客户端计算机。
- 自动化:自动化安装系统和配置各种服务,减少人工干预。
- 远程实现:不需要光盘、U盘等物理安装介质,降低安装成本。
PXE远程安装条件
- 客户端条件:
- 网卡支持PXE协议(集成BOOTROM芯片)。
- 主板支持网络引导,通常需要在BIOS设置中允许从Network或LAN启动。
(一般大多数服务器主机都支持,只需在BIOS设置中允许从 Network 或 LAN 启动即可。)
- 网络环境:
- 网络中需要有一台DHCP服务器,以便为客户机自动分配IP地址和指定引导文件位置。
- 服务器上需要运行TFTP(简单文件传输协议)服务,提供引导镜像文件的下载。
- 服务器端配置:
- 服务器应集成CentOS或其他Linux发行版的安装源、TFTP服务、DHCP服务以及FTP服务(可选,用于提供安装文件)。
PXE远程安装配置
搭建 PXE 远程安装服务器
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能够向客户机裸机发送 PXE引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
1. 安装并启用 TFTP 服务
TFTP(简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP,端口69
xinetd是新一代的网络守护进程服务程序,又叫超级服务器,常用来管理多种轻量级Internet服务。
- 下载:
yum -y install tftp-server xinetd
- 修改TFTP服务的配置文件:
vim /etc/xinetd.d/tftp
protocol = udp #TFTP使用UDP协议
wait = no #no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接
server_args = -s /var/lib/tftpboot #指定TFTP根目录(文件存储路径)
disable = no #no表示开启TFTP服务
- 开启tftp、xinetd服务:
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd
- 注意:确保
/var/lib/tftpboot
目录存在且TFTP服务有权限访问。 - 额外配置:你可能需要在
/etc/xinetd.d/tftp
文件中设置更严格的访问控制(如限制IP范围)或调整日志记录级别。
2. 安装并启用 DHCP 服务
- 安装dhcp并准备进行配置:
yum -y install dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
- 修改DHCP服务的配置文件:
vim /etc/dhcp/dhcpd.conf
ddns-update-style none; #禁用 DNS 动态更新
next-server 192.168.80.10; #指定 TFTP 服务器的地址
filename "pxelinux.0"; #指定 PXE 引导程序的文件名
subnet 192.168.80.0 netmask 255.255.255.0 { #声明要分配的网段地址
range 192.168.80.100 192.168.80.200; #设置地址池
option routers 192.168.80.10; #默认网关地址指向TFTP服务器的IP地址
}
- 启用DHCP服务:
systemctl start dhcpd
systemctl enable dhcpd
- 子网配置:确保子网配置与你的网络环境相匹配。
- 地址池:确保地址池中的IP地址不会被网络中的其他设备占用。
- 安全:考虑设置DHCP选项来防止IP地址冲突或未经授权的DHCP服务器。
3. 准备 Linux 内核、初始化镜像文件
#已事先把光盘挂载到/mnt目录中
cd /mnt/images/pxeboot
#复制 Linux系统的内核文件 到TFTP根目录下
cp vmlinuz /var/lib/tftpboot/
#复制初始化镜像文件(linux引导加载模块)到TFTP根目录下
cp initrd.img /var/lib/tftpboot/
- 确保版本匹配:从光盘或仓库中复制的内核和initrd.img文件应与你要安装的CentOS版本完全匹配。
- 文件完整性:验证文件是否在传输过程中未损坏。
4. 准备 PXE 引导程序
- 安装syslinux:
yum -y install syslinux#PXE引导程序由软件包 syslinux 提供
- 复制 PXE引导程序 到TFTP根目录下:
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
- 安装syslinux:确保syslinux的版本与你的系统兼容。
- 路径确认:确认
pxelinux.0
文件的路径是否正确,并且文件已成功复制到TFTP根目录。
5. 安装FTP服务,准备CentOS 7 安装源
- 下载FTP服务:
yum -y install vsftpd
- CentOS 7 安装源:
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7/
- 启用FTP服务:
systemctl start vsftpd
systemctl enable vsftpd
- 目录权限:确保
/var/ftp/centos7
目录的权限设置正确,以便TFTP服务器能够访问。 - SELinux:如果你的系统启用了SELinux,请确保FTP服务不受SELinux策略的限制。
6. 配置启动菜单文件
默认的启动菜单文件在TFTP根目录的 pxelinux.cfg
子目录下,文件名为default mkdir /var/lib/tftpboot/pxelinux.cfg
修改配置文件:
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto #指定默认入口名称
prompt 1 #设置是否等待用户选择,“1”表示等待用户控制
label auto#图形安装(默认)引导入口,label 用来定义启动项
kernel vmlinuz #kernel 和 append用来定义引导参数
append initrd=initrd.img method=ftp://192.168.80.10/centos7
label linux text#文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.80.10/centos7
label linux rescue #救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.80.10/centos7
- append 参数:确保
method=ftp://192.168.80.10/centos7
路径正确无误,并且FTP服务已正确配置以允许匿名访问。 - 其他参数:根据需要添加其他启动参数,如语言选择、键盘布局等。
7. 关闭防火墙,验证 PXE 网络安装
systemctl stop firewalld.service
setenforce 0
- 防火墙和安全组:如果你的服务器位于云环境中,确保安全组或防火墙规则允许DHCP、TFTP和FTP流量。
- SELinux:如果SELinux处于强制模式(
enforcing
),请考虑将其设置为宽容模式(permissive
)以进行故障排除。 - 虚拟机配置:确保虚拟机的网络适配器设置为“桥接模式”或“NAT模式”,并且能够访问DHCP服务器提供的IP地址。
额外建议
- 文档记录:详细记录每一步的操作和配置,以便将来参考或故障排查。
- 备份:在进行任何重大更改之前,备份关键数据和配置文件。
- 测试:在正式部署之前,在测试环境中彻底测试PXE服务器的功能。
- 监控和日志:启用并配置适当的监控和日志记录,以便跟踪PXE服务器的性能和任何潜在问题。
实现Kickstart无人值守安装
1. 准备安装应答文件
(1)安装system-config-kickstart工具
sudo yum install -y system-config-kickstart
(2)打开“Kickstart 配置程序”窗口
- 通过桌面菜单:“应用程序” --> “系统工具” --> “Kickstart” 打开
- 或执行命令:
system-config-kickstart
(3)配置kickstart选项
-
基本配置:
- 默认语言:中文(简体)
- 时区:Asia/Shanghai
- 设置root密码
- 高级配置中勾选“安装后重启”
-
安装方法:
- 选择FTP
- FTP服务器:ftp://192.168.80.10
- FTP目录:centos7
-
引导装载程序选项:
- 安装类型:安装新引导装载程序
- 安装选项:在主引导记录(MBR)中安装引导装载程序
-
分区信息:
- 主引导记录:清除主引导记录
- 分区:删除所有现存分区
- 磁盘标签:初始化磁盘标签
- 布局:添加分区
- /boot:xfs,固定大小:500M
- swap:固定大小:4096M
- /home:xfs,固定大小:4096M
- /:xfs,使用磁盘上全部未使用空间
-
网络配置:
- 添加网络设备“ens33”
- 网络类型设为“DHCP”
-
防火墙配置:
- 禁用SELinux
- 禁用防火墙
-
安装后脚本:
- 勾选“使用解释程序”:/bin/bash
- 脚本内容:
rm -rf /etc/yum.repos.d/* echo '[local] name=local baseurl=ftp://192.168.80.10/centos7 enabled=1 gpgcheck=0' > /etc/yum.repos.d/local.repo
(4)保存自动应答文件
- 选择“文件” --> “保存”,保存到
/root/ks.cfg
- 复制文件到FTP目录:
cp /root/ks.cfg /var/ftp/ks.cfg
(5)配置需要安装的软件包
- 编辑
ks.cfg
文件,添加软件包安装部分:%packages @^minimal %end
(6)编辑引导菜单文件 default
- 编辑
/var/lib/tftpboot/pxelinux.cfg/default
文件:default auto prompt 0 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.80.10/centos7 ks=ftp://192.168.80.10/ks.cfg
2. 验证无人值守安装
- 当客户机通过PXE方式引导时,它将自动下载
ks.cfg
应答配置文件,并根据其中的设置安装CentOS 7系统。 - 安装完成后,可以通过登录系统并检查
/etc/yum.repos.d/local.repo
文件来验证安装是否成功:cat /etc/yum.repos.d/local.repo
确保您的FTP服务器和TFTP服务器都已正确配置并可以访问,以便客户机能够下载必要的文件和配置文件。此外,确保网络设置(如DHCP服务器)也配置正确,以便客户机能够获取IP地址和其他网络配置信息。