1. PXE概念
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。在启动过程中,BIOS把PXEClient调入内存中执行,然后由PXEClient向DHCP服务器请求分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
- 服务端 运行DHCP服务,用来分配地址、定位引导程序运行TFTP服务器,提供引导程序下载
-
客户端 【网卡支持PXE协议】 【主板支持网络启动】
1.2 为何要部署 PXE 远程安装服务
在大规模的 Linux 应用环境中,如 Web 群集、分布式计算等,服务器往往并不配备光驱设备,在这种情况下,如何为数十乃至上百台服务器裸机快速安装系统呢?传统的 USB 光驱、移动硬盘等安装方法显然已经难以满足需求。
若要搭建 PXE 网络体系,必须满足以下几个前提条件。
- 客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
- 网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
- 服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可。
1.2.1 部署优点
- 规模化:同时装配多台服务器;
- 自动化:安装系统、配置各种服务;
- 远程实现:不需要光盘、 U 盘等安装介质
2. 搭建PXE远程安装服务器实例
本例的PXE远程服务器集成了CentOS 7 安装源、TFTP服务、DHCP服务器,能够向客户机裸机发送PXE引导程序、Linux内核、启动菜单等数据,以及提供安装文件。
2.1 准备工作:
- 一台Linux系统搭建服务
- 一台Linux系统做PXE测试
2.2.1 安装并启用 TFTP 服务
mount /dev/sr0 /mnt
yum -y install tftp-server xinetd
vim /etc/xinetd.d/tftp #修改TFTP服务的配置文件
设置开机自启tftp、xinetd服务
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd
2.2.2安装并启用 DHCP 服务
yum -y install dhcp
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf #修改DHCP服务的配置文件
设置dhcpd开机自启
systemctl start dhcpd
systemctl enable dhcpd
2.2.3准备 Linux 内核、初始化镜像文件
mount /dev/sr0 /mnt
cd /mnt/images/pxeboot
cp vmlinuz /var/lib/tftpboot/ #复制 Linux系统的内核文件 到TFTP根目录下
cp initrd.img /var/lib/tftpboot/ #复制 初始化镜像文件(linux引导加载模块)到TFTP根目录下
2.2.4准备 Linux 内核、初始化镜像文件
yum -y install syslinux #PXE引导程序由软件包 syslinux 提供
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #复制 PXE引导程序 到TFTP根目录下
2.2.5安装FTP服务,准备CentOS 7 安装源
yum -y install vsftpd
mkdir /var/ftp/centos7
cp -rf /mnt/* /var/ftp/centos7/
2.2.6配置启动菜单文件
默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default
mkdir /var/lib/tftpboot/pxelinux.cfgvim /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.100/centos7label linux text #文本安装引导入口
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.80.100/centos7label linux rescue #救援模式引导入口
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.80.100/centos7
自动化配置
default auto
prompt 0label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.80.100/centos7 ks=ftp://192.168.80.100/ks.cfglabel linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.80.100/centos7 ks=ftp://192.168.80.100/ks.cfg
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.80.100/centos7 ks=ftp://192.168.80.100/ks.cfg
2.2.7关闭防火墙
systemctl stop firewalld.service
setenforce 0
2.2.8验证 PXE 网络安装
搭建好 PXE 远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的服务器或 PC 裸机,一般不需要额外设置;若要为已有系统的主机重装系统,则可能需要修改BIOS 设置,将“Boot First”设为“NETWORK”或“LAN”,然后重启主机;若使用 VMware创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时会报错。
如果服务器配置正确,网络连接、 PXE 支持等都没有问题,则客户机重启后将自动配置 IP 地址,然后从 TFTP 服务器中获取引导程序 pxelinux.0,并根据引导菜单配置提示用户指定启动入口,在提示字串“boot:”后直接按 Enter 键(或执行“auto”命令),将会进入默认的图形安装入口;若执行“linux text”命令,则进入文本安装入口;若执行“linux rescue”命令,则进入救援模式。
直接按 Enter 键确认后将自动通过网络下载安装文件,并进入图形安装程序界面,如下所示。若能够成功到达这一步,说明 PXE 网络安装基本成功。后续安装步骤与使用光盘的正常安装类似,这里不再叙述。
3实现 Kickstart 无人值守安装
通过 PXE 技术远程安装 CentOS 7 系统的方法,安装介质不再受限于光盘、移动硬盘等设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。
在这里通过使用 Kickstart 工具配置安装应答文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。
3.1Kickstart 工作原理
它的工作原理是在安装过程中记录需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,根据此文件的参数自动应答。ks.cfg文件涵盖了安装过程中可能出现的所有需要填写的参数从而实现无人值守自动安装。
- 创建应答文件,预先定义好各种安装设置
- 免去交互设置过程,从而实现全自动安装
- 通过添加%post脚本,完成安装后的各种配置操作
3.2准备安装应答文件
在 CentOS 7 系统中安装 system-config-kickstart 工具之后,即可通过图形化向导工具来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑 CentOS 7 安装后自动创建的应答文件(/root/anaconda-ks.cfg),根据需要适当修订后使用。
3.3配置安装应答参数
通过桌面菜单“应用程序”→“系统工具”→“Kickstart”即可打开“Kickstart 配置程序”窗口。在“Kickstart 配置程序”窗口中,可以针对基本配置、安装方法、引导装载程序选项、分区信息、网络配置等各种安装设置进行指定。
3.4基本配置:
默认语言:Chinese (P.R. of China)—中文(简体)
键盘:U.S English
时区:Asia/Shanghai
Root密码:Abc123
默认密码:Abc123
勾选√:给root密码加密
高级配置:
目标架构:X86、AMD64、或Intel Em64T
勾选√:安装后重启
不勾选:在文本模式中执行安装(默认为图形化模式)
3.5安装方法
安装方法:
勾选√:执行全新安装
安装方法:
勾选√:FTP
FTP服务器:ftp://20.0.0.21
FTP目录:centos7
3.6引导装载程序选项
安装类型:
勾选√:安装新引导装载程序
3.7分区信息
清除主引导记录
在“分区信息”界面中,需规划硬盘分区方案。
3.8网络配置及防火墙配置
3.9安装脚本后
勾选√:使用解释程序:/bin/bash
输入shell脚本
mkdir /etc/yum.repos.d/repo.bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak
echo '[local]
name=local
baseurl=ftp://192.168.80.100/centos7
enabled=1
gpgcheck=0' > /etc/yum.repos.d/local.repo
3.10保存自动应答文件
选择“Kickstart 配置程序”窗口的“文件”→“保存”命令,指定目标文件夹、文件名,将配置好的应答参数保存为文本文件,如/root/ks.cfg。以后若要修改此应答配置,可以在“Kickstart 配置程序”窗口中打开进行调整,或者直接用 VI 等文本编辑工具进行修改
vim /home/roo/ks.cfg
%post --interpreter=/bin/bash
mkdir /etc/yum.repos.d/repo.bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak
echo '[local]
name=local
baseurl=ftp://192.168.80.100/centos7
enabled=1
gpgcheck=0' > /etc/yum.repos.d/local.repo
%end
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
kexec-tools%end
4.实现批量自动装机
4.1启用自动应答文件
有了自动安装的应答文件之后,只要将其放置 PXE 安装服务器的 FTP 目录下,并适当修
改引导菜单,就可以实现基于网络的批量自动装机了。
cp /root/ks.cfg /var/ftp/ks.cfg #将ks.cfg 文件复制到 /var/ftp/下
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.80.100/centos7 ks=ftp://192.168.80.100/ks.cfglabel linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.80.100/centos7 ks=ftp://192.168.80.100/ks.cfg
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.80.100/centos7 ks=ftp://192.168.80.100/ks.cfg
4.2验证无人值守安装
启用自动应答安装之后,当客户机每次以 PXE 方式引导时,将自动下载 ks.cfg 应答配置文件,然后根据其中的设置安装 CentOS 7 系统,而无须手工干预,如下所示,这样就可以同时为多台客户机安装系统了。
实现自动化安装按F2健进入BIOS查看启动顺序,把Network启动放到最上面。
CD-ROM代表光驱启动,Removable代表U盘启动,Hard代表硬盘启动,Network代表网卡启动。
注意:自动化安装完毕后要按F2健进入BIOS查看启动顺序,把Network启动放到最下面,不要放到最上面,不然就会重装系统。
开机可以直接安装服务,不需要创建yum源