PXE 的定义
PXE (Preboot Execute Environment) 是一种引导方式,而非安装方式。它工作在 Client/Server 网络模式下,允许工作站通过网络从远程服务器下载操作系统映像并启动。要使用 PXE 安装系统,计算机需配备支持 PXE 的网卡,其 ROM 中包含 PXE Client。当计算机启动时,BIOS 加载 PXE Client,PXE Client 通过网络从远端服务器下载文件并在本地运行。
PXE 协议分为 client 和 server 端,运行时需要配置 DHCP 和 TFTP 服务器。DHCP 服务器为 PXE Client(待安装系统的主机)分配 IP 地址,并在配置时需启用相应的 PXE 设置。PXE Client 通过内置的 TFTP Client,从 TFTP 服务器下载启动所需的文件。
PXE 使用所需条件
- 客户端的网卡必须要支持 PXE 功能,并且开机选择从网卡启动,进入 PXE 程序。
- PXE 服务器必须要提供至少含有 DHCP 以及 TFTP 的服务。
- DHCP 服务提供客户端网络,并且告知 TFTP 所在的位置。
- FTP 提供客户端 boot loader 及 kernel file 下载路径。
PXE 工作流程图
Kickstart 的定义
- Kickstart 是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为 ks.cfg 的文件。如果在安装过程中(不只局限于生成 Kickstart 安装文件的机器)出现要填写参数的情况,安装程序首先会去查找 Kickstart 生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果 Kickstart 文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取 ks.cfg 文件,然后就去忙自己的事情。等安装完毕,安装程序会根据 ks.cfg 中的设置重启系统,并结束安装。
- 目的是为了 减少系统安装的过程中的人机交互,提高安装效率
Kickstart 工作流程图
部署环境
- 客户端可以是裸机,客户端和服务器,必须处于同一 广播域
- 客户端的网卡,必须拥有 PXE ROM (preboot execution Enviroment)芯片,远程引导技术。
- 客户端的 BIOS 开启网络启动功能,并将网络引导作为首选启动项。
使用一台服务器搭建,实现全自动化部署
dhcp + tftp + http + kickstart
系统的安装方式可以选择 HTTP、FTP、 NFS,这里介绍 HTTP 方式的安装
配置网卡
DHCP 网口需要配置静态 IP,以下示例为 CentOS 7 基础配置。
1 2 3 4 5 6 7 8
| TYPE=Ethernet BOOTPROTO=static NAME=ens192 DEVICE=ens192 ONBOOT=yes IPADDR=192.168.1.11 # 根据实际情况配置(此地址将作为 HTTP、TFTP服务器地址) GATEWAY=192.168.1.254 # 根据实际情况配置 NETMASK=255.255.255.0
|
关闭防火墙以及 SELinux
1 2 3 4 5 6 7
| # 停止防火墙服务 systemctl stop firewalld # 禁止防火墙自启动 systemctl disable firewalld # 禁用 SELinux setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config
|
安装配置 DHCP 服务
1 2 3 4
| # 安装 dhcp 服务 yum install dhcp -y # 编辑 dhcpd.conf 配置文件 vim /etc/dhcp/dhcpd.conf
|
1 2 3 4 5 6 7 8 9
| cat <<EOF >> /etc/dhcp/dhcpd.conf subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; # DHCP 服务为客户端分配的 IP 范围 option subnet-mask 255.255.255.0; # 掩码 option routers 192.168.1.254; # 网关 next-server 192.168.1.11; # 指定 TFTP 服务器的地址 即本机IP filename "pxelinux.0"; # 指定 PXE 引导程序的文件名 } EOF
|
1 2 3
| # 启动 dhcp 服务并设置自启 systemctl restart dhcpd systemctl enable dhcpd
|
安装配置 TFTP 服务
1 2 3 4 5 6 7
| # 安装 tftp 与 xinetd # tftp 安装时是安装 tftp-server 并且它被 xinetd 所管理 yum install tftp-server xinetd -y # 编辑 tftp 服务配置 vim /etc/xinetd.d/tftp # 将 disable 项设置为 no disable = no
|
1 2 3 4 5 6
| # 重启 xinetd 服务并设置自启 systemctl restart xinetd systemctl enable xinetd # 重启 tftp 服务并设置自启 systemctl restart tftp systemctl enable tftp
|
安装 HTTPD 服务
默认服务路径为 /var/www/html
1 2 3
| # 启动 http 服务并设置自启 systemctl restart httpd systemctl enable httpd
|
安装 syslinux 加载器
引导与安装文件准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| # 创建主目录 mkdir /var/www/html/centos7 # 此目录用于挂载镜像文件 mkdir /var/www/html/centos7/iso # 此目录用于存放 kickstart 文件 mkdir /var/www/html/centos7/ks # 此目录用于存放自定义脚本 mkdir /var/www/html/centos7/scripts
#复制 pxelinux.0 到 tftpboot 目录 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
# 将镜像文件挂载至 http 服务下的镜像目录 mount centos7.iso /var/www/html/centos7/iso
# 复制引导内核文件 initrd.img 和 vmlinuz 到 tftp 目录 mkdir /var/lib/tftpboot/centos7 cp /var/www/html/centos7/iso/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7
# 创建 pxelinux.cfg/default 配置文件 mkdir /var/lib/tftpboot/pxelinux.cfg
cat <<EOF >> /var/lib/tftpboot/pxelinux.cfg/default default centos7
label centos7 kernel centos7/vmlinuz append initrd=centos7/initrd.img ks=http://192.168.1.11/centos7/ks/example.cfg EOF
|
修改 ks 文件中的安装文件获取方式
默认值为 cdrom
1 2
| # Use CDROM installation media cdrom
|
需要修改为从 http 服务器获取
1 2
| # Use CDROM installation media url --url=http://192.168.1.11/centos7/iso
|
开始安装
将服务器或物理机的引导选项设置为 PXE 启动即可
自定义脚本执行
待完善···